summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfgsch <fgsch@openbsd.org>2002-06-09 04:59:04 +0000
committerfgsch <fgsch@openbsd.org>2002-06-09 04:59:04 +0000
commitaa96388dac56a5e45f42dc99eed4a81150bf3e37 (patch)
tree929559f36ba9458100909449f940f13c646258da
parentThis commit commit commit without testing has to STOP. BE CAREFUL. (diff)
downloadwireguard-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.c18
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);