Check return value of XGetWindowProperty in x11_get_address

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
This commit is contained in:
Christian Dywan 2010-07-19 11:48:06 +02:00 committed by Simon McVittie
parent e2be7b92a6
commit 79b4e478d7

View 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);
}