=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/pmdb/Attic/aout_syms.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- src/usr.bin/pmdb/Attic/aout_syms.c 2002/03/29 19:32:18 1.6 +++ src/usr.bin/pmdb/Attic/aout_syms.c 2002/06/09 04:59:04 1.7 @@ -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 * All rights reserved. @@ -24,6 +24,11 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include +#include +#include +#include + #include #include #include @@ -31,11 +36,6 @@ #include #include -#include -#include -#include - -#include #include #include @@ -98,6 +98,7 @@ aout_open(const char *name) { struct aout_symbol_handle *ash; + struct stat sb; u_int32_t symoff, stroff; struct exec ahdr; @@ -122,6 +123,11 @@ warnx("Bad magic."); 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;