summaryrefslogtreecommitdiff
path: root/desktop/icewm/patches/wmclient.patch
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/icewm/patches/wmclient.patch')
-rw-r--r--desktop/icewm/patches/wmclient.patch25
1 files changed, 25 insertions, 0 deletions
diff --git a/desktop/icewm/patches/wmclient.patch b/desktop/icewm/patches/wmclient.patch
new file mode 100644
index 0000000000..95f00614de
--- /dev/null
+++ b/desktop/icewm/patches/wmclient.patch
@@ -0,0 +1,25 @@
+diff -uNr icewm-1.3.7.orig/src/wmclient.cc icewm-1.3.7/src/wmclient.cc
+--- icewm-1.3.7.orig/src/wmclient.cc 2012-05-27 11:54:25.663101746 +0200
++++ icewm-1.3.7/src/wmclient.cc 2012-05-27 12:17:40.236339580 +0200
+@@ -1044,20 +1044,11 @@
+ while (XGetWindowProperty(display, handle,
+ propAtom, (itemCount * itemSize) / 32, 1024*32, False, AnyPropertyType,
+ &r_type, &r_format, &nitems, &bytes_remain,
+- &prop) == Success && prop && bytes_remain == 0)
++ &prop) == Success && prop)
+ {
+ if (r_format == itemSize1 && nitems > 0) {
+ data = realloc(data, (itemCount + nitems) * itemSize / 8);
+
+- // access to memory beyound 256MiB causes crashes! But anyhow, size
+- // >>2MiB looks suspicious. Detect this case ASAP. However, if
+- // the usable icon is somewhere in the beginning, it's okay to
+- // return truncated data.
+- if (itemCount * itemSize / 8 >= 2097152) {
+- XFree(prop);
+- break;
+- }
+-
+ memcpy((char *)data + itemCount * itemSize / 8, prop, nitems * itemSize / 8);
+ itemCount += nitems;
+ XFree(prop);