aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@gmail.com>2011-12-21 19:26:29 -0500
committerUlrich Drepper <drepper@gmail.com>2011-12-21 19:26:29 -0500
commit60e8585f2a2aa288a403a581f1dc8d3fc373598b (patch)
treeeadde2f50d58d87d551978db011b25f14bb7beff
parent8fa26d571d4b87a1c7a7f19f1365f7e5d2995933 (diff)
downloadglibc-60e8585f2a2aa288a403a581f1dc8d3fc373598b.zip
glibc-60e8585f2a2aa288a403a581f1dc8d3fc373598b.tar.gz
glibc-60e8585f2a2aa288a403a581f1dc8d3fc373598b.tar.bz2
Fix reading thread name from comm file
-rw-r--r--NEWS2
-rw-r--r--nptl/ChangeLog6
-rw-r--r--nptl/sysdeps/unix/sysv/linux/pthread_getname.c11
3 files changed, 17 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index e40ce3f..aba4a8d 100644
--- a/NEWS
+++ b/NEWS
@@ -13,7 +13,7 @@ Version 2.15
12885, 12892, 12907, 12922, 12935, 13007, 13021, 13067, 13068, 13090,
13092, 13114, 13118, 13123, 13134, 13138, 13147, 13150, 13179, 13192,
13268, 13276, 13291, 13335, 13337, 13344, 13358, 13367, 13439, 13446,
- 13472, 13484, 13506, 13524
+ 13472, 13484, 13506, 13515, 13524
* New program pldd to list loaded object of a process
Implemented by Ulrich Drepper.
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index b622fe7..31177bf 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,9 @@
+2011-12-21 Ulrich Drepper <drepper@gmail.com>
+
+ [BZ #13515]
+ * sysdeps/unix/sysv/linux/pthread_getname.c (pthread_getname_np):
+ Correct reading name from file.
+
2011-12-14 Carlos O'Donell <carlos@systemhalted.org>
* allocatestack.c (allocate_stack): Return errno on failure.
diff --git a/nptl/sysdeps/unix/sysv/linux/pthread_getname.c b/nptl/sysdeps/unix/sysv/linux/pthread_getname.c
index 6e7786f..2c5ee63 100644
--- a/nptl/sysdeps/unix/sysv/linux/pthread_getname.c
+++ b/nptl/sysdeps/unix/sysv/linux/pthread_getname.c
@@ -1,5 +1,5 @@
/* pthread_getname_np -- Get thread name. Linux version
- Copyright (C) 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -57,6 +57,15 @@ pthread_getname_np (th, buf, len)
ssize_t n = TEMP_FAILURE_RETRY (read_not_cancel (fd, buf, len));
if (n < 0)
res = errno;
+ else
+ {
+ if (buf[n - 1] == '\n')
+ buf[n - 1] = '\0';
+ else if (n == len)
+ res = ERANGE;
+ else
+ buf[n] = '\0';
+ }
close_not_cancel_no_status (fd);