From 419170668a365625ed61d5c6aa83541c0778446f Mon Sep 17 00:00:00 2001 From: Bo Simonsen Date: Tue, 14 Apr 2020 20:42:38 +0200 Subject: [PATCH] Handle sizehint base_width / base_height being less than 0 Some applications supply -1 in base_width / base_height. One example is the Preferences dialog of pcmanfm-qt: WM_NORMAL_HINTS(WM_SIZE_HINTS): ... program specified base size: -1 by -1 Without this commit the program will crash due to overflow of unsigned int. --- src/WindowState.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/WindowState.cc b/src/WindowState.cc index e6849925..4bd8f614 100644 --- a/src/WindowState.cc +++ b/src/WindowState.cc @@ -113,8 +113,9 @@ void SizeHints::reset(const XSizeHints &sizehint) { min_width = min_height = 1; if (sizehint.flags & PBaseSize) { - base_width = sizehint.base_width; - base_height = sizehint.base_height; + base_width = std::max(sizehint.base_width, 0); + base_height = std::max(sizehint.base_height, 0); + if (!(sizehint.flags & PMinSize)) { min_width = base_width; min_height = base_height;