diff --git a/src/libc/litelibc/src/signal/sigaction.c b/src/libc/litelibc/src/signal/sigaction.c index f7bb403536e3e47465b083d4ac56e674f66729de..45fb9c80d57618d0c04691d579ab8abc66230ae4 100644 --- a/src/libc/litelibc/src/signal/sigaction.c +++ b/src/libc/litelibc/src/signal/sigaction.c @@ -29,7 +29,7 @@ int __sigaction(int signum, const struct sigaction *__restrict act, struct sigac return -1; } - if (act->sa_flags == SA_SIGINFO) { + if (act&& (act->sa_flags == SA_SIGINFO)) { errno = ENOTSUP; return -1; } diff --git a/testsuites/posixtestsuite/conformance/interfaces/sigaction/sigaction_test.c b/testsuites/posixtestsuite/conformance/interfaces/sigaction/sigaction_test.c index 3ba80abc42e4781d285af340e4643e9abbbcbbac..697e388ad39e1e21ffeb47b9ee0fbc6ecf81daca 100644 --- a/testsuites/posixtestsuite/conformance/interfaces/sigaction/sigaction_test.c +++ b/testsuites/posixtestsuite/conformance/interfaces/sigaction/sigaction_test.c @@ -73,6 +73,8 @@ int TEST_sigaction_1(void) void *TEST_sigaction_pthread_1() { struct sigaction act; + sigemptyset(&act.sa_mask); + act.sa_handler = TEST_sigaction_Handler1; g_signo = SIGABRT; diff --git a/testsuites/posixtestsuite/conformance/interfaces/sigpause/3-1.c b/testsuites/posixtestsuite/conformance/interfaces/sigpause/3-1.c index e4e0cb1eebaddeeedf5a313bc3662240426568ba..56d70dfb7cd428f2de475fdda2273923247db84c 100644 --- a/testsuites/posixtestsuite/conformance/interfaces/sigpause/3-1.c +++ b/testsuites/posixtestsuite/conformance/interfaces/sigpause/3-1.c @@ -71,6 +71,7 @@ int sigpause_3_1() { pthread_t new_th; + sem = INTHREAD; if(pthread_create(&new_th, NULL, a_thread_func, NULL) != 0) { perror("Error creating thread\n"); @@ -85,7 +86,6 @@ int sigpause_3_1() return PTS_UNRESOLVED; } - sem = INTHREAD; while (sem == INTHREAD) sleep(1);