From 3fdf0241fcd1b7677a034c0c8f213587e5e706e7 Mon Sep 17 00:00:00 2001 From: Hiltjo Posthuma Date: Tue, 13 Oct 2026 14:30:47 +0200 Subject: ignore malformed ConfigureNotify with width or height <= 0 This could crash dwm. cc repro.c -o repro -lX11; ./repro int main(void) { Display *d; int screen; Window root; d = XOpenDisplay(NULL); if (!d) { fprintf(stderr, "XOpenDisplay failed\n"); return 1; } screen = DefaultScreen(d); root = RootWindow(d, screen); XConfigureEvent ce = {0}; ce.type = ConfigureNotify; ce.display = d; ce.event = root; ce.window = root; ce.width = 0; ce.height = 0; XSendEvent(d, root, False, StructureNotifyMask, (XEvent *)&ce); XFlush(d); XCloseDisplay(d); return 0; } --- dwm.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'dwm.c') diff --git a/dwm.c b/dwm.c index 5ff6fd4..1249997 100644 --- a/dwm.c +++ b/dwm.c @@ -559,6 +559,9 @@ configurenotify(XEvent *e) /* TODO: updategeom handling sucks, needs to be simplified */ if (ev->window == root) { + if (ev->width <= 0 || ev->height <= 0) + return; + dirty = (sw != ev->width || sh != ev->height); sw = ev->width; sh = ev->height; -- cgit v1.3.1