OSDN Git Service

fix invalid-/double-/use-after-free in new dlopen ctor execution
[android-x86/external-musl-libc.git] / ldso / dynlink.c
index 35cacd7..46c5b5f 100644 (file)
@@ -2000,8 +2000,9 @@ void *dlopen(const char *file, int mode)
                        free(p->deps);
                        unmap_library(p);
                        free(p);
-                       free(ctor_queue);
                }
+               free(ctor_queue);
+               ctor_queue = 0;
                if (!orig_tls_tail) libc.tls_head = 0;
                tls_tail = orig_tls_tail;
                if (tls_tail) tls_tail->next = 0;