On Fri, Dec 31, 2021 at 08:18:33PM -0500, Mouse wrote:
> >> -      strcat(linedata, p);
> >> +      for (i = 0; (linedata[i] = p[i]) != '\0'; ++i) ;
> 
> > asan2 reported that this line had a strcpy whose source/destination
> > overlapped.

fwiw, that was my checkin comment.  asan2 probably had it right.

        strcat(linedata, p);

won't work well if p points into the string that starts at linedata.

> 
> Then asan2 is wrong; the original line (the - line above) does not have
> any strcpy at all.  It has a strcat.  (Perhaps the strcat source and
> destination overlap, and asan2 is wrong only in that it reports the
> wrong call in its complaint?)  But the replacement code (the + line
> above) implements (loosely put) strcpy, not strcat.  Perhaps it would
> work better to replace the strcat with code that actually concatenates,
> preserving the presumably-intended semantics?

probably.  But then -- I think that going back to the original strcat
AND seeing how to avoid the case where p/linedata overlap might be better.

(something to do early in the day rather than the evening :-)

> 
> Maybe something like (completely untested)
> 
>       for (i=0,j=strlen(linedata);(linedata[j]=p[i]);i++,j++) ;
> 
> /~\ The ASCII                           Mouse
> \ / Ribbon Campaign
>  X  Against HTML              mo...@rodents-montreal.org
> / \ Email!         7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B
> 

-- 
Thomas E. Dickey <dic...@invisible-island.net>
https://invisible-island.net
ftp://ftp.invisible-island.net

Attachment: signature.asc
Description: PGP signature

Reply via email to