mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-09 08:00:51 +00:00
confile: check allocation succeeds
Signed-off-by: Michael Santos <michael.santos@gmail.com> Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
This commit is contained in:
parent
95642a1068
commit
bf83c5b90b
@ -195,7 +195,7 @@ static struct lxc_netdev *network_netdev(const char *key, const char *value,
|
|||||||
|
|
||||||
static int network_ifname(char **valuep, char *value)
|
static int network_ifname(char **valuep, char *value)
|
||||||
{
|
{
|
||||||
if (strlen(value) > IFNAMSIZ) {
|
if (strlen(value) >= IFNAMSIZ) {
|
||||||
ERROR("invalid interface name: %s", value);
|
ERROR("invalid interface name: %s", value);
|
||||||
return -1;
|
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 *token = "lxc.cgroup.";
|
||||||
char *subkey;
|
char *subkey;
|
||||||
struct lxc_list *cglist;
|
struct lxc_list *cglist = NULL;
|
||||||
struct lxc_cgroup *cgelem;
|
struct lxc_cgroup *cgelem = NULL;
|
||||||
|
|
||||||
subkey = strstr(key, token);
|
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));
|
cglist = malloc(sizeof(*cglist));
|
||||||
if (!cglist)
|
if (!cglist)
|
||||||
return -1;
|
goto out;
|
||||||
|
|
||||||
cgelem = malloc(sizeof(*cgelem));
|
cgelem = malloc(sizeof(*cgelem));
|
||||||
if (!cgelem) {
|
if (!cgelem)
|
||||||
free(cglist);
|
goto out;
|
||||||
return -1;
|
memset(cgelem, 0, sizeof(*cgelem));
|
||||||
}
|
|
||||||
|
|
||||||
cgelem->subsystem = strdup(subkey);
|
cgelem->subsystem = strdup(subkey);
|
||||||
cgelem->value = strdup(value);
|
cgelem->value = strdup(value);
|
||||||
|
|
||||||
|
if (!cgelem->subsystem || !cgelem->value)
|
||||||
|
goto out;
|
||||||
|
|
||||||
cglist->elem = cgelem;
|
cglist->elem = cgelem;
|
||||||
|
|
||||||
lxc_list_add_tail(&lxc_conf->cgroup, cglist);
|
lxc_list_add_tail(&lxc_conf->cgroup, cglist);
|
||||||
|
|
||||||
return 0;
|
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)
|
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;
|
return -1;
|
||||||
|
|
||||||
mntelem = strdup(value);
|
mntelem = strdup(value);
|
||||||
|
if (!mntelem)
|
||||||
|
return -1;
|
||||||
mntlist->elem = mntelem;
|
mntlist->elem = mntelem;
|
||||||
|
|
||||||
lxc_list_add_tail(&lxc_conf->mount_list, mntlist);
|
lxc_list_add_tail(&lxc_conf->mount_list, mntlist);
|
||||||
|
Loading…
Reference in New Issue
Block a user