diff options
Diffstat (limited to 'Lib/crypt.py')
-rw-r--r-- | Lib/crypt.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/Lib/crypt.py b/Lib/crypt.py index 8846602d76..33dbc46bb3 100644 --- a/Lib/crypt.py +++ b/Lib/crypt.py @@ -10,6 +10,7 @@ except ModuleNotFoundError: else: raise ImportError("The required _crypt module was not built as part of CPython") +import errno import string as _string from random import SystemRandom as _SystemRandom from collections import namedtuple as _namedtuple @@ -88,7 +89,14 @@ def _add_method(name, *args, rounds=None): method = _Method(name, *args) globals()['METHOD_' + name] = method salt = mksalt(method, rounds=rounds) - result = crypt('', salt) + result = None + try: + result = crypt('', salt) + except OSError as e: + # Not all libc libraries support all encryption methods. + if e.errno == errno.EINVAL: + return False + raise if result and len(result) == method.total_size: methods.append(method) return True |