From 943119408c3d760a82ab524dd52b0a4836c7266e Mon Sep 17 00:00:00 2001 From: Michalis Pappas Date: Tue, 9 Jan 2024 13:03:52 +0100 Subject: [PATCH] lib/posix-process: Fix integer overflow in sigset operations Fix an integer overflow caused by missing `UL` suffix on shifted values that would result into incorrect evaluation when signal numbers >= SIGRTMIN are passed to paremeters. Signed-off-by: Michalis Pappas Reviewed-by: Ioan-Teodor Teugea Reviewed-by: Sergiu Moga Reviewed-by: Andrei Tatar Approved-by: Andrei Tatar GitHub-Closes: #1248 --- lib/posix-process/signal/sigset.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/posix-process/signal/sigset.h b/lib/posix-process/signal/sigset.h index 697860140..0a46c8e06 100644 --- a/lib/posix-process/signal/sigset.h +++ b/lib/posix-process/signal/sigset.h @@ -47,13 +47,13 @@ extern "C" { #define uk_sigemptyset(ptr) (*(ptr) = 0) #define uk_sigfillset(ptr) (*(ptr) = ~((__sigset_t) 0)) -#define uk_sigaddset(ptr, signo) (*(ptr) |= (1 << ((signo) - 1))) -#define uk_sigdelset(ptr, signo) (*(ptr) &= ~(1 << ((signo) - 1))) +#define uk_sigaddset(ptr, signo) (*(ptr) |= (1UL << ((signo) - 1))) +#define uk_sigdelset(ptr, signo) (*(ptr) &= ~(1UL << ((signo) - 1))) #define uk_sigcopyset(ptr1, ptr2) (*(ptr1) = *(ptr2)) #define uk_sigandset(ptr1, ptr2) (*(ptr1) &= *(ptr2)) #define uk_sigorset(ptr1, ptr2) (*(ptr1) |= *(ptr2)) #define uk_sigreverseset(ptr) (*(ptr) = ~(*(ptr))) -#define uk_sigismember(ptr, signo) (*(ptr) & (1 << ((signo) - 1))) +#define uk_sigismember(ptr, signo) (*(ptr) & (1UL << ((signo) - 1))) #define uk_sigisempty(ptr) (*(ptr) == 0) #endif -- 2.39.5