static void setup(void) { struct group *junk; tst_require_root(); tst_sig(FORK, DEF_HANDLER, NULL); if (getpwnam("nobody") == NULL) tst_brkm(TBROK, NULL, "nobody must be a valid user."); nobody = *(getpwnam("nobody")); #define GET_GID(group) do { \ junk = getgrnam(#group); \ if (junk == NULL) { \ tst_brkm(TBROK, NULL, "%s must be a valid group", #group); \ } \ GID16_CHECK(junk->gr_gid, setregid, NULL); \ group = *(junk); \ } while (0) GET_GID(users); GET_GID(sys); GET_GID(bin); TEST_PAUSE; }
static void setup(void) { struct group *junk; tst_require_root(NULL); tst_sig(FORK, DEF_HANDLER, cleanup); ltpuser = getpwnam("nobody"); if (ltpuser == NULL) tst_brkm(TBROK, NULL, "getpwnam(\"nobody\") failed"); if (setgid(ltpuser->pw_gid) == -1) { tst_brkm(TBROK | TERRNO, NULL, "setgid failed to set the effective gid to %d", ltpuser->pw_gid); } if (setuid(ltpuser->pw_uid) == -1) { tst_brkm(TBROK | TERRNO, NULL, "setuid failed to to set the effective uid to %d", ltpuser->pw_uid); } #define GET_GID(group) do { \ junk = getgrnam(#group); \ if (junk == NULL) { \ tst_brkm(TBROK|TERRNO, NULL, "getgrnam(\"%s\") failed", #group); \ } \ GID16_CHECK(junk->gr_gid, setregid, NULL); \ group = *(junk); \ } while (0) GET_GID(root); GET_GID(nobody); GET_GID(bin); TEST_PAUSE; }