[PATCH] gcc/config/nios2/nios2.c: Let custom_builtin_name[*] always be zero terminated string

Chen Gang gang.chen.5i5j@gmail.com
Sat Jul 26 07:59:00 GMT 2014


On 07/26/2014 02:32 PM, Chung-Lin Tang wrote:
> On 14/7/26 11:28 AM, Chen Gang wrote:
>> The related strncpy() for custom_builtin_name[*] may set 5 none-zero
>> characters, which may cause custom_builtin_name[*] is none-zero
>> terminated.
>>
>> So add additional '\0' byte for custom_builtin_name[*].
> 
> Where did you see this? Supposedly the snprintf of the custom function
> type string should at most be of 'xnxx' format; 4 characters at most,

I guess, your 'xnxx' means "%cn%c%c", not "%sn%s%s" (which is current
implementation), also at present, "32 - n" is 17, not 4 for snprintf()
length limitation.

If we are always sure it must be no more than 4 characters (at present,
it is, but in the future, I don't know). We can use strcpy() instead of
strncpy() for it -- that will let other readers no doubt.

If we need let custom_builtin_name[*] not only zero terminated, but also
zero pad, we need pass '4' to strncpy() instead of '5', that also will
clear all doubts.

> not 5.  Do you have a test case where the behavior you described appears?
> 

I find it by reading source code, for me, it is simple code, test is
welcomed, but not mandatory.

But it really needs necessary discussion (for modification, and comments).


Thanks.
-- 
Chen Gang

Open, share, and attitude like air, water, and life which God blessed



More information about the Gcc-patches mailing list