]> git.pld-linux.org Git - packages/gdb.git/blob - gdb-6.5-dwarf-stack-overflow.patch
- updated (performance fixes).
[packages/gdb.git] / gdb-6.5-dwarf-stack-overflow.patch
1 for gdb/ChangeLog:
2 2006-08-22  Will Drewry <wad@google.com>
3             Tavis Ormandy <taviso@google.com>
4
5         * dwarf2read.c (decode_locdesc): Enforce location description stack
6         boundaries.
7         * dwarfread.c (locval): Likewise.
8
9 2007-10-15  Jan Kratochvil  <jan.kratochvil@redhat.com>
10
11         Port to GDB-6.7.
12
13 Index: gdb-7.1.90.20100711/gdb/dwarf2read.c
14 ===================================================================
15 --- gdb-7.1.90.20100711.orig/gdb/dwarf2read.c   2010-07-12 10:43:53.000000000 +0200
16 +++ gdb-7.1.90.20100711/gdb/dwarf2read.c        2010-07-12 10:49:32.000000000 +0200
17 @@ -11382,8 +11382,7 @@ read_signatured_type (struct objfile *ob
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 @@ -11399,7 +11398,7 @@ decode_locdesc (struct dwarf_block *blk,
28  
29    i = 0;
30    stacki = 0;
31 -  stack[stacki] = 0;
32 +  stack[++stacki] = 0;
33  
34    while (i < size)
35      {
36 @@ -11581,6 +11580,16 @@ decode_locdesc (struct dwarf_block *blk,
37                      dwarf_stack_op_name (op, 1));
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  }
This page took 0.029165 seconds and 3 git commands to generate.