diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index 7e54c02a21..4dd71f1c3d 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -1180,6 +1180,11 @@ void libxl__spawn_local_dm(libxl__egc *egc, libxl__dm_spawn_state *dmss) logfile_w = open(logfile, O_WRONLY|O_CREAT|O_APPEND, 0644); free(logfile); null = open("/dev/null", O_RDONLY); + if (null < 0) { + LOGE(ERROR, "unable to open /dev/null"); + rc = ERROR_FAIL; + goto out_close; + } const char *dom_path = libxl__xs_get_dompath(gc, domid); spawn->pidpath = GCSPRINTF("%s/%s", dom_path, "image/device-model-pid"); @@ -1227,8 +1232,8 @@ retry_transaction: rc = 0; out_close: - close(null); - close(logfile_w); + if (null >= 0) close(null); + if (logfile_w >= 0) close(logfile_w); out: if (rc) device_model_spawn_outcome(egc, dmss, rc);