New submission from Gregory Szorc <[email protected]>:
Commit 54f2898fe7e4ca1f239e96284af3cc5b34d2ae02 (bpo-40645) introduced the
functions HMAC_CTX_new, HMAC_CTX_free, and HMAC_CTX_get_md.
These functions share the same names as HMAC functions provided by
OpenSSL/LibreSSL. If you attempt to statically link the _hashlib extension as a
builtin extension module that is also statically linked against a libcrytpo
that provides these functions, the linker may complain about duplicate symbols:
cpython-3.9> /tools/host/bin/ld:
/tools/deps/lib/libcrypto.a(libcrypto_la-hmac.o): in function `HMAC_CTX_free':
cpython-3.9> hmac.c:(.text+0x7d0): multiple definition of `HMAC_CTX_free';
cpython-3.9>
Modules/_hashopenssl.o:/build/Python-3.9.0/./Modules/_hashopenssl.c:54: first
defined here
cpython-3.9> /tools/host/bin/ld:
/tools/deps/lib/libcrypto.a(libcrypto_la-hmac.o): in function `HMAC_CTX_get_md':
cpython-3.9> hmac.c:(.text+0xa20): multiple definition of `HMAC_CTX_get_md';
Modules/_hashopenssl.o:/build/Python-3.9.0/./Modules/_hashopenssl.c:
63: first defined here
cpython-3.9> /tools/host/bin/ld:
/tools/deps/lib/libcrypto.a(libcrypto_la-hmac.o): in function `HMAC_CTX_new':
cpython-3.9> hmac.c:(.text+0x780): multiple definition of `HMAC_CTX_new';
Modules/_hashopenssl.o:/build/Python-3.9.0/./Modules/_hashopenssl.c:42:
first defined here
cpython-3.9> clang-10: error: linker command failed with exit code 1 (use -v to
see invocation)
cpython-3.9> ln: failed to access 'libpython3.9.so.1.0': No such file or
directory
cpython-3.9> make: *** [libpython3.9.so] Error 1
cpython-3.9> Makefile:656: recipe for target 'libpython3.9.so' failed
This log from a build attempting to statically link against LibreSSL 3.1.4. The
issue does not reproduce against OpenSSL 1.1.1h for some reason.
While statically linking _hashlib as a built-in extension module and statically
linking libcrypto isn't in the default configuration, I believe this use case
should be supported.
Perhaps these 3 functions should be renamed to not conflict with symbols
provided by libcrypto?
----------
components: Extension Modules
messages: 378080
nosy: indygreg
priority: normal
severity: normal
status: open
title: Redefinition of HMAC functions prevents static linking
versions: Python 3.9
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue41949>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com