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);
 	}
 
diff --git a/system.c b/system.c
index 5d39f0f..81fd393 100644
--- a/system.c
+++ b/system.c
@@ -395,7 +395,8 @@
 	buf = malloc(sz);
 	if (!buf)
 		return -ENOMEM;
-	getpwnam_r(user, &pw, buf, sz, &ppw);
+
+	int ret = getpwnam_r(user, &pw, buf, sz, &ppw);
 	/*
 	 * We're safe to free the buffer here. The strings inside |pw| point
 	 * inside |buf|, but we don't use any of them; this leaves the pointers
@@ -403,9 +404,11 @@
 	 * succeeded.
 	 */
 	free(buf);
-	/* getpwnam_r(3) does *not* set errno when |ppw| is NULL. */
+
+	if (ret != 0)
+		return -ret;  /* Error */
 	if (!ppw)
-		return -1;
+		return -ENOENT;  /* Not found */
 
 	*uid = ppw->pw_uid;
 	*gid = ppw->pw_gid;
@@ -431,16 +434,18 @@
 	buf = malloc(sz);
 	if (!buf)
 		return -ENOMEM;
-	getgrnam_r(group, &gr, buf, sz, &pgr);
+	int ret = getgrnam_r(group, &gr, buf, sz, &pgr);
 	/*
 	 * We're safe to free the buffer here. The strings inside gr point
 	 * inside buf, but we don't use any of them; this leaves the pointers
 	 * 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 (ret != 0)
+		return -ret;  /* Error */
 	if (!pgr)
-		return -1;
+		return -ENOENT;  /* Not found */
 
 	*gid = pgr->gr_gid;
 	return 0;
