diff options
author | 2002-06-09 04:59:04 +0000 | |
---|---|---|
committer | 2002-06-09 04:59:04 +0000 | |
commit | aa96388dac56a5e45f42dc99eed4a81150bf3e37 (patch) | |
tree | 929559f36ba9458100909449f940f13c646258da | |
parent | This commit commit commit without testing has to STOP. BE CAREFUL. (diff) | |
download | wireguard-openbsd-aa96388dac56a5e45f42dc99eed4a81150bf3e37.tar.xz wireguard-openbsd-aa96388dac56a5e45f42dc99eed4a81150bf3e37.zip |
don't go further on stripped binaries; been in my tree for ever.
-rw-r--r-- | usr.bin/pmdb/aout_syms.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/usr.bin/pmdb/aout_syms.c b/usr.bin/pmdb/aout_syms.c index 1092c6bfadf..aea4b3d5b97 100644 --- a/usr.bin/pmdb/aout_syms.c +++ b/usr.bin/pmdb/aout_syms.c @@ -1,4 +1,4 @@ -/* $OpenBSD: aout_syms.c,v 1.6 2002/03/29 19:32:18 deraadt Exp $ */ +/* $OpenBSD: aout_syms.c,v 1.7 2002/06/09 04:59:04 fgsch Exp $ */ /* * Copyright (c) 2002 Federico Schwindt <fgsch@openbsd.org> * All rights reserved. @@ -24,6 +24,11 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include <sys/param.h> +#include <sys/ptrace.h> +#include <sys/mman.h> +#include <sys/stat.h> + #include <stdio.h> #include <stdlib.h> #include <unistd.h> @@ -31,11 +36,6 @@ #include <string.h> #include <err.h> -#include <sys/param.h> -#include <sys/ptrace.h> -#include <sys/mman.h> - -#include <sys/types.h> #include <a.out.h> #include <link.h> @@ -98,6 +98,7 @@ struct sym_table * aout_open(const char *name) { struct aout_symbol_handle *ash; + struct stat sb; u_int32_t symoff, stroff; struct exec ahdr; @@ -123,6 +124,11 @@ aout_open(const char *name) goto fail; } + /* Don't go further for stripped files. */ + if (fstat(ash->ash_fd, &sb) < 0 || N_SYMOFF(ahdr) == sb.st_size || + N_STROFF(ahdr) == sb.st_size) + goto fail; + symoff = N_SYMOFF(ahdr); ash->ash_symsize = ahdr.a_syms; stroff = N_STROFF(ahdr); |