aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordolio <dolio>2004-09-17 05:20:35 +0000
committerdolio <dolio>2004-09-17 05:20:35 +0000
commited88a4746832f69e65d866d732eadb2070456806 (patch)
tree00a906c1ee72591fd4a7405de31470e5de010d85
parentBug #1360: Fix a segfault by checking the return value of XQueryTree. (diff)
downloadxcman-ed88a4746832f69e65d866d732eadb2070456806.tar.gz
xcman-ed88a4746832f69e65d866d732eadb2070456806.tar.bz2
xcman-ed88a4746832f69e65d866d732eadb2070456806.tar.xz
Added allocation failure checks in shadow_picture and caused it to exit
gracefully rather than writing to unallocated memory.
-rw-r--r--ChangeLog6
-rw-r--r--xcompmgr.c20
2 files changed, 26 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 467e608..556f0f0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2004-09-17 Dan Doel <dolio@case.edu>
+
+ * xcompmgr.c: (shadow_picture):
+ Added some tests to check for failed pixmap/picture/gc allocations and
+ exit appropriately.
+
2004-09-14 Adam Jackson <ajax@freedesktop.org>
* xcompmgr.c:
diff --git a/xcompmgr.c b/xcompmgr.c
index 7e542fe..3d27786 100644
--- a/xcompmgr.c
+++ b/xcompmgr.c
@@ -581,10 +581,30 @@ shadow_picture (Display *dpy, double opacity, Picture alpha_pict, int width, int
shadowImage->width,
shadowImage->height,
8);
+ if (!shadowPixmap)
+ {
+ XDestroyImage (shadowImage);
+ return None;
+ }
+
shadowPicture = XRenderCreatePicture (dpy, shadowPixmap,
XRenderFindStandardFormat (dpy, PictStandardA8),
0, 0);
+ if (!shadowPicture)
+ {
+ XDestroyImage (shadowImage);
+ XFreePixmap (dpy, shadowPixmap);
+ return None;
+ }
+
gc = XCreateGC (dpy, shadowPixmap, 0, 0);
+ if (!gc)
+ {
+ XDestroyImage (shadowImage);
+ XFreePixmap (dpy, shadowPixmap);
+ XRenderFreePicture (dpy, shadowPicture);
+ return None;
+ }
XPutImage (dpy, shadowPixmap, gc, shadowImage, 0, 0, 0, 0,
shadowImage->width,