Signed-off-by: Michael Santos <michael.san...@gmail.com> --- src/lxc/confile.c | 37 +++++++++++++++++++++++++++++-------- 1 files changed, 29 insertions(+), 8 deletions(-)
diff --git a/src/lxc/confile.c b/src/lxc/confile.c index 1d30cba..791f04f 100644 --- a/src/lxc/confile.c +++ b/src/lxc/confile.c @@ -195,7 +195,7 @@ static struct lxc_netdev *network_netdev(const char *key, const char *value, static int network_ifname(char **valuep, char *value) { - if (strlen(value) > IFNAMSIZ) { + if (strlen(value) >= IFNAMSIZ) { ERROR("invalid interface name: %s", value); return -1; } @@ -553,8 +553,8 @@ static int config_cgroup(const char *key, char *value, struct lxc_conf *lxc_conf { char *token = "lxc.cgroup."; char *subkey; - struct lxc_list *cglist; - struct lxc_cgroup *cgelem; + struct lxc_list *cglist = NULL; + struct lxc_cgroup *cgelem = NULL; subkey = strstr(key, token); @@ -571,21 +571,40 @@ static int config_cgroup(const char *key, char *value, struct lxc_conf *lxc_conf cglist = malloc(sizeof(*cglist)); if (!cglist) - return -1; + goto out; cgelem = malloc(sizeof(*cgelem)); - if (!cgelem) { - free(cglist); - return -1; - } + if (!cgelem) + goto out; + memset(cgelem, 0, sizeof(*cgelem)); cgelem->subsystem = strdup(subkey); cgelem->value = strdup(value); + + if (!cgelem->subsystem || !cgelem->value) + goto out; + cglist->elem = cgelem; lxc_list_add_tail(&lxc_conf->cgroup, cglist); return 0; + +out: + if (cglist) + free(cglist); + + if (cgelem) { + if (cgelem->subsystem) + free(cgelem->subsystem); + + if (cgelem->value) + free(cgelem->value); + + free(cgelem); + } + + return -1; } static int config_fstab(const char *key, char *value, struct lxc_conf *lxc_conf) @@ -631,6 +650,8 @@ static int config_mount(const char *key, char *value, struct lxc_conf *lxc_conf) return -1; mntelem = strdup(value); + if (!mntelem) + return -1; mntlist->elem = mntelem; lxc_list_add_tail(&lxc_conf->mount_list, mntlist); -- 1.7.0.4 ------------------------------------------------------------------------------ Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d _______________________________________________ Lxc-devel mailing list Lxc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lxc-devel