lxc-usernsexec: fix the default map behavior

We were finding it, but not saving it.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
This commit is contained in:
Serge Hallyn 2013-11-20 10:07:40 -06:00
parent 2716b48772
commit c7e426bef6

View File

@ -158,9 +158,13 @@ out_free_map:
} }
/* /*
* go through /etc/subuids and /etc/subgids to find this user's * This is called if the user did not pass any uid ranges in
* allowed map. We only use the first one (bc otherwise we're * through -m flags. It's called once to get the default uid
* not sure which ns ids he wants to use). * map, and once for the default gid map.
* Go through /etc/subuids and /etc/subgids to find this user's
* allowed map. We only use the first one for each of uid and
* gid, because otherwise we're not sure which entries the user
* wanted.
*/ */
static int read_default_map(char *fnam, char which, char *username) static int read_default_map(char *fnam, char which, char *username)
{ {
@ -185,8 +189,11 @@ static int read_default_map(char *fnam, char which, char *username)
if (!p2) if (!p2)
continue; continue;
newmap = malloc(sizeof(*newmap)); newmap = malloc(sizeof(*newmap));
if (!newmap) if (!newmap) {
fclose(fin);
free(line);
return -1; return -1;
}
newmap->host_id = atol(p1+1); newmap->host_id = atol(p1+1);
newmap->range = atol(p2+1); newmap->range = atol(p2+1);
newmap->ns_id = 0; newmap->ns_id = 0;
@ -195,13 +202,13 @@ static int read_default_map(char *fnam, char which, char *username)
newmap->next = active_map; newmap->next = active_map;
else else
newmap->next = NULL; newmap->next = NULL;
active_map = newmap;
break; break;
} }
if (line) if (line)
free(line); free(line);
fclose(fin); fclose(fin);
free(newmap);
return 0; return 0;
} }