From bab7f84ade84ceaddb08b6948792d49b3d04b897 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 8 Nov 2017 16:52:58 +0000 Subject: [PATCH] Use -safe-string and fix the library. Note this changes the type of the cpumap from string to bytes, since (by the design of the API) it must be mutated. --- libvirt/Makefile.in | 4 ++-- libvirt/libvirt.ml | 10 +++++----- libvirt/libvirt.mli | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/libvirt/Makefile.in b/libvirt/Makefile.in index cf614fc..1eb846b 100644 --- a/libvirt/Makefile.in +++ b/libvirt/Makefile.in @@ -31,11 +31,11 @@ OCAMLMKLIB = @OCAMLMKLIB@ ifneq ($(OCAMLFIND),) OCAMLCPACKAGES := -package unix -OCAMLCFLAGS := -g -warn-error CDEFLMPSUVYZX-3 +OCAMLCFLAGS := -g -warn-error CDEFLMPSUVYZX-3 -safe-string OCAMLCLIBS := -linkpkg else OCAMLCINCS := -OCAMLCFLAGS := -g -warn-error CDEFLMPSUVYZX-3 +OCAMLCFLAGS := -g -warn-error CDEFLMPSUVYZX-3 -safe-string OCAMLCLIBS := unix.cma endif diff --git a/libvirt/libvirt.ml b/libvirt/libvirt.ml index d03a127..7e1e470 100644 --- a/libvirt/libvirt.ml +++ b/libvirt/libvirt.ml @@ -92,13 +92,13 @@ struct (* See VIR_USE_CPU, VIR_UNUSE_CPU, VIR_CPU_USABLE macros defined in . *) let use_cpu cpumap cpu = - cpumap.[cpu/8] <- - Char.chr (Char.code cpumap.[cpu/8] lor (1 lsl (cpu mod 8))) + Bytes.set cpumap (cpu/8) + (Char.chr (Char.code (Bytes.get cpumap (cpu/8)) lor (1 lsl (cpu mod 8)))) let unuse_cpu cpumap cpu = - cpumap.[cpu/8] <- - Char.chr (Char.code cpumap.[cpu/8] land (lnot (1 lsl (cpu mod 8)))) + Bytes.set cpumap (cpu/8) + (Char.chr (Char.code (Bytes.get cpumap (cpu/8)) land (lnot (1 lsl (cpu mod 8))))) let cpu_usable cpumaps maplen vcpu cpu = - Char.code cpumaps.[vcpu*maplen + cpu/8] land (1 lsl (cpu mod 8)) <> 0 + Char.code (Bytes.get cpumaps (vcpu*maplen + cpu/8)) land (1 lsl (cpu mod 8)) <> 0 external set_keep_alive : [>`R] t -> int -> int -> unit = "ocaml_libvirt_connect_set_keep_alive" diff --git a/libvirt/libvirt.mli b/libvirt/libvirt.mli index dc0033b..87f50f5 100644 --- a/libvirt/libvirt.mli +++ b/libvirt/libvirt.mli @@ -376,11 +376,11 @@ sig CPU map between a single virtual and all physical CPUs of a domain. *) - val use_cpu : string -> int -> unit + val use_cpu : bytes -> int -> unit (** [use_cpu cpumap cpu] marks [cpu] as usable in [cpumap]. *) - val unuse_cpu : string -> int -> unit + val unuse_cpu : bytes -> int -> unit (** [unuse_cpu cpumap cpu] marks [cpu] as not usable in [cpumap]. *) - val cpu_usable : string -> int -> int -> int -> bool + val cpu_usable : bytes -> int -> int -> int -> bool (** [cpu_usable cpumaps maplen vcpu cpu] checks returns true iff the [cpu] is usable by [vcpu]. *) -- 1.8.3.1