summaryrefslogtreecommitdiff
path: root/dev-python/passlib/files/passlib-1.7.2-py39.patch
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: