public inbox for insight@sourceware.org
 help / color / mirror / Atom feed
* [RFA] gdbtk-cmds.c bug fix and cleanup
@ 2001-04-02 16:29 Martin M. Hunt
  0 siblings, 0 replies; only message in thread
From: Martin M. Hunt @ 2001-04-02 16:29 UTC (permalink / raw)
  To: insight

There is an array overflow in gdb_loadfile() in gdbtk-cmds.c. This patch
fixes that, as well as some general cleanup.

I assume this comes under the obvious fix rule, so I'll go ahead and check
it in.

2001-04-02  Martin M. Hunt  <hunt@redhat.com>

	* generic/gdbtk-cmds.c (gdb_loadfile): Adjust size of text_argv
	array to prevent writing out of range. Remove unused variables.
	Fix formatting.
	(gdb_get_tracepoint_info): Remove unused variable "fname".
	(gdb_load_disassembly): Remove unused variable "widget".
	(gdb_loc): Remove unused variable "sym".
	(gdb_set_bp_addr): Remove unused variable "line".
	(gdb_get_breakpoint_info): Remove unused variable "sym".
	(get_frame_name): Remove unused variable "name".

Index: gdbtk/generic/gdbtk-cmds.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbtk/generic/gdbtk-cmds.c,v
retrieving revision 1.25
diff -u -p -r1.25 gdbtk-cmds.c
--- gdbtk-cmds.c	2001/03/13 23:31:14	1.25
+++ gdbtk-cmds.c	2001/04/02 23:23:19
@@ -2189,18 +2189,15 @@ gdb_tracepoint_exists_command (clientDat
 }

 static int
-gdb_get_tracepoint_info (clientData, interp, objc, objv)
-     ClientData clientData;
-     Tcl_Interp *interp;
-     int objc;
-     Tcl_Obj *CONST objv[];
+gdb_get_tracepoint_info (ClientData clientData, Tcl_Interp *interp,
+			 int objc, Tcl_Obj *CONST objv[])
 {
   struct symtab_and_line sal;
   int tpnum;
   struct tracepoint *tp;
   struct action_line *al;
   Tcl_Obj *action_list;
-  char *filename, *funcname, *fname;
+  char *filename, *funcname;

   if (objc != 2)
     {
@@ -2463,16 +2460,12 @@ gdb_disassemble (clientData, interp, obj
  */

 static int
-gdb_load_disassembly (clientData, interp, objc, objv)
-     ClientData clientData;
-     Tcl_Interp *interp;
-     int objc;
-     Tcl_Obj *CONST objv[];
+gdb_load_disassembly (ClientData clientData, Tcl_Interp *interp,
+		      int objc, Tcl_Obj *CONST objv[])
 {
   CORE_ADDR low, high;
   struct disassembly_client_data client_data;
   int mixed_source_and_assembly, ret_val, i;
-  char *widget;
   char *arg_ptr;
   char *map_name;

@@ -3167,15 +3160,10 @@ compare_lines (mle1p, mle2p)
  */

 static int
-gdb_loc (clientData, interp, objc, objv)
-     ClientData clientData;
-     Tcl_Interp *interp;
-     int objc;
-     Tcl_Obj *CONST objv[];
+gdb_loc (ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
 {
   char *filename;
   struct symtab_and_line sal;
-  struct symbol *sym;
   char *fname;
   CORE_ADDR pc;

@@ -3467,11 +3455,8 @@ gdb_get_mem (clientData, interp, objc, o
  * Additional memory will be allocated if needed. */
 #define LTABLE_SIZE 20000
 static int
-gdb_loadfile (clientData, interp, objc, objv)
-  ClientData clientData;
-  Tcl_Interp *interp;
-  int objc;
-  Tcl_Obj *CONST objv[];
+gdb_loadfile (ClientData clientData, Tcl_Interp *interp, int objc,
+	      Tcl_Obj *CONST objv[])
 {
   char *file, *widget;
   int linenumbers, ln, lnum, ltable_size;
@@ -3482,8 +3467,7 @@ gdb_loadfile (clientData, interp, objc,
   long mtime = 0;
   struct stat st;
   char line[10000], line_num_buf[18];
-  int prefix_len_1, prefix_len_2, cur_prefix_len, widget_len;
-  char *text_argv[8];
+  char *text_argv[9];
   Tcl_CmdInfo text_cmd;


@@ -3604,25 +3588,24 @@ gdb_loadfile (clientData, interp, objc,

       while (fgets (line + 1, 9980, fp))
         {
-	  char *p;
-
 	  /* Look for DOS style \r\n endings, and if found,
 	   * strip off the \r.  We assume (for the sake of
 	   * speed) that ALL lines in the file have DOS endings,
 	   * or none do.
 	   */

-	  if (found_carriage_return) {
-	    char *p;
-
-	    p = strrchr(line, '\0') - 2;
-	    if (*p == '\r') {
-	      *p = '\n';
-	      *(p + 1) = '\0';
-	    } else {
-	      found_carriage_return = 0;
+	  if (found_carriage_return)
+	    {
+	      char *p;
+
+	      p = strrchr(line, '\0') - 2;
+	      if (*p == '\r') {
+		*p = '\n';
+		*(p + 1) = '\0';
+	      } else {
+		found_carriage_return = 0;
+	      }
 	    }
-	  }

           sprintf (line_num_buf+2, "%d", ln);
           if (ltable[ln >> 3] & (1 << (ln % 8)))
@@ -3831,15 +3814,12 @@ gdb_set_bp (clientData, interp, objc, ob
  */

 static int
-gdb_set_bp_addr (clientData, interp, objc, objv)
-     ClientData clientData;
-     Tcl_Interp *interp;
-     int objc;
-     Tcl_Obj *CONST objv[];
-
+gdb_set_bp_addr (ClientData clientData, Tcl_Interp *interp, int objc,
+		 Tcl_Obj *CONST objv[])
+
 {
   struct symtab_and_line sal;
-  int line, ret, thread = -1;
+  int ret, thread = -1;
   long addr;
   struct breakpoint *b;
   char *filename, *typestr, *buf;
@@ -4030,11 +4010,8 @@ gdb_find_bp_at_addr (clientData, interp,
  */

 static int
-gdb_get_breakpoint_info (clientData, interp, objc, objv)
-     ClientData clientData;
-     Tcl_Interp *interp;
-     int objc;
-     Tcl_Obj *CONST objv[];
+gdb_get_breakpoint_info (ClientData clientData, Tcl_Interp *interp, int objc,
+			 Tcl_Obj *CONST objv[])
 {
   struct symtab_and_line sal;
   struct command_line *cmd;
@@ -4042,7 +4019,7 @@ gdb_get_breakpoint_info (clientData, int
   struct breakpoint *b;
   extern struct breakpoint *breakpoint_chain;
   char *funcname, *filename;
-  struct symbol *sym;
+
   Tcl_Obj *new_obj;

   if (objc != 2)
@@ -4242,10 +4219,7 @@ gdb_stack (clientData, interp, objc, obj
  * This is stolen from print_frame_info in stack.c.
  */
 static void
-get_frame_name (interp, list, fi)
-     Tcl_Interp *interp;
-     Tcl_Obj *list;
-     struct frame_info *fi;
+get_frame_name (Tcl_Interp *interp, Tcl_Obj *list, struct frame_info *fi)
 {
   struct symtab_and_line sal;
   struct symbol *func = NULL;
@@ -4302,8 +4276,6 @@ get_frame_name (interp, list, fi)

   if (sal.symtab)
     {
-      char *name = NULL;
-
       objv[0] = Tcl_NewStringObj (funname, -1);
       Tcl_ListObjAppendElement (interp, list, objv[0]);
     }

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2001-04-02 16:29 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-04-02 16:29 [RFA] gdbtk-cmds.c bug fix and cleanup Martin M. Hunt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).