Date: Sat, 26 Jan 2019 15:28:22 -0800 From: Devin Teske <dteske@freebsd.org> To: Colin Percival <cperciva@tarsnap.com> Cc: rgrimes@freebsd.org, Stefan Esser <se@freebsd.org>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r343480 - head/lib/libfigpar Message-ID: <75F63D9C-0EF2-40EB-BDC6-A2ADFD3C3A89@freebsd.org> In-Reply-To: <010001688c2cfc3e-e319d851-8b9e-4468-8bd1-f93331f35116-000000@email.amazonses.com> References: <201901262136.x0QLaAJv095518@pdx.rh.CN85.dnsmgr.net> <010001688c2cfc3e-e319d851-8b9e-4468-8bd1-f93331f35116-000000@email.amazonses.com>
next in thread | previous in thread | raw e-mail | index | archive | help
> On 26 Jan 2019, at 1:59 PM, Colin Percival <cperciva@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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?75F63D9C-0EF2-40EB-BDC6-A2ADFD3C3A89>
