[PATCH] RISC-V: Add string length check for operands in AS

Li Xu xuli1@eswincomputing.com
Wed Dec 14 08:06:43 GMT 2022


2022-12-13 17:07 Andreas Schwab <schwab@suse.de> wrote:



>



>On Dez 13 2022, Li Xu wrote:



>



>> diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c



>> index 0682eb35524..b0989e4b124 100644



>> --- a/gas/config/tc-riscv.c



>> +++ b/gas/config/tc-riscv.c



>> @@ -1206,7 +1206,7 @@ arg_lookup (char **s, const char *const *array, size_t size, unsigned *regnop)



>>      return false;



>>  



>>    for (i = 0; i < size; i++)



>> -    if (array[i] != NULL && strncmp (array[i], *s, len) == 0)



>> +    if (array[i] != NULL && (strlen(array[i]) == len) && strncmp (array[i], *s, len) == 0)



>



>There is no need to read through array[i] twice.



>



>    if (array[i] != NULL && strncmp (array[i], *s, len) == 0



>        && array[i][len] == '\0')



>



>-- 



>Andreas Schwab, SUSE Labs, schwab@suse.de



>GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7



>"And now for something completely different."


Thanks to Jan and Andreas review comments.
I tried to use startswith(), but the first  argument is not easy to pass.  So i choose to
follow Andreas's advice.
The new patch is https://sourceware.org/pipermail/binutils/2022-December/125094.html, thanks.


More information about the Binutils mailing list