On 01/31/11 04:02 AM, Erkki Seppälä wrote:
> 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
> 
> Signed-off-by: Erkki Seppälä <[email protected]>
> ---
>  modules/im/ximcp/imTrX.c |   33 +++++++++++++++++++++------------
>  1 files changed, 21 insertions(+), 12 deletions(-)
> 
> diff --git a/modules/im/ximcp/imTrX.c b/modules/im/ximcp/imTrX.c
> index 47c231e..edcaf08 100644
> --- a/modules/im/ximcp/imTrX.c
> +++ b/modules/im/ximcp/imTrX.c
> @@ -377,14 +377,19 @@ _XimXGetReadData(
>           *ret_len  = (int)nitems;
>           if (bytes_after_ret > 0) {
>               XFree(prop_ret);
> -             XGetWindowProperty(im->core.display,
> -                 spec->lib_connect_wid, prop, 0L,
> -                 ((length + bytes_after_ret + 3)/ 4), True, AnyPropertyType,
> -                 &type_ret, &format_ret, &nitems, &bytes_after_ret,
> -                 &prop_ret);
> -             XChangeProperty(im->core.display, spec->lib_connect_wid, prop,
> -                 XA_STRING, 8, PropModePrepend, &prop_ret[length],
> -                 (nitems - length));
> +             if (XGetWindowProperty(im->core.display,
> +                                    spec->lib_connect_wid, prop, 0L,
> +                                    ((length + bytes_after_ret + 3)/ 4),
> +                                    True, AnyPropertyType,
> +                                    &type_ret, &format_ret, &nitems,
> +                                    &bytes_after_ret,
> +                                    &prop_ret) == Success) {
> +                 XChangeProperty(im->core.display, spec->lib_connect_wid, 
> prop,
> +                                 XA_STRING, 8, PropModePrepend, 
> &prop_ret[length],
> +                                 (nitems - length));
> +             } else {
> +                 return False;
> +             }
>           }
>       } else {
>           (void)memcpy(buf, prop_ret, buf_len);
> @@ -393,10 +398,14 @@ _XimXGetReadData(
>  
>           if (bytes_after_ret > 0) {
>               XFree(prop_ret);
> -             XGetWindowProperty(im->core.display,
> -             spec->lib_connect_wid, prop, 0L,
> -             ((length + bytes_after_ret + 3)/ 4), True, AnyPropertyType,
> -             &type_ret, &format_ret, &nitems, &bytes_after_ret, &prop_ret);
> +             if (XGetWindowProperty(im->core.display,
> +                                    spec->lib_connect_wid, prop, 0L,
> +                                    ((length + bytes_after_ret + 3)/ 4),
> +                                    True, AnyPropertyType,
> +                                    &type_ret, &format_ret, &nitems,
> +                                    &bytes_after_ret, &prop_ret) != Success) 
> {
> +                 return False;
> +             }
>           }
>           XChangeProperty(im->core.display, spec->lib_connect_wid, prop,
>                   XA_STRING, 8, PropModePrepend, &prop_ret[buf_len], len);

Reviewed-by: Alan Coopersmith <[email protected]>

-- 
        -Alan Coopersmith-        [email protected]
         Oracle Solaris Platform Engineering: X Window System

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to