]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
htl: Avoid crashing when passed invalid pthread_t values
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Mon, 13 Jan 2020 18:41:57 +0000 (19:41 +0100)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Mon, 13 Jan 2020 18:41:57 +0000 (19:41 +0100)
htl/pt-internal.h

index 8754f386a62609b1c471c88189296abc62b4ea3c..f8d7d74244ca21832e601019ff6145d1d3355de1 100644 (file)
@@ -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; })