[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