diff options
author | 2012-08-21 14:44:24 +0000 | |
---|---|---|
committer | 2012-08-21 14:44:24 +0000 | |
commit | c6a839db71b7b2ac521e0c4d90b5580d0eb91368 (patch) | |
tree | 5f2b5547ee4eda0ed844e1a76da1f6d0a2a2e80a | |
parent | remove -DSM_OMIT_BOGUS_WARNINGS which was intended to remove spurious (diff) | |
download | wireguard-openbsd-c6a839db71b7b2ac521e0c4d90b5580d0eb91368.tar.xz wireguard-openbsd-c6a839db71b7b2ac521e0c4d90b5580d0eb91368.zip |
don't read past the end of an array when dumping the stack.
spotted by clang
ok deraadt@
-rw-r--r-- | sys/arch/sparc/sparc/machdep.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/sys/arch/sparc/sparc/machdep.c b/sys/arch/sparc/sparc/machdep.c index 718ef15df43..338ce17d864 100644 --- a/sys/arch/sparc/sparc/machdep.c +++ b/sys/arch/sparc/sparc/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.138 2012/03/23 15:51:26 guenther Exp $ */ +/* $OpenBSD: machdep.c,v 1.139 2012/08/21 14:44:24 jsg Exp $ */ /* $NetBSD: machdep.c,v 1.85 1997/09/12 08:55:02 pk Exp $ */ /* @@ -790,10 +790,9 @@ stackdump() printf("Frame pointer is at %p\n", fp); printf("Call traceback:\n"); while (fp && ((u_long)fp >> PGSHIFT) == ((u_long)sfp >> PGSHIFT)) { - printf(" pc = 0x%x args = (0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x) fp = %p\n", + printf(" pc = 0x%x args = (0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x) fp = %p\n", fp->fr_pc, fp->fr_arg[0], fp->fr_arg[1], fp->fr_arg[2], - fp->fr_arg[3], fp->fr_arg[4], fp->fr_arg[5], fp->fr_arg[6], - fp->fr_fp); + fp->fr_arg[3], fp->fr_arg[4], fp->fr_arg[5], fp->fr_fp); fp = fp->fr_fp; } } @@ -874,9 +873,9 @@ oldmon_w_trace(va) printf("stop at 0x%lx\n", stop); fp = (struct frame *) va; while (round_page((u_long) fp) == stop) { - printf(" 0x%x(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x) fp %p\n", fp->fr_pc, + printf(" 0x%x(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x) fp %p\n", fp->fr_pc, fp->fr_arg[0], fp->fr_arg[1], fp->fr_arg[2], fp->fr_arg[3], - fp->fr_arg[4], fp->fr_arg[5], fp->fr_arg[6], fp->fr_fp); + fp->fr_arg[4], fp->fr_arg[5], fp->fr_fp); fp = fp->fr_fp; if (fp == NULL) break; |