• Luca Boccassi's avatar
    Problem: global random init/deinit breaks existing applications · 8f5fc705
    Luca Boccassi authored
    Solution: restrict it only to the original issue #2632, Tweetnacl on
    *NIX when using /dev/urandom, ie: without the new Linux getrandom()
    syscall.
    
    Existing applications might use atexit to register cleanup functions
    (like CZMQ does), and the current change as-is imposes an ordering
    that did not exist before - the context MUST be created BEFORE
    registering the cleanup with atexit. This is a backward incompatible
    change that is reported to cause aborts in some applications.
    
    Although libsodium's documentation says that its initialisation APIs
    is not thread-safe, nobody has ever reported an issue with it, so
    avoiding the global init/deinit in the libsodium case is the less
    risky option we have.
    
    Tweetnacl users on Windows and on Linux with getrandom (glibc 2.25 and
    Linux kernel 3.17) are not affected by the original issue.
    
    Fixes #2991
    8f5fc705
Name
Last commit
Last update
.github Loading commit data...
RELICENSE Loading commit data...
builds Loading commit data...
doc Loading commit data...
external/unity Loading commit data...
include Loading commit data...
m4 Loading commit data...
packaging Loading commit data...
perf Loading commit data...
src Loading commit data...
tests Loading commit data...
tools Loading commit data...
unittests Loading commit data...
.clang-format Loading commit data...
.gitignore Loading commit data...
.hgeol Loading commit data...
.mailmap Loading commit data...
.travis.yml Loading commit data...
AUTHORS Loading commit data...
CMakeLists.txt Loading commit data...
COPYING Loading commit data...
COPYING.LESSER Loading commit data...
Dockerfile Loading commit data...
Doxygen.cfg Loading commit data...
INSTALL Loading commit data...
Jenkinsfile Loading commit data...
Makefile.am Loading commit data...
NEWS Loading commit data...
README.cygwin.md Loading commit data...
README.doxygen.md Loading commit data...
README.md Loading commit data...
acinclude.m4 Loading commit data...
appveyor.yml Loading commit data...
autogen.sh Loading commit data...
branding.bmp Loading commit data...
ci_build.sh Loading commit data...
ci_deploy.sh Loading commit data...
configure.ac Loading commit data...
installer.ico Loading commit data...
version.sh Loading commit data...