]> git.sur5r.net Git - openocd/commitdiff
Removed limit on lenght of command line options.
authorCristian Maglie <c.maglie@bug.st>
Fri, 8 Aug 2014 16:40:57 +0000 (18:40 +0200)
committerAndreas Fritiofson <andreas.fritiofson@gmail.com>
Tue, 12 Aug 2014 21:04:27 +0000 (21:04 +0000)
In particular -f and -s options may contains paths that can easily
exceed the (old) 128 bytes buffer.

Change-Id: Ifc198536549f50663e8e588519bb9ef75dcd172c
Signed-off-by: Cristian Maglie <c.maglie@bug.st>
Reviewed-on: http://openocd.zylin.com/2241
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
src/helper/options.c

index a378131a60df234e89eea68d59d33a3c09d529d5..5351e825077e42d2e70740881c955bd5e9d8ee94 100644 (file)
@@ -141,7 +141,6 @@ static void add_default_dirs(void)
 int parse_cmdline_args(struct command_context *cmd_ctx, int argc, char *argv[])
 {
        int c;
-       char command_buffer[128];
 
        while (1) {
                /* getopt_long stores the option index here. */
@@ -164,24 +163,26 @@ int parse_cmdline_args(struct command_context *cmd_ctx, int argc, char *argv[])
                                break;
                        case 'f':               /* --file | -f */
                        {
-                               snprintf(command_buffer, 128, "script {%s}", optarg);
-                               add_config_command(command_buffer);
+                               char *command = alloc_printf("script {%s}", optarg);
+                               add_config_command(command);
+                               free(command);
                                break;
                        }
                        case 's':               /* --search | -s */
                                add_script_search_dir(optarg);
                                break;
                        case 'd':               /* --debug | -d */
-                               if (optarg)
-                                       snprintf(command_buffer, 128, "debug_level %s", optarg);
-                               else
-                                       snprintf(command_buffer, 128, "debug_level 3");
-                               command_run_line(cmd_ctx, command_buffer);
+                       {
+                               char *command = alloc_printf("debug_level %s", optarg ? optarg : "3");
+                               command_run_line(cmd_ctx, command);
+                               free(command);
                                break;
+                       }
                        case 'l':               /* --log_output | -l */
                                if (optarg) {
-                                       snprintf(command_buffer, 128, "log_output %s", optarg);
-                                       command_run_line(cmd_ctx, command_buffer);
+                                       char *command = alloc_printf("log_output %s", optarg);
+                                       command_run_line(cmd_ctx, command);
+                                       free(command);
                                }
                                break;
                        case 'c':               /* --command | -c */