[Bug 810739] Re: strcpy output incorrect if src and dst overlap
Distro-jumper
boblounsbury at gmail.com
Sat Nov 10 21:49:22 UTC 2012
Any news on this?? I can confirm the behavior on precise as well,
version 2.15-0ubuntu10.3.
--
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:
Invalid
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