diff options
author | Ulrich Drepper <drepper@gmail.com> | 2011-10-29 12:51:53 -0400 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-10-29 12:51:53 -0400 |
commit | c9aafacee48275d85d86f25ab4569516f180846a (patch) | |
tree | 4536b3eef5c45350700078df361166215b2b0b9e | |
parent | d272e7f19dc2dae6d215f6ca6512d042575ed736 (diff) | |
download | glibc-c9aafacee48275d85d86f25ab4569516f180846a.tar glibc-c9aafacee48275d85d86f25ab4569516f180846a.tar.gz glibc-c9aafacee48275d85d86f25ab4569516f180846a.tar.bz2 glibc-c9aafacee48275d85d86f25ab4569516f180846a.zip |
Correctly NUL-terminate link name in sprof
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | elf/sprof.c | 7 |
3 files changed, 9 insertions, 4 deletions
@@ -1,5 +1,9 @@ 2011-10-29 Ulrich Drepper <drepper@gmail.com> + [BZ #13337] + * elf/sprof.c (load_shobj): Correctly NUL-terminate link name. + Patch by Thomas Jarosch <thomas.jarosch@intra2net.com>. + * elf/chroot_canon.c (chroot_canon): Cleanups. * elf/dl-lookup.c (_dl_setup_hash): Avoid warning. @@ -12,7 +12,7 @@ Version 2.15 6779, 6783, 9696, 11589, 12403, 12847, 12868, 12852, 12874, 12885, 12892, 12907, 12922, 12935, 13007, 13021, 13067, 13068, 13090, 13092, 13114, 13118, 13123, 13134, 13138, 13150, 13179, 13192, 13268, 13291, 13335, - 13344 + 13337, 13344 * New program pldd to list loaded object of a process Implemented by Ulrich Drepper. diff --git a/elf/sprof.c b/elf/sprof.c index dbe217b083..069649a654 100644 --- a/elf/sprof.c +++ b/elf/sprof.c @@ -596,10 +596,11 @@ load_shobj (const char *name) static const char procpath[] = "/proc/self/fd/%d"; char origprocname[sizeof (procpath) + sizeof (int) * 3]; snprintf (origprocname, sizeof (origprocname), procpath, fd); - char *origlink = (char *) alloca (PATH_MAX + 1); - origlink[PATH_MAX] = '\0'; - if (readlink (origprocname, origlink, PATH_MAX) == -1) + char *origlink = (char *) alloca (PATH_MAX); + ssize_t n = readlink (origprocname, origlink, PATH_MAX) + if (n == -1) goto no_debuginfo; + origlink[n] = '\0'; /* Try to find the actual file. There are three places: 1. the same directory the DSO is in |