Message ID | 0af9839d3a8f27421b4c8f1220f9a2165d815ac2.1610748224.git.edvin.torok@citrix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v1,1/4] tools/ocaml/libs/xb: do not crash after xenbus is unmapped | expand |
diff --git a/tools/ocaml/libs/xb/xs_ring_stubs.c b/tools/ocaml/libs/xb/xs_ring_stubs.c index 7537a23949..7a91fdee75 100644 --- a/tools/ocaml/libs/xb/xs_ring_stubs.c +++ b/tools/ocaml/libs/xb/xs_ring_stubs.c @@ -32,6 +32,7 @@ #include <caml/fail.h> #include <caml/callback.h> +#include <sys/mman.h> #include "mmap_stubs.h" #define GET_C_STRUCT(a) ((struct mmap_interface *) a) @@ -166,6 +167,8 @@ CAMLprim value ml_interface_set_server_features(value interface, value v) { CAMLparam2(interface, v); struct xenstore_domain_interface *intf = GET_C_STRUCT(interface)->addr; + if (intf == (void*)MAP_FAILED) + caml_failwith("Interface closed"); intf->server_features = Int_val(v);
Xenmmap.unmap sets the address to MAP_FAILED in xenmmap_stubs.c. If due to a bug there were still references to the Xenbus and we attempt to use it then we crash. Raise an exception instead of crashing. (My initial version of fuzz testing had such a bug) Signed-off-by: Edwin Török <edvin.torok@citrix.com> --- tools/ocaml/libs/xb/xs_ring_stubs.c | 3 +++ 1 file changed, 3 insertions(+)