discard dso descriptors after performing relocations
eventually (once dlopen exists) this behavior will be conditional on dlopen/dlsym not being reachable.
This commit is contained in:
@@ -322,6 +322,16 @@ static void reloc_all(struct dso *p)
|
||||
}
|
||||
}
|
||||
|
||||
static void free_all(struct dso *p)
|
||||
{
|
||||
struct dso *n;
|
||||
while (p) {
|
||||
n = p->next;
|
||||
if (p->map) free(p);
|
||||
p = n;
|
||||
}
|
||||
}
|
||||
|
||||
void *__dynlink(int argc, char **argv, size_t *got)
|
||||
{
|
||||
size_t *auxv, aux[AUX_CNT] = {0};
|
||||
@@ -387,6 +397,8 @@ void *__dynlink(int argc, char **argv, size_t *got)
|
||||
|
||||
reloc_all(head);
|
||||
|
||||
free_all(head);
|
||||
|
||||
errno = 0;
|
||||
return (void *)aux[AT_ENTRY];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user