From: Jason Andryuk Date: Thu, 11 Jun 2020 03:29:30 +0000 (-0400) Subject: vchan-socket-proxy: Check xs_watch return value X-Git-Tag: archive/raspbian/4.14.0+80-gd101b417b7-1+rpi1^2~63^2~46 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=20b65c15a38d98f31f212925a3e5a733dce5b477;p=xen.git vchan-socket-proxy: Check xs_watch return value Check the return value of xs_watch and error out on failure. This was found by Citrix's Coverity. Signed-off-by: Jason Andryuk Acked-by: Wei Liu Reviewed-by: Marek Marczykowski-Górecki Release-acked-by: Paul Durrant --- diff --git a/tools/libvchan/vchan-socket-proxy.c b/tools/libvchan/vchan-socket-proxy.c index c6a83e4712..196f6016b9 100644 --- a/tools/libvchan/vchan-socket-proxy.c +++ b/tools/libvchan/vchan-socket-proxy.c @@ -232,8 +232,15 @@ static struct libxenvchan *connect_vchan(int domid, const char *path) { goto out; } /* wait for vchan server to create *path* */ - xs_watch(xs, path, "path"); - xs_watch(xs, "@releaseDomain", "release"); + if (!xs_watch(xs, path, "path")) { + fprintf(stderr, "xs_watch(%s) failed.\n", path); + goto out; + } + if (!xs_watch(xs, "@releaseDomain", "release")) { + fprintf(stderr, "xs_watch(@releaseDomain failed.\n"); + goto out; + } + while ((watch_ret = xs_read_watch(xs, &watch_num))) { /* don't care about exact which fired the watch */ free(watch_ret);