aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefano Rivera <stefano@rivera.za.net>2020-10-09 23:47:58 -0700
committerStefano Rivera <stefano@rivera.za.net>2020-10-09 23:47:58 -0700
commit561a10722008ff11486eb312a49e9e109f775115 (patch)
tree4f65b1fc7064dfeb07b7542a23dae3431fb4eb2d /lib_pypy
parentbpo-30058: Fixed buffer overflow in select.kqueue.control(). (diff)
parenttypo (diff)
downloadpypy-561a10722008ff11486eb312a49e9e109f775115.tar.gz
pypy-561a10722008ff11486eb312a49e9e109f775115.tar.bz2
pypy-561a10722008ff11486eb312a49e9e109f775115.zip
merge default into stdlib-2.7.18-3
Diffstat (limited to 'lib_pypy')
-rw-r--r--lib_pypy/crypt/__init__.py16
-rw-r--r--lib_pypy/pypy_tools/build_cffi_imports.py7
2 files changed, 17 insertions, 6 deletions
diff --git a/lib_pypy/crypt/__init__.py b/lib_pypy/crypt/__init__.py
index a5790e83ad..83e516011f 100644
--- a/lib_pypy/crypt/__init__.py
+++ b/lib_pypy/crypt/__init__.py
@@ -4,6 +4,12 @@ CFFI based implementation of the crypt module
import sys
import cffi
+import thread
+_lock = thread.allocate_lock()
+
+try: from __pypy__ import builtinify
+except ImportError: builtinify = lambda f: f
+
ffi = cffi.FFI()
ffi.cdef('char *crypt(char *word, char *salt);')
@@ -14,8 +20,10 @@ except OSError:
raise ImportError('crypt not available')
+@builtinify
def crypt(word, salt):
- res = lib.crypt(word, salt)
- if not res:
- return None
- return ffi.string(res)
+ with _lock:
+ res = lib.crypt(word, salt)
+ if not res:
+ return None
+ return ffi.string(res)
diff --git a/lib_pypy/pypy_tools/build_cffi_imports.py b/lib_pypy/pypy_tools/build_cffi_imports.py
index c7005f6461..12e791d695 100644
--- a/lib_pypy/pypy_tools/build_cffi_imports.py
+++ b/lib_pypy/pypy_tools/build_cffi_imports.py
@@ -130,8 +130,11 @@ def _build_dependency(name, patches=[]):
print('unpacking archive', archive, file=sys.stderr)
_unpack_tarfile(archive, deps_destdir)
- sources = os.path.join(deps_destdir, os.path.basename(archive)[:-7])
-
+ sources = os.path.join(
+ deps_destdir,
+ os.path.basename(archive).rsplit('.', 2)[0],
+ )
+
# apply any patches
if patches:
for patch in patches: