blob: c5dbc208a88bbbae9dbdb44a04102655df34d5c6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
diff --git a/passlib/utils/__init__.py b/passlib/utils/__init__.py
index 69b55e5..d18ec50 100644
--- a/passlib/utils/__init__.py
+++ b/passlib/utils/__init__.py
@@ -807,7 +807,13 @@ else:
if isinstance(hash, bytes):
hash = hash.decode("ascii")
- result = _crypt(secret, hash)
+ try:
+ result = _crypt(secret, hash)
+ except OSError:
+ # new in py39 -- per https://bugs.python.org/issue39289,
+ # crypt() now throws OSError for various things, mainly unknown hash formats
+ # translating that to None for now (may revise safe_crypt behavior in future)
+ return None
if PYPY and isinstance(result, bytes):
result = result.decode("utf-8")
if not result or result[0:1] in _invalid_prefixes:
|