-Wwrite-strings: Constify shell_escape and plug make_command leak
authorPedro Alves <palves@redhat.com>
Wed, 5 Apr 2017 18:21:34 +0000 (19:21 +0100)
committerPedro Alves <palves@redhat.com>
Wed, 5 Apr 2017 18:21:34 +0000 (19:21 +0100)
gdb/ChangeLog:
2017-04-05  Pedro Alves  <palves@redhat.com>

* cli/cli-cmds.c (shell_escape): Constify 'arg' parameter.
(shell_command): New function.
(make_command): Use std::string.
(init_cli_cmds): Register shell_command instead of shell_escape.

gdb/ChangeLog
gdb/cli/cli-cmds.c

index 925cb947c2f82e457c57c2c4ddbc1246a8b60ce6..00f8d1c87bd4b6c0d22181037fc41eaa3d51f744 100644 (file)
@@ -1,3 +1,10 @@
+2017-04-05  Pedro Alves         <palves@redhat.com>
+
+       * cli/cli-cmds.c (shell_escape): Constify 'arg' parameter.
+       (shell_command): New function.
+       (make_command): Use std::string.
+       (init_cli_cmds): Register shell_command instead of shell_escape.
+
 2017-04-05  Pedro Alves  <palves@redhat.com>
 
        * breakpoint.c (dprintf_function, dprintf_channel): Don't initialize.
index b5c9d0ba78c6d531f9bc35e8f7ce33242f1f405e..f7ffb6dfe56bf46bc884907734692a1d005ead63 100644 (file)
@@ -82,7 +82,7 @@ static void show_user (char *, int);
 
 static void make_command (char *, int);
 
-static void shell_escape (char *, int);
+static void shell_escape (const char *, int);
 
 static void edit_command (char *, int);
 
@@ -735,7 +735,7 @@ echo_command (char *text, int from_tty)
 }
 
 static void
-shell_escape (char *arg, int from_tty)
+shell_escape (const char *arg, int from_tty)
 {
 #if defined(CANT_FORK) || \
       (!defined(HAVE_WORKING_VFORK) && !defined(HAVE_WORKING_FORK))
@@ -795,6 +795,14 @@ shell_escape (char *arg, int from_tty)
 #endif /* Can fork.  */
 }
 
+/* Implementation of the "shell" command.  */
+
+static void
+shell_command (char *arg, int from_tty)
+{
+  shell_escape (arg, from_tty);
+}
+
 static void
 edit_command (char *arg, int from_tty)
 {
@@ -1306,18 +1314,14 @@ disassemble_command (char *arg, int from_tty)
 static void
 make_command (char *arg, int from_tty)
 {
-  char *p;
-
   if (arg == 0)
-    p = "make";
+    shell_escape ("make", from_tty);
   else
     {
-      p = (char *) xmalloc (sizeof ("make ") + strlen (arg));
-      strcpy (p, "make ");
-      strcpy (p + sizeof ("make ") - 1, arg);
-    }
+      std::string cmd = std::string ("make ") + arg;
 
-  shell_escape (p, from_tty);
+      shell_escape (cmd.c_str (), from_tty);
+    }
 }
 
 static void
@@ -1881,7 +1885,7 @@ from the target."),
                  _("Generic command for showing gdb debugging flags"),
                  &showdebuglist, "show debug ", 0, &showlist);
 
-  c = add_com ("shell", class_support, shell_escape, _("\
+  c = add_com ("shell", class_support, shell_command, _("\
 Execute the rest of the line as a shell command.\n\
 With no arguments, run an inferior shell."));
   set_cmd_completer (c, filename_completer);