svn commit: r343480 - head/lib/libfigpar
Colin Percival
cperciva at tarsnap.com
Sat Jan 26 22:02:32 UTC 2019
On 1/26/19 1:36 PM, Rodney W. Grimes wrote:
>> Author: se
>> Date: Sat Jan 26 21:30:26 2019
>> New Revision: 343480
>> URL: https://svnweb.freebsd.org/changeset/base/343480
>>
>> Log:
>> Silence Clang Scan warning about potentially unsafe use of strcpy.
>>
>> While this is a false positive, the use of strdup() simplifies the code.
>
> Though that might be true, it also has to recalculate the
> length of the string which was already known by slen.
>
> I am not sure how often this code is called,
> but that is wasted cycles in a library.
The length of the string was already being recalculated, by strcpy.
It seems to me that this could be written as
temp = malloc(slen + 1);
if (temp == NULL) /* could not allocate memory */
return (-1);
memcpy(temp, source, slen + 1);
which avoids both recalculating the string length and using strcpy?
>> Modified: head/lib/libfigpar/string_m.c
>> ==============================================================================
>> --- head/lib/libfigpar/string_m.c Sat Jan 26 20:43:28 2019 (r343479)
>> +++ head/lib/libfigpar/string_m.c Sat Jan 26 21:30:26 2019 (r343480)
>> @@ -119,10 +119,9 @@ replaceall(char *source, const char *find, const char
>>
>> /* If replace is longer than find, we'll need to create a temp copy */
>> if (rlen > flen) {
>> - temp = malloc(slen + 1);
>> - if (errno != 0) /* could not allocate memory */
>> + temp = strdup(source);
>> + if (temp == NULL) /* could not allocate memory */
>> return (-1);
>> - strcpy(temp, source);
>> } else
>> temp = source;
--
Colin Percival
Security Officer Emeritus, FreeBSD | The power to serve
Founder, Tarsnap | www.tarsnap.com | Online backups for the truly paranoid
More information about the svn-src-all
mailing list