# HG changeset patch # User james # Date 1112064770 0 # Node ID d8df26f08486246a2219d965d26bf4fcbfc709a0 # Parent 6bc1f2c5c30e0b5448b91923b1e7cde616da582c [xemacs-hg @ 2005-03-29 02:52:42 by james] Fix off-by-one error possibly causing backtrace overflow. See xemacs-patches message with ID . diff -r 6bc1f2c5c30e -r d8df26f08486 src/ChangeLog --- a/src/ChangeLog Mon Mar 28 21:51:30 2005 +0000 +++ b/src/ChangeLog Tue Mar 29 02:52:50 2005 +0000 @@ -1,3 +1,10 @@ +2005-03-26 Jerry James + + * dumper.c (BACKTRACE_MAX): New constant defining length of static + backtrace array. + * dumper.c (pdump_bump_depth): Use it, and avoid buffer overflow + by fixing comparison. + 2005-02-24 Andrey Slusar * unexelf.c: define `Elfw(type)' for FreeBSD alpha and amd64. diff -r 6bc1f2c5c30e -r d8df26f08486 src/dumper.c --- a/src/dumper.c Mon Mar 28 21:51:30 2005 +0000 +++ b/src/dumper.c Tue Mar 29 02:52:50 2005 +0000 @@ -520,12 +520,14 @@ return 0; } +#define BACKTRACE_MAX 65536 + static struct { struct lrecord_header *obj; int position; int offset; -} backtrace[65536]; +} backtrace[BACKTRACE_MAX]; static int pdump_depth; @@ -568,7 +570,7 @@ pdump_bump_depth (void) { int me = pdump_depth++; - if (me > 65536) + if (me >= BACKTRACE_MAX) { stderr_out ("Backtrace overflow, loop ?\n"); ABORT ();