summaryrefslogtreecommitdiffstats
path: root/libexec
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2012-04-05 18:47:54 +0000
committerkib <kib@FreeBSD.org>2012-04-05 18:47:54 +0000
commitf391af5039d9baae4704602a3d7d1810e2df8d4c (patch)
treecd61f7221daefa15c165758d583b6853f5f02ed0 /libexec
parent5829de48d948e74cb77c117659140afff0ee33b3 (diff)
downloadFreeBSD-src-f391af5039d9baae4704602a3d7d1810e2df8d4c.zip
FreeBSD-src-f391af5039d9baae4704602a3d7d1810e2df8d4c.tar.gz
Properly handle absent AT_CANARY aux entry.
Submitted by: Andrey Zonov <andrey zonov org> MFC after: 3 days
Diffstat (limited to 'libexec')
-rw-r--r--libexec/rtld-elf/rtld.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c
index 5f87dd4..f02d276 100644
--- a/libexec/rtld-elf/rtld.c
+++ b/libexec/rtld-elf/rtld.c
@@ -351,7 +351,8 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_proc, Obj_Entry **objp)
main_argc = argc;
main_argv = argv;
- if (aux_info[AT_CANARY]->a_un.a_ptr != NULL) {
+ if (aux_info[AT_CANARY] != NULL &&
+ aux_info[AT_CANARY]->a_un.a_ptr != NULL) {
i = aux_info[AT_CANARYLEN]->a_un.a_val;
if (i > sizeof(__stack_chk_guard))
i = sizeof(__stack_chk_guard);
OpenPOWER on IntegriCloud