diff options
author | kib <kib@FreeBSD.org> | 2012-04-05 18:47:54 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2012-04-05 18:47:54 +0000 |
commit | f391af5039d9baae4704602a3d7d1810e2df8d4c (patch) | |
tree | cd61f7221daefa15c165758d583b6853f5f02ed0 /libexec/rtld-elf | |
parent | 5829de48d948e74cb77c117659140afff0ee33b3 (diff) | |
download | FreeBSD-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/rtld-elf')
-rw-r--r-- | libexec/rtld-elf/rtld.c | 3 |
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); |