This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[hurd,commited] htl: Avoid crashing when passed invalid pthread_t values
- From: Samuel Thibault <samuel dot thibault at ens-lyon dot org>
- To: libc-alpha at sourceware dot org
- Cc: Samuel Thibault <samuel dot thibault at ens-lyon dot org>, commit-hurd at gnu dot org
- Date: Mon, 13 Jan 2020 19:43:11 +0100
- Subject: [hurd,commited] htl: Avoid crashing when passed invalid pthread_t values
---
htl/pt-internal.h | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/htl/pt-internal.h b/htl/pt-internal.h
index 8754f386a6..f8d7d74244 100644
--- a/htl/pt-internal.h
+++ b/htl/pt-internal.h
@@ -173,12 +173,14 @@ extern int __pthread_concurrency;
brain-dead users of the pthread interface incorrectly assume that 0
is an invalid pthread id.) */
extern struct __pthread **__pthread_threads;
+extern int __pthread_max_threads;
extern pthread_rwlock_t __pthread_threads_lock;
#define __pthread_getid(thread) \
- ({ struct __pthread *__t; \
+ ({ struct __pthread *__t = NULL; \
__pthread_rwlock_rdlock (&__pthread_threads_lock); \
- __t = __pthread_threads[thread - 1]; \
+ if (thread <= __pthread_max_threads) \
+ __t = __pthread_threads[thread - 1]; \
__pthread_rwlock_unlock (&__pthread_threads_lock); \
__t; })
--
2.24.1