summaryrefslogtreecommitdiffstats
path: root/libexec
diff options
context:
space:
mode:
authorkan <kan@FreeBSD.org>2012-08-03 17:04:41 +0000
committerkan <kan@FreeBSD.org>2012-08-03 17:04:41 +0000
commitba82fcb2d8b36541a52ef6f39347ac5c27804d21 (patch)
tree8e3de515e31fb0ea961da3397af074c22770c696 /libexec
parent8916b8f9033faa7d822c84a2bdd638979f11fab1 (diff)
downloadFreeBSD-src-ba82fcb2d8b36541a52ef6f39347ac5c27804d21.zip
FreeBSD-src-ba82fcb2d8b36541a52ef6f39347ac5c27804d21.tar.gz
Parse notes only after object structure had been allocated.
Reported by: kargl Reviewed by: kib (sans whitespace)
Diffstat (limited to 'libexec')
-rw-r--r--libexec/rtld-elf/map_object.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libexec/rtld-elf/map_object.c b/libexec/rtld-elf/map_object.c
index 509a64f..79e4132 100644
--- a/libexec/rtld-elf/map_object.c
+++ b/libexec/rtld-elf/map_object.c
@@ -153,7 +153,6 @@ map_object(int fd, const char *path, const struct stat *sb)
break;
note_start = (Elf_Addr)(char *)hdr + phdr->p_offset;
note_end = note_start + phdr->p_filesz;
- digest_notes(obj, note_start, note_end);
break;
}
@@ -291,7 +290,8 @@ map_object(int fd, const char *path, const struct stat *sb)
obj->stack_flags = stack_flags;
obj->relro_page = obj->relocbase + trunc_page(relro_page);
obj->relro_size = round_page(relro_size);
-
+ if (note_start < note_end)
+ digest_notes(obj, note_start, note_end);
munmap(hdr, PAGE_SIZE);
return (obj);
OpenPOWER on IntegriCloud