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

This commit is contained in:
Sam Edwards 2019-05-29 17:27:16 -06:00
parent adaf9ee4aa
commit f21830d2a8

View File

@ -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