Re: [PATCH] Avoid seg fault in sim/cris/sim-if.c

Andrew Burgess <[email protected]> Mon, 03 Aug 2026 13:10:11 +0100
Newsgroups gmane.comp.gdb.patches
Message-ID <[email protected]>
"Roger Sayle" <[email protected]> writes:

> Typing "target sim" in GDB built with --target=cris-elf, crashes immediately
> after being launched with "gdb ./a.out".  The issue is that STATE_PROG_ARGV
> may return NULL, and this isn't tested before dereferencing the pointer.
>
> If approved, please could someone commit this for me.
> Thanks in advance.

I pushed this.

But also, I owe you an apology.  For some reason I was not able to apply
this patch directly from my email client to a git tree as usual, so I
ended up copying the contents by hand.  In the process I forgot to make
you the patch author, something I only spotted after pushing to master.

This was not intentional, and I really do apologise, I did not intend to
take credit for this fix.  Unfortunately, there's no simple way I can
fix this mistake.

I will try to take greater care in future.

Thanks,
Andrew


>
> 2026-08-01  Roger Sayle  <[email protected]>
>
> ChangeLog
> 	* sim/cris/sim-if.c (sim_open): Check that prog_argv isn't NULL.
>
>
> diff --git a/sim/cris/sim-if.c b/sim/cris/sim-if.c
> index 12c80983208..3babbb058b7 100644
> --- a/sim/cris/sim-if.c
> +++ b/sim/cris/sim-if.c
> @@ -770,8 +770,9 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, struct bfd *abfd,
>        for (envc = 0; environ[envc] != NULL; envc++)
>  	len += strlen (environ[envc]) + 1;
>  
> -      for (i = 0; prog_argv[i] != NULL; my_argc++, i++)
> -	len += strlen (prog_argv[i]) + 1;
> +      if (prog_argv != NULL)
> +	for (i = 0; prog_argv[i] != NULL; my_argc++, i++)
> +	  len += strlen (prog_argv[i]) + 1;
>  
>        envstart = (envtop - len) & ~8191;
>