Avoid ctype(3) abuses - slock - simple X display locker utility
HTML git clone git://git.suckless.org/slock
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
DIR commit 55d985a354048e14f408dd731faaf1acbdc277f4
DIR parent 3791a996e230aec59d61faea46634ae4f031e359
HTML Author: Leonardo Taccari <leot@NetBSD.org>
Date: Mon, 27 Jul 2026 23:27:43 +0200
Avoid ctype(3) abuses
Valid argument of ctype(3) functions must be either EOF or non-negative
value within the range representable as unsigned char. Invalid values
leads to undefined behavior.
Cast all such uses to avoid that.
At least in NetBSD 11 ctype(3) abuses will always crash and permit
to break slock screen locking.
Diffstat:
M slock.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
---
DIR diff --git a/slock.c b/slock.c
@@ -181,7 +181,7 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens,
passwd[--len] = '\0';
break;
default:
- if (num && !iscntrl((int)buf[0]) &&
+ if (num && !iscntrl((unsigned char)buf[0]) &&
(len + num < sizeof(passwd))) {
memcpy(passwd + len, buf, num);
len += num;