nspawn: determine_uid_shift before forking

It is needed in one branch of the fork, but calculated in another
branch.

Failing to do this means using --private-users without specifying a uid
shift always fails because it tries to shift the uid to UID_INVALID.
This commit is contained in:
Richard Maw
2015-06-30 13:41:41 +00:00
parent 9ebdb1e057
commit 7fe2bb84c4

View File

@@ -4313,10 +4313,6 @@ static int outer_child(
if (r < 0)
return r;
r = determine_uid_shift(directory);
if (r < 0)
return r;
/* Turn directory into bind mount */
if (mount(directory, directory, NULL, MS_BIND|MS_REC, NULL) < 0)
return log_error_errno(errno, "Failed to make bind mount: %m");
@@ -4495,6 +4491,10 @@ int main(int argc, char *argv[]) {
if (r < 0)
goto finish;
r = determine_uid_shift(arg_directory);
if (r < 0)
return r;
if (geteuid() != 0) {
log_error("Need to be root.");
r = -EPERM;