From: Michalis Pappas Date: Wed, 30 Apr 2025 16:10:54 +0000 (+0200) Subject: lib/posix-process/signal: Check canonical timeout on rt_sigtimedwait X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=7abb246f70434de147448538b7d119abe9ac5e67;p=unikraft%2Funikraft.git lib/posix-process/signal: Check canonical timeout on rt_sigtimedwait Add check to ensure that the timeout value passed to rt_sigtimedwait() is canonical. Signed-off-by: Michalis Pappas Reviewed-by: Sergiu Moga Reviewed-by: Andrei Tatar Approved-by: Sergiu Moga GitHub-Closes: #1639 --- diff --git a/lib/posix-process/signal/rt_sigtimedwait.c b/lib/posix-process/signal/rt_sigtimedwait.c index 4fe54762b..65119968d 100644 --- a/lib/posix-process/signal/rt_sigtimedwait.c +++ b/lib/posix-process/signal/rt_sigtimedwait.c @@ -46,11 +46,15 @@ UK_LLSYSCALL_R_DEFINE(int, rt_sigtimedwait, if ((sig = pprocess_signal_next_pending_t(pthread))) goto out; - if (timeout) + if (timeout) { + if (unlikely(!(uk_time_spec_canonical(timeout) && + uk_time_spec_positive(timeout)))) + return -EINVAL; uk_semaphore_down_to(&pthread->signal->pending_semaphore, uk_time_spec_to_nsec(timeout)); - else + } else { uk_semaphore_down(&pthread->signal->pending_semaphore); + } if ((sig = pprocess_signal_next_pending_t(pthread))) goto out;