Date: Wed, 21 Aug 2002 20:56:58 -0700 (PDT) From: Marcel Moolenaar <marcel@FreeBSD.org> To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/libexec/rtld-elf/ia64 reloc.c Message-ID: <200208220356.g7M3uwnQ071600@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
marcel 2002/08/21 20:56:58 PDT
Modified files:
libexec/rtld-elf/ia64 reloc.c
Log:
Fix a nasty memory corruption bug caused by having a bogus pointer
for the DT_IA64_PLT_RESERVE dynamic table entry. When a shared object
does not have any PLT relocations, the linker apparently doesn't find
it necessary to actually reserve the space for the BOR (Bind On
Reference) entries as pointed to by the DTE. As a result, relocatable
data in the PLT was overwritten, causing some unexpected control flow
with annoyingly predictable outcome: coredump.
To reproduce:
% echo 'int main() { return 0; }' > foo.c
% cc -o foo foo.c -lxpg4
Revision Changes Path
1.9 +8 -0 src/libexec/rtld-elf/ia64/reloc.c
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200208220356.g7M3uwnQ071600>
