[PATCH] xhost: check return value of X{Add,Remove}Host

Alan Coopersmith alan.coopersmith at oracle.com
Sun Jul 10 21:50:36 PDT 2011


On 07/ 9/11 01:05 PM, Kees Cook wrote:
> In the ServerInterpreted case, XAddHost and XRemoveHost are capable of
> failing when they lack request buffer memory. Notice this situation,
> and report correctly.
> 
> Signed-off-by: Kees Cook <kees.cook at canonical.com>
> ---
>  xhost.c |   11 +++++++----
>  1 files changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/xhost.c b/xhost.c
> index c7faeff..49d4690 100644
> --- a/xhost.c
> +++ b/xhost.c
> @@ -450,7 +450,7 @@ change_host(Display *dpy, char *name, Bool add)
>  
>      if (family == FamilyServerInterpreted) {
>  	XServerInterpretedAddress siaddr;
> -	int namelen;
> +	int namelen, rc;
>  
>  	cp = strchr(name, ':');
>  	if (cp == NULL || cp == name) {
> @@ -472,11 +472,14 @@ change_host(Display *dpy, char *name, Bool add)
>  	siaddr.value = siaddr.type + siaddr.typelength + 1;
>  	siaddr.valuelength = namelen - (siaddr.typelength + 1);
>  	if (add)
> -	    XAddHost(dpy, &ha);
> +	    rc = XAddHost(dpy, &ha);
>  	else
> -	    XRemoveHost(dpy, &ha);
> +	    rc = XRemoveHost(dpy, &ha);
>  	free(siaddr.type);
> -	printf( "%s %s\n", name, add ? add_msg : remove_msg);
> +	printf( "%s %s%s\n", name, rc == 1 ? "" : "failed when ",
> +		add ? add_msg : remove_msg);
> +	if (rc != 1)
> +	    return 0;
>  	return 1;
>      }
>  

Reviewed-by: Alan Coopersmith <alan.coopersmith at oracle.com>

-- 
	-Alan Coopersmith-        alan.coopersmith at oracle.com
	 Oracle Solaris Platform Engineering: X Window System



More information about the xorg-devel mailing list