|
|
Message-ID: <20261030191109.5949-1-mailto.luca.kellermann@gmail.com>
Date: Fri, 30 Oct 2026 20:09:50 +0100
From: Luca Kellermann <mailto.luca.kellermann@...il.com>
To: musl@...ts.openwall.com
Subject: [PATCH] fix integer overflow in sigaddset, sigdelset and sigismember
if sig was INT_MIN a signed integer overflow would occur.
fix this by doing an unsigned subtraction.
---
src/signal/sigaddset.c | 2 +-
src/signal/sigdelset.c | 2 +-
src/signal/sigismember.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/signal/sigaddset.c b/src/signal/sigaddset.c
index 085d1f4ab98d2d726ad401bebd89881e11c633af..e67412846ec65eae95f81bcb83a7b2ccc2e804f9 100644
--- a/src/signal/sigaddset.c
+++ b/src/signal/sigaddset.c
@@ -1,13 +1,13 @@
#include <signal.h>
#include <errno.h>
int sigaddset(sigset_t *set, int sig)
{
- unsigned s = sig-1;
+ unsigned s = sig-1U;
if (s >= _NSIG-1 || sig-32U < 3) {
errno = EINVAL;
return -1;
}
set->__bits[s/8/sizeof *set->__bits] |= 1UL<<(s&8*sizeof *set->__bits-1);
return 0;
}
diff --git a/src/signal/sigdelset.c b/src/signal/sigdelset.c
index ce69280e0cbf36f391b2a818114679143314a900..19573605082beb28e9daf048708a2275e2924879 100644
--- a/src/signal/sigdelset.c
+++ b/src/signal/sigdelset.c
@@ -1,13 +1,13 @@
#include <signal.h>
#include <errno.h>
int sigdelset(sigset_t *set, int sig)
{
- unsigned s = sig-1;
+ unsigned s = sig-1U;
if (s >= _NSIG-1 || sig-32U < 3) {
errno = EINVAL;
return -1;
}
set->__bits[s/8/sizeof *set->__bits] &=~(1UL<<(s&8*sizeof *set->__bits-1));
return 0;
}
diff --git a/src/signal/sigismember.c b/src/signal/sigismember.c
index ab87d62249de487cdb1c0990ffa26acf60160ade..e8673884fb6817ef1ba5e323ab3c790b9ff7a756 100644
--- a/src/signal/sigismember.c
+++ b/src/signal/sigismember.c
@@ -1,8 +1,8 @@
#include <signal.h>
int sigismember(const sigset_t *set, int sig)
{
- unsigned s = sig-1;
+ unsigned s = sig-1U;
if (s >= _NSIG-1) return 0;
return !!(set->__bits[s/8/sizeof *set->__bits] & 1UL<<(s&8*sizeof *set->__bits-1));
}
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.