]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - gdb/frame-base.c
PR24435, buffer overflow reading dynamic entries
[thirdparty/binutils-gdb.git] / gdb / frame-base.c
index 501b2aa0667ca7b81758a13967339d0ffa4e5d65..47897fc653dfdfc2cbc43fffef726818ffe7e0e4 100644 (file)
@@ -1,6 +1,6 @@
 /* Definitions for frame address handler, for GDB, the GNU debugger.
 
-   Copyright (C) 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc.
+   Copyright (C) 2003-2019 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -72,6 +72,7 @@ frame_base_init (struct obstack *obstack)
 {
   struct frame_base_table *table
     = OBSTACK_ZALLOC (obstack, struct frame_base_table);
+
   table->tail = &table->head;
   table->default_base = &default_frame_base;
   return table;
@@ -81,8 +82,11 @@ void
 frame_base_append_sniffer (struct gdbarch *gdbarch,
                           frame_base_sniffer_ftype *sniffer)
 {
-  struct frame_base_table *table = gdbarch_data (gdbarch, frame_base_data);
-  (*table->tail) = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct frame_base_table_entry);
+  struct frame_base_table *table
+    = (struct frame_base_table *) gdbarch_data (gdbarch, frame_base_data);
+
+  (*table->tail)
+    = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct frame_base_table_entry);
   (*table->tail)->sniffer = sniffer;
   table->tail = &(*table->tail)->next;
 }
@@ -91,7 +95,9 @@ void
 frame_base_set_default (struct gdbarch *gdbarch,
                        const struct frame_base *default_base)
 {
-  struct frame_base_table *table = gdbarch_data (gdbarch, frame_base_data);
+  struct frame_base_table *table
+    = (struct frame_base_table *) gdbarch_data (gdbarch, frame_base_data);
+
   table->default_base = default_base;
 }
 
@@ -99,12 +105,14 @@ const struct frame_base *
 frame_base_find_by_frame (struct frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
-  struct frame_base_table *table = gdbarch_data (gdbarch, frame_base_data);
+  struct frame_base_table *table
+    = (struct frame_base_table *) gdbarch_data (gdbarch, frame_base_data);
   struct frame_base_table_entry *entry;
 
   for (entry = table->head; entry != NULL; entry = entry->next)
     {
       const struct frame_base *desc = NULL;
+
       desc = entry->sniffer (this_frame);
       if (desc != NULL)
        return desc;
@@ -112,8 +120,6 @@ frame_base_find_by_frame (struct frame_info *this_frame)
   return table->default_base;
 }
 
-extern initialize_file_ftype _initialize_frame_base; /* -Wmissing-prototypes */
-
 void
 _initialize_frame_base (void)
 {