Commit 89dc7ccf authored by Erkki Seppälä's avatar Erkki Seppälä Committed by Ulrich Sibiller

ximcp/imTrX: Handle failing XGetWindowProperty

Checked return value of XGetWindowProperty and return false if it fails. Return value of "XGetWindowProperty(im->core.display, spec->lib_connect_wid, prop, 0L, (length + bytes_after_ret + 3UL) / 4UL, 1, 0UL, &type_ret, &format_ret, &nitems, &bytes_after_ret, &prop_ret)" is not checked Reviewed-by: 's avatarAlan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: 's avatarErkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: 's avatarAlan Coopersmith <alan.coopersmith@oracle.com> Backported-to-NX-by: 's avatarUlrich Sibiller <uli42@gmx.de>
parent 81422098
...@@ -377,14 +377,19 @@ _XimXGetReadData( ...@@ -377,14 +377,19 @@ _XimXGetReadData(
*ret_len = (int)nitems; *ret_len = (int)nitems;
if (bytes_after_ret > 0) { if (bytes_after_ret > 0) {
XFree(prop_ret); XFree(prop_ret);
XGetWindowProperty(im->core.display, if (XGetWindowProperty(im->core.display,
spec->lib_connect_wid, prop, 0L, spec->lib_connect_wid, prop, 0L,
((length + bytes_after_ret + 3)/ 4), True, AnyPropertyType, ((length + bytes_after_ret + 3)/ 4),
&type_ret, &format_ret, &nitems, &bytes_after_ret, True, AnyPropertyType,
&prop_ret); &type_ret, &format_ret, &nitems,
XChangeProperty(im->core.display, spec->lib_connect_wid, prop, &bytes_after_ret,
XA_STRING, 8, PropModePrepend, &prop_ret[length], &prop_ret) == Success) {
(nitems - length)); XChangeProperty(im->core.display, spec->lib_connect_wid, prop,
XA_STRING, 8, PropModePrepend, &prop_ret[length],
(nitems - length));
} else {
return False;
}
} }
} else { } else {
(void)memcpy(buf, prop_ret, buf_len); (void)memcpy(buf, prop_ret, buf_len);
...@@ -393,10 +398,14 @@ _XimXGetReadData( ...@@ -393,10 +398,14 @@ _XimXGetReadData(
if (bytes_after_ret > 0) { if (bytes_after_ret > 0) {
XFree(prop_ret); XFree(prop_ret);
XGetWindowProperty(im->core.display, if (XGetWindowProperty(im->core.display,
spec->lib_connect_wid, prop, 0L, spec->lib_connect_wid, prop, 0L,
((length + bytes_after_ret + 3)/ 4), True, AnyPropertyType, ((length + bytes_after_ret + 3)/ 4),
&type_ret, &format_ret, &nitems, &bytes_after_ret, &prop_ret); True, AnyPropertyType,
&type_ret, &format_ret, &nitems,
&bytes_after_ret, &prop_ret) != Success) {
return False;
}
} }
XChangeProperty(im->core.display, spec->lib_connect_wid, prop, XChangeProperty(im->core.display, spec->lib_connect_wid, prop,
XA_STRING, 8, PropModePrepend, &prop_ret[buf_len], len); XA_STRING, 8, PropModePrepend, &prop_ret[buf_len], len);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment