Improve diagnostics for lookup_{user,group}
Make sure to pass error codes back to callers and include them in
diagnostics printed by minijail0.
Bug: chromium:1055067
Test: Compiles and passes tests.
Change-Id: Ic07c5917e7826dd7cf2bfbd3483ad97ad199b670
diff --git a/minijail0_cli.c b/minijail0_cli.c
index c8b700b..c3da5de 100644
--- a/minijail0_cli.c
+++ b/minijail0_cli.c
@@ -40,13 +40,16 @@
return;
}
- if (lookup_user(arg, out_uid, out_gid)) {
- fprintf(stderr, "Bad user: '%s'\n", arg);
+ int ret = lookup_user(arg, out_uid, out_gid);
+ if (ret) {
+ fprintf(stderr, "Bad user '%s': %s\n", arg, strerror(-ret));
exit(1);
}
- if (minijail_change_user(j, arg)) {
- fprintf(stderr, "Bad user: '%s'\n", arg);
+ ret = minijail_change_user(j, arg);
+ if (ret) {
+ fprintf(stderr, "minijail_change_user('%s') failed: %s\n", arg,
+ strerror(-ret));
exit(1);
}
}
@@ -61,15 +64,13 @@
return;
}
- if (lookup_group(arg, out_gid)) {
- fprintf(stderr, "Bad group: '%s'\n", arg);
+ int ret = lookup_group(arg, out_gid);
+ if (ret) {
+ fprintf(stderr, "Bad group '%s': %s\n", arg, strerror(-ret));
exit(1);
}
- if (minijail_change_group(j, arg)) {
- fprintf(stderr, "Bad group: '%s'\n", arg);
- exit(1);
- }
+ minijail_change_gid(j, *out_gid);
}
/*
@@ -81,15 +82,16 @@
char *end = NULL;
int groupid = strtod(arg, &end);
gid_t gid;
+ int ret;
if (!*end && *arg) {
/* A gid number has been specified, proceed. */
gid = groupid;
- } else if (lookup_group(arg, &gid)) {
+ } else if ((ret = lookup_group(arg, &gid))) {
/*
* A group name has been specified,
* but doesn't exist: we bail out.
*/
- fprintf(stderr, "Bad group: '%s'\n", arg);
+ fprintf(stderr, "Bad group '%s': %s\n", arg, strerror(-ret));
exit(1);
}