patches/gdb/6.7.1/225-gdb-6.5-dwarf-stack-overflow.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Fri Jul 25 14:08:03 2008 +0000 (2008-07-25)
changeset 722 37968404e9b9
permissions -rw-r--r--
When dumping the DokuWiki table of samples, don't leave the kernel headers version empty if using a custom headers set., and say so.

/trunk/scripts/showSamples.sh | 6 5 1 0 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
     1 Original patch from gentoo: gentoo/src/patchsets/gdb/6.7.1/80_all_gdb-6.5-dwarf-stack-overflow.patch
     2 -= BEGIN original header =-
     3 http://bugs.gentoo.org/144833
     4 
     5 for gdb/ChangeLog:
     6 2006-08-22  Will Drewry <wad@google.com>
     7 	    Tavis Ormandy <taviso@google.com>
     8 
     9 	* dwarf2read.c (decode_locdesc): Enforce location description stack
    10 	boundaries.
    11 	* dwarfread.c (locval): Likewise.
    12 
    13 -= END original header =-
    14 diff -durN gdb-6.7.1.orig/gdb/dwarf2read.c gdb-6.7.1/gdb/dwarf2read.c
    15 --- gdb-6.7.1.orig/gdb/dwarf2read.c	2007-09-05 02:51:48.000000000 +0200
    16 +++ gdb-6.7.1/gdb/dwarf2read.c	2008-06-17 23:27:46.000000000 +0200
    17 @@ -9061,8 +9061,7 @@
    18     callers will only want a very basic result and this can become a
    19     complaint.
    20  
    21 -   Note that stack[0] is unused except as a default error return.
    22 -   Note that stack overflow is not yet handled.  */
    23 +   Note that stack[0] is unused except as a default error return. */
    24  
    25  static CORE_ADDR
    26  decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
    27 @@ -9079,7 +9078,7 @@
    28  
    29    i = 0;
    30    stacki = 0;
    31 -  stack[stacki] = 0;
    32 +  stack[++stacki] = 0;
    33  
    34    while (i < size)
    35      {
    36 @@ -9261,6 +9260,16 @@
    37  		     dwarf_stack_op_name (op));
    38  	  return (stack[stacki]);
    39  	}
    40 +      /* Enforce maximum stack depth of size-1 to avoid ++stacki writing
    41 +         outside of the allocated space. Also enforce minimum > 0.
    42 +         -- wad@google.com 14 Aug 2006 */
    43 +      if (stacki >= sizeof (stack) / sizeof (*stack) - 1)
    44 +	internal_error (__FILE__, __LINE__,
    45 +	                _("location description stack too deep: %d"),
    46 +	                stacki);
    47 +      if (stacki <= 0)
    48 +	internal_error (__FILE__, __LINE__,
    49 +	                _("location description stack too shallow"));
    50      }
    51    return (stack[stacki]);
    52  }