mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-24 12:23:31 +08:00
sim: run: fix crash in argc==0 error situation
The new argv processing code assumed that we were always passed a command line. If we weren't, make sure we don't crash before we get a chance to output an error message about incorrect usage.
This commit is contained in:
@ -615,16 +615,26 @@ sim_parse_args (SIM_DESC sd, char * const *argv)
|
||||
{
|
||||
if (STATE_OPEN_KIND (sd) == SIM_OPEN_STANDALONE)
|
||||
{
|
||||
char **new_argv = dupargv (argv + optind);
|
||||
char **new_argv;
|
||||
|
||||
free (STATE_PROG_FILE (sd));
|
||||
STATE_PROG_FILE (sd) = NULL;
|
||||
|
||||
new_argv = dupargv (argv + optind);
|
||||
freeargv (STATE_PROG_ARGV (sd));
|
||||
STATE_PROG_ARGV (sd) = new_argv;
|
||||
|
||||
/* Skip steps when argc == 0. */
|
||||
if (argv[optind] != NULL)
|
||||
{
|
||||
STATE_PROG_FILE (sd) = xstrdup (argv[optind]);
|
||||
|
||||
if (STATE_PROG_ARGV0 (sd) != NULL)
|
||||
{
|
||||
free (new_argv[0]);
|
||||
new_argv[0] = xstrdup (STATE_PROG_ARGV0 (sd));
|
||||
}
|
||||
freeargv (STATE_PROG_ARGV (sd));
|
||||
STATE_PROG_ARGV (sd) = new_argv;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
Reference in New Issue
Block a user