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 _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"