• Guillem Jover's avatar
    Move setproctitle() automatic initialization to its own library · c5b95902
    Guillem Jover authored
    The automatic initialization cannot be part of the main shared library,
    because there is no thread-safe way to change the environ global
    variable. This is not a problem if the initializaion happens just at
    program load time, but becomes one if the shared library is directly or
    indirectly dlopen()ed during the execution of the program, which could
    have either kept references to the old environ or could change it in
    some other thread. This has been observed for example on systems using
    Samba NSS modules.
    
    To avoid any other possible fallout, the constructor is split into a
    new static library that needs to be linked explicitly into programs
    using setproctitle(). As an additional safety measure the pkg-config
    linker flags will mark the program as not allowing to be dlopen()ed
    so that we avoid the problem described above.
    Reported-by: Jan Alexander Steffens's avatarJan Alexander Steffens (heftig) <jan.steffens@gmail.com>
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=66679
    c5b95902
setproctitle_ctor.c 2.63 KB