]> xenbits.xensource.com Git - xen.git/commitdiff
ocaml/xenctrl: Check return values from hypercalls
authorAndrew Cooper <andrew.cooper3@citrix.com>
Tue, 27 Jan 2015 20:38:11 +0000 (20:38 +0000)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Wed, 27 May 2015 16:03:36 +0000 (17:03 +0100)
rather than blindly continuing and possibly using negative values.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
CC: Ian Campbell <Ian.Campbell@citrix.com>
CC: Ian Jackson <Ian.Jackson@eu.citrix.com>
CC: Wei Liu <wei.liu2@citrix.com>
CC: Dave Scott <dave.scott@eu.citrix.com>
Acked-by: David Scott <dave.scott@citrix.com>
(cherry picked from commit 3380f5b6270e6fa4b24313f8808e7625e4c5a6ba)

tools/ocaml/libs/xc/xenctrl_stubs.c

index f0810ebd6a82259625de3cccdb9433912de92f24..92d064f65816c426c27ebf447917fa1e0aefff89 100644 (file)
@@ -457,6 +457,9 @@ CAMLprim value stub_xc_vcpu_getaffinity(value xch, value domid,
        int i, len = xc_get_max_cpus(_H(xch));
        int retval;
 
+       if (len < 1)
+               failwith_xc(_H(xch));
+
        c_cpumap = xc_cpumap_alloc(_H(xch));
        if (c_cpumap == NULL)
                failwith_xc(_H(xch));
@@ -821,6 +824,12 @@ CAMLprim value stub_xc_version_version(value xch)
 
        caml_enter_blocking_section();
        packed = xc_version(_H(xch), XENVER_version, NULL);
+       caml_leave_blocking_section();
+
+       if (packed < 0)
+               failwith_xc(_H(xch));
+
+       caml_enter_blocking_section();
        retval = xc_version(_H(xch), XENVER_extraversion, &extra);
        caml_leave_blocking_section();