[Bug 810739] Re: strcpy output incorrect if src and dst overlap
Adam Conrad
adconrad at 0c3.net
Sat Oct 6 08:05:10 UTC 2012
Does this bug still affect precise? If it's the sse3 memcpy bug, it
should have been fixed in git before 2.15 was cut, so precise and
quantal should be fine. Can anyone confirm?
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to eglibc in Ubuntu.
https://bugs.launchpad.net/bugs/810739
Title:
strcpy output incorrect if src and dst overlap
Status in “eglibc” package in Ubuntu:
Confirmed
Bug description:
A commercial application (Cadence) that runs with an older libc gives
incorrect results with the current libc. I've tracked down the
problem to strcpy. If I make my own strcopy, following the template of
https://bugzilla.redhat.com/show_bug.cgi?id=638477#c38, the tool gives
correct results. Here is mystrcpy.c:
$ cat mystrcpy.c
char *strcpy(char *dest, const char *src){
char *destcopy=dest;
while(*dest++ = *src++)
;
return destcopy;
}
I've traced through the application and see that it
is calling strcpy with overlapping source and destination,
and that the execution goes through __strcpy_ssse3,
which seems to cause the problem.
I made a small testcase to replicate the behavior.
Following http://forums.gentoo.org/viewtopic-t-840983-start-0.html,
here is my test case:
------------
$ cat strcopytest.c
char *strcpy(char *,char *);
int main(){
char buf[80];
strcpy(buf, "012345678\n");
strcpy(buf, buf+1);
puts(buf);
return 0;
}
$ gcc -O2 -c mystrcpy.c
$ ld -G mystrcpy.o -o mystrcpy.so
$ gcc strcopytest.c -o strcopytest
$ ./strcopytest
12345688
$ LD_PRELOAD=./mystrcpy.so ./strcopytest
12345678
----------------
I know that I can make my testcase work with #include "string.h",
but the I cannot recompile the commercial application, so that's not
a workable solution.
ProblemType: Bug
DistroRelease: Ubuntu 11.04
Package: libc6 2.13-0ubuntu13
ProcVersionSignature: Ubuntu 2.6.39-3.10-generic 2.6.39
Uname: Linux 2.6.39-3-generic x86_64
Architecture: amd64
Date: Thu Jul 14 13:43:36 2011
InstallationMedia: Ubuntu 10.04 "Lucid Lynx" - Beta amd64 (20100317.1)
ProcEnviron:
LANGUAGE=en_US:en
PATH=(custom, user)
LANG=en_US.UTF-8
SHELL=/bin/bash
SourcePackage: eglibc
UpgradeStatus: Upgraded to natty on 2011-04-29 (76 days ago)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/810739/+subscriptions
More information about the foundations-bugs
mailing list