> On 23 Jul 2015, at 09:38, Andrew Cooper <andrew.coop...@citrix.com> wrote: > > On 23/07/2015 08:59, Wei Liu wrote: >> Signed-off-by: Wei Liu <wei.l...@citrix.com> >> --- >> Cc: dave.sc...@eu.citrix.com >> >> Please check if the use of caml_failwith is correct. > > This issue I have a different patch for, which could be 4.6 material, if > it weren't for the same issue as identified in patch 12. > > In this case, Ocaml strings may contain embedded NULs which generally > makes the use of the strxxx() functions incorrect. OTOH, the first > thing libxl will do is assume that they are NUL terminated, so it > probably isn't too much of a problem.
Yeah I would assume if my OCaml program sent libxl a legal OCaml string containing NULLs, that libxl would end up truncating it at the first NULL. I think it would be ok to document this at the OCaml level. Cheers, Dave > > There is already a dup_String_Val() function which attempts to deal with > this, although it has failure cases from integer overflows. > > ~Andrew > >> --- >> tools/ocaml/libs/xl/xenlight_stubs.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/tools/ocaml/libs/xl/xenlight_stubs.c >> b/tools/ocaml/libs/xl/xenlight_stubs.c >> index 7b8d6db..dccd7ed 100644 >> --- a/tools/ocaml/libs/xl/xenlight_stubs.c >> +++ b/tools/ocaml/libs/xl/xenlight_stubs.c >> @@ -780,6 +780,10 @@ value stub_xl_device_disk_of_vdev(value ctx, value >> domid, value vdev) >> >> c_vdev = strdup(String_val(vdev)); >> >> + if (!c_vdev) { >> + caml_failwith("Failed to duplicate vdev string."); >> + } >> + >> caml_enter_blocking_section(); >> libxl_vdev_to_device_disk(CTX, c_domid, c_vdev, &c_disk); >> caml_leave_blocking_section(); > _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel