Closes #2033.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
lxc_list_init(&new->caps);
lxc_list_init(&new->keepcaps);
lxc_list_init(&new->id_map);
+ new->root_nsuid_map = NULL;
+ new->root_nsgid_map = NULL;
lxc_list_init(&new->includes);
lxc_list_init(&new->aliens);
lxc_list_init(&new->environment);
signed long personality;
struct utsname *utsname;
struct lxc_list cgroup;
- struct lxc_list id_map;
+ struct {
+ struct lxc_list id_map;
+ /* Pointer to the idmap entry for the container's root uid in
+ * the id_map list. Do not free! */
+ struct id_map *root_nsuid_map;
+ /* Pointer to the idmap entry for the container's root gid in
+ * the id_map list. Do not free! */
+ struct id_map *root_nsgid_map;
+ };
struct lxc_list network;
int auto_mounts;
struct lxc_list mount_list;
if (ret < 0)
goto on_error;
- 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')
idmap->idtype = ID_TYPE_UID;
else if (type == 'g')
idmap->range = range;
idmaplist->elem = idmap;
lxc_list_add_tail(&lxc_conf->id_map, idmaplist);
+
+ if (!lxc_conf->root_nsuid_map && idmap->idtype == ID_TYPE_UID)
+ if (idmap->nsid == 0)
+ lxc_conf->root_nsuid_map = idmap;
+
+
+ if (!lxc_conf->root_nsuid_map && idmap->idtype == ID_TYPE_GID)
+ if (idmap->nsid == 0)
+ lxc_conf->root_nsgid_map = idmap;
+
idmap = NULL;
return 0;