svn commit: r343480 - head/lib/libfigpar

Devin Teske dteske at freebsd.org
Sat Jan 26 23:28:25 UTC 2019



> On 26 Jan 2019, at 1:59 PM, Colin Percival <cperciva at tarsnap.com> wrote:
> 
> 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?
> 

Thanks for fixing that.
— 
Cheers,
Devin



>>> 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;



More information about the svn-src-all mailing list