[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 3/3] libxl: hotplug scripts: stdin < /dev/null
Give hotplug scripts /dev/null for stdin. That way if they try read anything anything (which really they shouldn't), nothing odd will happen. Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> CC: Roger Pau Monne <roger.pau@xxxxxxxxxx> CC: Vasiliy Tolstov <v.tolstov@xxxxxxxxx> CC: Ian Campbell <Ian.Campbell@xxxxxxxxxx> --- tools/libxl/libxl_device.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c index 90f76b7..fa99f77 100644 --- a/tools/libxl/libxl_device.c +++ b/tools/libxl/libxl_device.c @@ -956,7 +956,7 @@ static void device_hotplug(libxl__egc *egc, libxl__ao_device *aodev) char *be_path = libxl__device_backend_path(gc, aodev->dev); char **args = NULL, **env = NULL; int rc = 0; - int hotplug; + int hotplug, nullfd = -1; pid_t pid; uint32_t domid; @@ -1021,6 +1021,13 @@ static void device_hotplug(libxl__egc *egc, libxl__ao_device *aodev) aodev->what = GCSPRINTF("%s %s", args[0], args[1]); LOG(DEBUG, "calling hotplug script: %s %s", args[0], args[1]); + nullfd = open("/dev/null", O_RDONLY); + if (nullfd < 0) { + LOG(ERROR, "unable to open /dev/null for hotplug script"); + rc = ERROR_FAIL; + goto out; + } + /* fork and execute hotplug script */ pid = libxl__ev_child_fork(gc, &aodev->child, device_hotplug_child_death_cb); if (pid == -1) { @@ -1031,16 +1038,18 @@ static void device_hotplug(libxl__egc *egc, libxl__ao_device *aodev) if (!pid) { /* child */ - libxl__exec(gc, -1, 2, -1, args[0], args, env); + libxl__exec(gc, nullfd, 2, -1, args[0], args, env); /* notreached */ abort(); } + close(nullfd); assert(libxl__ev_child_inuse(&aodev->child)); return; out: + if (nullfd >= 0) close(nullfd); aodev->rc = rc; device_hotplug_done(egc, aodev); return; -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |