commit 3fdf0241fcd1b7677a034c0c8f213587e5e706e7
parent 7283c8c0ac9db8b38bb280576668256023d82fb4
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Tue, 13 Oct 2026 14:30:47 +0200
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;
}
Diffstat:
1 file changed, 3 insertions(+), 0 deletions(-)
diff --git 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;