From 5c51e31e0e794d8fcdc1225c65985571c9820949 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sun, 20 Aug 2006 18:24:34 +0200 Subject: vol_id: use primary group of 'nobody' instead of 'nogroup' This fixes a Fedora issue not having the group 'nogroup'. --- extras/volume_id/vol_id.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'extras') diff --git a/extras/volume_id/vol_id.c b/extras/volume_id/vol_id.c index 7bdfda17e7..0a1b756fa3 100644 --- a/extras/volume_id/vol_id.c +++ b/extras/volume_id/vol_id.c @@ -27,6 +27,8 @@ #include #include #include +#include +#include #include #include @@ -131,8 +133,7 @@ int main(int argc, char *argv[]) int skip_raid = 0; int probe_all = 0; const char *node = NULL; - uid_t nobody_uid; - gid_t nobody_gid; + struct passwd *pw; int retval; int rc = 0; @@ -180,13 +181,14 @@ int main(int argc, char *argv[]) size = 0; dbg("BLKGETSIZE64=%llu", size); - /* drop all privileges */ - nobody_uid = lookup_user("nobody"); - nobody_gid = lookup_group("nogroup"); - if (nobody_uid > 0 && nobody_gid > 0) { + /* try to drop all privileges before reading disk content */ + pw = getpwnam ("nobody"); + if (pw != NULL && pw->pw_uid > 0 && pw->pw_gid > 0) { + dbg("dropping privileges to %u:%u", (unsigned int)pw->pw_uid, (unsigned int)pw->pw_gid); if (setgroups(0, NULL) != 0 || - setgid(nobody_gid) != 0 || - setuid(nobody_uid) != 0) { + setgid(pw->pw_gid) != 0 || + setuid(pw->pw_uid) != 0) { + fprintf(stderr, "error dropping privileges: %s\n", strerror(errno)); rc = 3; goto exit; } -- cgit v1.2.3-54-g00ecf