in dlopen: don't use null pointer
authorRich Felker <dalias@aerifal.cx>
Mon, 27 Jun 2011 01:36:44 +0000 (21:36 -0400)
committerRich Felker <dalias@aerifal.cx>
Mon, 27 Jun 2011 01:36:44 +0000 (21:36 -0400)
deps can be null if a library has no dependencies (such as libc itself)

src/ldso/dynlink.c

index 305d70e..a23390e 100644 (file)
@@ -514,19 +514,19 @@ void *dlopen(const char *file, int mode)
        /* First load handling */
        if (!p->deps) {
                load_deps(p);
        /* First load handling */
        if (!p->deps) {
                load_deps(p);
-               for (i=0; p->deps[i]; i++)
+               if (p->deps) for (i=0; p->deps[i]; i++)
                        if (!p->deps[i]->global)
                                p->deps[i]->global = -1;
                if (!p->global) p->global = -1;
                reloc_all(p);
                        if (!p->deps[i]->global)
                                p->deps[i]->global = -1;
                if (!p->global) p->global = -1;
                reloc_all(p);
-               for (i=0; p->deps[i]; i++)
+               if (p->deps) for (i=0; p->deps[i]; i++)
                        if (p->deps[i]->global < 0)
                                p->deps[i]->global = 0;
                if (p->global < 0) p->global = 0;
        }
 
        if (mode & RTLD_GLOBAL) {
                        if (p->deps[i]->global < 0)
                                p->deps[i]->global = 0;
                if (p->global < 0) p->global = 0;
        }
 
        if (mode & RTLD_GLOBAL) {
-               for (i=0; p->deps[i]; i++)
+               if (p->deps) for (i=0; p->deps[i]; i++)
                        p->deps[i]->global = 1;
                p->global = 1;
        }
                        p->deps[i]->global = 1;
                p->global = 1;
        }