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