]> xenbits.xensource.com Git - unikraft/unikraft.git/commitdiff
lib/posix-process: Fix integer overflow in sigset operations
authorMichalis Pappas <michalis@unikraft.io>
Tue, 9 Jan 2024 12:03:52 +0000 (13:03 +0100)
committerUnikraft Bot <monkey@unikraft.io>
Wed, 26 Mar 2025 08:05:34 +0000 (08:05 +0000)
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 <michalis@unikraft.io>
Reviewed-by: Ioan-Teodor Teugea <ioan_teodor.teugea@stud.acs.upb.ro>
Reviewed-by: Sergiu Moga <sergiu@unikraft.io>
Reviewed-by: Andrei Tatar <andrei@unikraft.io>
Approved-by: Andrei Tatar <andrei@unikraft.io>
GitHub-Closes: #1248

lib/posix-process/signal/sigset.h

index 697860140d7ca36c1360c653a0644d6eb7fd4114..0a46c8e067a7aecb1def4f4f8775c45976b4c4e8 100644 (file)
@@ -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