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
signature.asc
Description: PGP signature