From e07352b9de08a2ece01c5fed286b816c15af6368 Mon Sep 17 00:00:00 2001 From: Jordan Borean Date: Thu, 23 Aug 2018 16:34:50 +1000 Subject: [PATCH] basic.py: catch ValueError when trying to import hash algorithms (#44551) * basic.py: catch more Exceptions when trying to import md5 hash algorithms --- changelogs/fragments/fips_md5_import.yaml | 2 ++ lib/ansible/module_utils/basic.py | 10 ++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/fips_md5_import.yaml diff --git a/changelogs/fragments/fips_md5_import.yaml b/changelogs/fragments/fips_md5_import.yaml new file mode 100644 index 00000000000..5bde55ab9a3 --- /dev/null +++ b/changelogs/fragments/fips_md5_import.yaml @@ -0,0 +1,2 @@ +bugfixes: +- basic.py - catch ValueError in case a FIPS enabled platform raises this exception - https://github.com/ansible/ansible/issues/44447 diff --git a/lib/ansible/module_utils/basic.py b/lib/ansible/module_utils/basic.py index b87f7e587d6..85468515c3f 100644 --- a/lib/ansible/module_utils/basic.py +++ b/lib/ansible/module_utils/basic.py @@ -132,13 +132,19 @@ try: algorithms = ('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512') for algorithm in algorithms: AVAILABLE_HASH_ALGORITHMS[algorithm] = getattr(hashlib, algorithm) -except ImportError: + + # we may have been able to import md5 but it could still not be available + try: + hashlib.md5() + except ValueError: + algorithms.pop('md5', None) +except Exception: import sha AVAILABLE_HASH_ALGORITHMS = {'sha1': sha.sha} try: import md5 AVAILABLE_HASH_ALGORITHMS['md5'] = md5.md5 - except ImportError: + except Exception: pass from ansible.module_utils.common._collections_compat import (