Check return value of XGetWindowProperty in x11_get_address
authorChristian Dywan <christian.dywan@lanedo.com>
Mon, 19 Jul 2010 09:48:06 +0000 (11:48 +0200)
committerSimon McVittie <smcv@debian.org>
Wed, 5 Jan 2011 14:42:45 +0000 (14:42 +0000)
Reviewed-by: Thiago Macieira <thiago@kde.org>
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=29881

tools/dbus-launch-x11.c

index fe49222..0d37134 100644 (file)
@@ -293,6 +293,7 @@ init_x_atoms (Display *display)
 int
 x11_get_address (char **paddress, pid_t *pid, long *wid)
 {
+  int result;
   Atom type;
   Window owner;
   int format;
@@ -310,10 +311,10 @@ x11_get_address (char **paddress, pid_t *pid, long *wid)
     *wid = (long) owner;
 
   /* get the bus address */
-  XGetWindowProperty (xdisplay, owner, address_atom, 0, 1024, False,
-                      XA_STRING, &type, &format, &items, &after,
-                      (unsigned char **) &data);
-  if (type == None || after != 0 || data == NULL || format != 8)
+  result = XGetWindowProperty (xdisplay, owner, address_atom, 0, 1024, False,
+                              XA_STRING, &type, &format, &items, &after,
+                              (unsigned char **) &data);
+  if (result != Success || type == None || after != 0 || data == NULL || format != 8)
     return FALSE;               /* error */
 
   *paddress = xstrdup (data);
@@ -323,10 +324,10 @@ x11_get_address (char **paddress, pid_t *pid, long *wid)
   if (pid != NULL)
     {
       *pid = 0;
-      XGetWindowProperty (xdisplay, owner, pid_atom, 0, sizeof pid, False,
-                          XA_CARDINAL, &type, &format, &items, &after,
-                          (unsigned char **) &data);
-      if (type != None && after == 0 && data != NULL && format == 32)
+      result = XGetWindowProperty (xdisplay, owner, pid_atom, 0, sizeof pid, False,
+                                   XA_CARDINAL, &type, &format, &items, &after,
+                                   (unsigned char **) &data);
+      if (result == Success && type != None && after == 0 && data != NULL && format == 32)
         *pid = (pid_t) *(long*) data;
       XFree (data);
     }