[committed] RISC-V: PR28610, Fix ASAN heap-buffer-overflow error in riscv_update_subset.

Andreas Schwab schwab@linux-m68k.org
Mon Nov 22 10:03:18 GMT 2021


On Nov 22 2021, Nelson Chu wrote:

> On Mon, Nov 22, 2021 at 5:37 PM Andreas Schwab <schwab@linux-m68k.org> wrote:
>>
>> On Nov 22 2021, Nelson Chu wrote:
>>
>> > diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
>> > index b8da40c..73a99b5 100644
>> > --- a/bfd/elfxx-riscv.c
>> > +++ b/bfd/elfxx-riscv.c
>> > @@ -2211,6 +2211,9 @@ riscv_update_subset (riscv_parse_subset_t *rps,
>> >  {
>> >    const char *p = str;
>> >
>> > +  if (p == NULL)
>> > +    return false;
>>
>> How can that ever happen?
>
> If we always use the .option arch, then it won't.  But I'm worried
> that someday we might want to pass a "const char *" to
> riscv_update_subset directly, like what the .option rvc did.  But
> accidentally give a NULL pointer...

What do you mean with "accidentally"?  There are exactly three uses of
that function, and all of them always pass a non-NULL value.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."


More information about the Binutils mailing list