Преглед изворни кода

dtoolutil: Fix UB when musl's dlinfo(RTLD_DI_LINKMAP) fails

Sam Edwards пре 6 година
родитељ
комит
83c10d1a0b
1 измењених фајлова са 9 додато и 9 уклоњено
  1. 9 9
      dtool/src/dtoolutil/executionEnvironment.cxx

+ 9 - 9
dtool/src/dtoolutil/executionEnvironment.cxx

@@ -610,16 +610,16 @@ read_args() {
 #else
     void *self = dlopen(NULL, RTLD_NOW | RTLD_NOLOAD);
 #endif
-    dlinfo(self, RTLD_DI_LINKMAP, &map);
-
-    while (map != nullptr) {
-      const char *tail = strrchr(map->l_name, '/');
-      const char *head = strchr(map->l_name, '/');
-      if (tail && head && (strcmp(tail, "/libp3dtool.so." PANDA_ABI_VERSION_STR) == 0
-                        || strcmp(tail, "/libp3dtool.so") == 0)) {
-        _dtool_name = head;
+    if (dlinfo(self, RTLD_DI_LINKMAP, &map)) {
+      while (map != nullptr) {
+        const char *tail = strrchr(map->l_name, '/');
+        const char *head = strchr(map->l_name, '/');
+        if (tail && head && (strcmp(tail, "/libp3dtool.so." PANDA_ABI_VERSION_STR) == 0
+                          || strcmp(tail, "/libp3dtool.so") == 0)) {
+          _dtool_name = head;
+        }
+        map = map->l_next;
       }
-      map = map->l_next;
     }
   }
 #endif