getservbyport_r: fix out-of-bounds buffer read
[musl] / src / thread / pthread_getschedparam.c
index 3053c18..c098bef 100644 (file)
@@ -1,10 +1,13 @@
 #include "pthread_impl.h"
+#include "lock.h"
 
 int pthread_getschedparam(pthread_t t, int *restrict policy, struct sched_param *restrict param)
 {
        int r;
-       __lock(t->killlock);
-       if (t->dead) {
+       sigset_t set;
+       __block_app_sigs(&set);
+       LOCK(t->killlock);
+       if (!t->tid) {
                r = ESRCH;
        } else {
                r = -__syscall(SYS_sched_getparam, t->tid, param);
@@ -12,6 +15,7 @@ int pthread_getschedparam(pthread_t t, int *restrict policy, struct sched_param
                        *policy = __syscall(SYS_sched_getscheduler, t->tid);
                }
        }
-       __unlock(t->killlock);
+       UNLOCK(t->killlock);
+       __restore_sigs(&set);
        return r;
 }