Commit 6f970950 by Stéphane Graber

confile: Don't crash on invalid id_map

parent 00903d7d
...@@ -1300,13 +1300,10 @@ static int config_idmap(const char *key, const char *value, struct lxc_conf *lxc ...@@ -1300,13 +1300,10 @@ static int config_idmap(const char *key, const char *value, struct lxc_conf *lxc
goto out; goto out;
memset(idmap, 0, sizeof(*idmap)); memset(idmap, 0, sizeof(*idmap));
idmaplist->elem = idmap;
lxc_list_add_tail(&lxc_conf->id_map, idmaplist);
ret = sscanf(value, "%c %lu %lu %lu", &type, &nsid, &hostid, &range); ret = sscanf(value, "%c %lu %lu %lu", &type, &nsid, &hostid, &range);
if (ret != 4) if (ret != 4)
goto out; goto out;
INFO("read uid map: type %c nsid %lu hostid %lu range %lu", type, nsid, hostid, range); INFO("read uid map: type %c nsid %lu hostid %lu range %lu", type, nsid, hostid, range);
if (type == 'u') if (type == 'u')
idmap->idtype = ID_TYPE_UID; idmap->idtype = ID_TYPE_UID;
...@@ -1314,10 +1311,14 @@ static int config_idmap(const char *key, const char *value, struct lxc_conf *lxc ...@@ -1314,10 +1311,14 @@ static int config_idmap(const char *key, const char *value, struct lxc_conf *lxc
idmap->idtype = ID_TYPE_GID; idmap->idtype = ID_TYPE_GID;
else else
goto out; goto out;
idmap->hostid = hostid; idmap->hostid = hostid;
idmap->nsid = nsid; idmap->nsid = nsid;
idmap->range = range; idmap->range = range;
idmaplist->elem = idmap;
lxc_list_add_tail(&lxc_conf->id_map, idmaplist);
return 0; return 0;
out: out:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment