Fix minijail_change_{user|group} with invalid users/groups.
BUG=chromium:356736
TEST='minijail0 -u <invalid> -- /usr/bin/id' fails.
TEST='minijail0 -g <invalid> -- /usr/bin/id' fails.
Change-Id: I0e1a35f5c582060bade53edb7cfda3eb1892d83c
Reviewed-on: https://chromium-review.googlesource.com/191701
Tested-by: Jorge Lucangeli Obes <jorgelo@chromium.org>
Reviewed-by: Nam Nguyen <namnguyen@chromium.org>
Commit-Queue: Jorge Lucangeli Obes <jorgelo@chromium.org>
diff --git a/libminijail.c b/libminijail.c
index cea3088..8a1300d 100644
--- a/libminijail.c
+++ b/libminijail.c
@@ -140,8 +140,9 @@
* dangling but it's safe. ppw points at pw if getpwnam_r succeeded.
*/
free(buf);
+ /* getpwnam_r(3) does *not* set errno when |ppw| is NULL. */
if (!ppw)
- return -errno;
+ return -1;
minijail_change_uid(j, ppw->pw_uid);
j->user = strdup(user);
if (!j->user)
@@ -173,8 +174,9 @@
* dangling but it's safe. pgr points at gr if getgrnam_r succeeded.
*/
free(buf);
+ /* getgrnam_r(3) does *not* set errno when |pgr| is NULL. */
if (!pgr)
- return -errno;
+ return -1;
minijail_change_gid(j, pgr->gr_gid);
return 0;
}