c++cunixdlclose

Passing null to dlclose()


Is it safe to pass null (0, NULL, nullptr, ..) to dlclose()?

I could not find anything regarding this in the manual.


Solution

  • If it is not documented, it is most likely not (or at "best" undefined). Actually a simple test could verify that for your platform:

    Compiling this

    #include <dlfcn.h>
    int main()
    {
       dlclose(0);
    }
    

    Already yields the following compiler warning (gcc):

    test.c: In function ‘main’:
    test.c:5:2: warning: null argument where non-null required (argument 1) [-Wnonnull]
        5 |  dlclose(0);
          |  ^~~~~~~
    /usr/bin/ld: /tmp/ccYF9oqz.o: in function `main':
    

    An running it, crashes as expected with a segmentation fault.

    Why you want to do or need to know this in the first place is the question. It should be trivial to do a null-check before calling dlclose or provide a wrapper that does it, if otherwise inconvenient.