rtld: Don't call process_nodelete with NULL object pointer
authorJohn Marino <draco@marino.st>
Sat, 15 Sep 2012 21:36:39 +0000 (23:36 +0200)
committerFran├žois Tigeot <ftigeot@wolfpond.org>
Sat, 15 Sep 2012 21:51:40 +0000 (23:51 +0200)
If object loading and relocation fail, the obj pointer will be NULL when
then process_nodelete function is reached.  A crash will occur if the
function is called with a null pointer, so ensure that it doesn't.

Taken-from: FreeBSD SVN 239470 (20 Aug 2012)

libexec/rtld-elf/rtld.c

index 7cd9fe0..a9feaf1 100644 (file)
@@ -2920,7 +2920,8 @@ dlopen_object(const char *name, int fd, Obj_Entry *refobj, int lo_flags,
             * This has to be done after we have loaded all of the
             * dependencies, so that we do not miss any.
             */
-            process_nodelete(obj);
+            if (obj != NULL)
+               process_nodelete(obj);
        } else {
            /*
             * Bump the reference counts for objects on this DAG.  If