From: Robert Schiele Date: Fri, 21 Aug 2015 05:35:34 +0000 (+0200) Subject: check for NULL pointers before calling setenv() X-Git-Tag: lxc-1.1.4~52^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eec49e00f466c4ad9e61ca0ff9f790242c6805fe;p=thirdparty%2Flxc.git check for NULL pointers before calling setenv() Latest glibc release actually honours calling setenv with a NULL pointer by causing SIGSEGV but checking pointers before submitting to any system function is a good idea anyway. Signed-off-by: Robert Schiele --- diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c index 09ff06311..b988821a1 100644 --- a/src/lxc/lxccontainer.c +++ b/src/lxc/lxccontainer.c @@ -2710,19 +2710,19 @@ static int clone_update_rootfs(struct clone_update_data *data) if (!lxc_list_empty(&conf->hooks[LXCHOOK_CLONE])) { /* Start of environment variable setup for hooks */ - if (setenv("LXC_SRC_NAME", c0->name, 1)) { + if (c0->name && setenv("LXC_SRC_NAME", c0->name, 1)) { SYSERROR("failed to set environment variable for source container name"); } - if (setenv("LXC_NAME", c->name, 1)) { + if (c->name && setenv("LXC_NAME", c->name, 1)) { SYSERROR("failed to set environment variable for container name"); } - if (setenv("LXC_CONFIG_FILE", conf->rcfile, 1)) { + if (conf->rcfile && setenv("LXC_CONFIG_FILE", conf->rcfile, 1)) { SYSERROR("failed to set environment variable for config path"); } - if (setenv("LXC_ROOTFS_MOUNT", bdev->dest, 1)) { + if (bdev->dest && setenv("LXC_ROOTFS_MOUNT", bdev->dest, 1)) { SYSERROR("failed to set environment variable for rootfs mount"); } - if (setenv("LXC_ROOTFS_PATH", conf->rootfs.path, 1)) { + if (conf->rootfs.path && setenv("LXC_ROOTFS_PATH", conf->rootfs.path, 1)) { SYSERROR("failed to set environment variable for rootfs mount"); } diff --git a/src/lxc/start.c b/src/lxc/start.c index 2fc026ef3..ad8867eb5 100644 --- a/src/lxc/start.c +++ b/src/lxc/start.c @@ -406,16 +406,16 @@ struct lxc_handler *lxc_init(const char *name, struct lxc_conf *conf, const char } /* Start of environment variable setup for hooks */ - if (setenv("LXC_NAME", name, 1)) { + if (name && setenv("LXC_NAME", name, 1)) { SYSERROR("failed to set environment variable for container name"); } - if (setenv("LXC_CONFIG_FILE", conf->rcfile, 1)) { + if (conf->rcfile && setenv("LXC_CONFIG_FILE", conf->rcfile, 1)) { SYSERROR("failed to set environment variable for config path"); } - if (setenv("LXC_ROOTFS_MOUNT", conf->rootfs.mount, 1)) { + if (conf->rootfs.mount && setenv("LXC_ROOTFS_MOUNT", conf->rootfs.mount, 1)) { SYSERROR("failed to set environment variable for rootfs mount"); } - if (setenv("LXC_ROOTFS_PATH", conf->rootfs.path, 1)) { + if (conf->rootfs.path && setenv("LXC_ROOTFS_PATH", conf->rootfs.path, 1)) { SYSERROR("failed to set environment variable for rootfs mount"); } if (conf->console.path && setenv("LXC_CONSOLE", conf->console.path, 1)) {