From 17dc564f18463289ef226db1e450273ebd39709b Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Thu, 21 Mar 2002 18:18:37 +0000 Subject: [PATCH] Check for NULL internal context in all functions, as it may be NULL. --- lib/silcutil/unix/silcunixschedule.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/lib/silcutil/unix/silcunixschedule.c b/lib/silcutil/unix/silcunixschedule.c index de64bd58..2bdff338 100644 --- a/lib/silcutil/unix/silcunixschedule.c +++ b/lib/silcutil/unix/silcunixschedule.c @@ -112,6 +112,7 @@ void *silc_schedule_internal_init(SilcSchedule schedule) #ifdef SILC_THREADS if (pipe(internal->wakeup_pipe)) { + SILC_LOG_ERROR(("pipe() fails: %s", strerror(errno))); silc_free(internal); return NULL; } @@ -122,6 +123,7 @@ void *silc_schedule_internal_init(SilcSchedule schedule) 0, 0, SILC_TASK_FD, SILC_TASK_PRI_NORMAL); if (!internal->wakeup_task) { + SILC_LOG_ERROR(("Could not add a wakeup task, threads won't work")); close(internal->wakeup_pipe[0]); close(internal->wakeup_pipe[1]); silc_free(internal); @@ -171,6 +173,9 @@ void silc_schedule_internal_signal_register(void *context, SilcUnixScheduler internal = (SilcUnixScheduler)context; int i; + if (!internal) + return; + sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked); for (i = 0; i < SIGNAL_COUNT; i++) { @@ -195,6 +200,9 @@ void silc_schedule_internal_signal_unregister(void *context, SilcUnixScheduler internal = (SilcUnixScheduler)context; int i; + if (!internal) + return; + sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked); for (i = 0; i < SIGNAL_COUNT; i++) { @@ -219,6 +227,9 @@ void silc_schedule_internal_signal_call(void *context, SilcUInt32 signal) SilcUnixScheduler internal = (SilcUnixScheduler)context; int i; + if (!internal) + return; + sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked); for (i = 0; i < SIGNAL_COUNT; i++) { @@ -237,6 +248,9 @@ void silc_schedule_internal_signals_call(void *context, SilcUnixScheduler internal = (SilcUnixScheduler)context; int i; + if (!internal) + return; + sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked); for (i = 0; i < SIGNAL_COUNT; i++) { @@ -257,6 +271,10 @@ void silc_schedule_internal_signals_call(void *context, void silc_schedule_internal_signals_block(void *context) { SilcUnixScheduler internal = (SilcUnixScheduler)context; + + if (!internal) + return; + sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked); } @@ -265,5 +283,9 @@ void silc_schedule_internal_signals_block(void *context) void silc_schedule_internal_signals_unblock(void *context) { SilcUnixScheduler internal = (SilcUnixScheduler)context; + + if (!internal) + return; + sigprocmask(SIG_SETMASK, &internal->signals_blocked, NULL); } -- 2.24.0