From 7cc6c640e2412935bf195ec55dafeb5852c71dd1 Mon Sep 17 00:00:00 2001 From: Ben Jargowsky Date: Tue, 28 Jun 2022 20:14:23 +0200 Subject: Checks for overflows for client max width and height --- dwl.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dwl.c b/dwl.c index 36a7543..393e80f 100644 --- a/dwl.c +++ b/dwl.c @@ -4,6 +4,7 @@ #define _POSIX_C_SOURCE 200809L #include #include +#include #include #include #include @@ -386,9 +387,9 @@ applybounds(Client *c, struct wlr_box *bbox) /* try to set size hints */ c->geom.width = MAX(min.width + (2 * c->bw), c->geom.width); c->geom.height = MAX(min.height + (2 * c->bw), c->geom.height); - if (max.width > 0) + if (max.width > 0 && !(2 * c->bw > INT_MAX - max.width)) // Checks for overflow c->geom.width = MIN(max.width + (2 * c->bw), c->geom.width); - if (max.height > 0) + if (max.height > 0 && !(2 * c->bw > INT_MAX - max.height)) // Checks for overflow c->geom.height = MIN(max.height + (2 * c->bw), c->geom.height); if (c->geom.x >= bbox->x + bbox->width) -- cgit v1.2.3