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