From owner-p4-projects Sat Jul 27 13: 2:54 2002 Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8E8AB37B406; Sat, 27 Jul 2002 13:02:23 -0700 (PDT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.FreeBSD.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id F3F8237B418 for ; Sat, 27 Jul 2002 13:02:21 -0700 (PDT) Received: from freefall.freebsd.org (freefall.FreeBSD.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6063843E70 for ; Sat, 27 Jul 2002 13:02:04 -0700 (PDT) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from freefall.freebsd.org (perforce@localhost [127.0.0.1]) by freefall.freebsd.org (8.12.4/8.12.4) with ESMTP id g6RK1sJU022875 for ; Sat, 27 Jul 2002 13:01:54 -0700 (PDT) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by freefall.freebsd.org (8.12.4/8.12.4/Submit) id g6RJxsjs022276 for perforce@freebsd.org; Sat, 27 Jul 2002 12:59:54 -0700 (PDT) Date: Sat, 27 Jul 2002 12:59:54 -0700 (PDT) Message-Id: <200207271959.g6RJxsjs022276@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson Subject: PERFORCE change 15001 for review To: Perforce Change Reviews Sender: owner-p4-projects@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG http://people.freebsd.org/~peter/p4db/chv.cgi?CH=15001 Change 15001 by rwatson@rwatson_paprika on 2002/07/27 12:59:09 Teach ugidfw to speak usernames and group names as well as uids and gids, making it a lot easier to use. Affected files ... .. //depot/projects/trustedbsd/mac/usr.sbin/ugidfw/ugidfw.c#5 edit Differences ... ==== //depot/projects/trustedbsd/mac/usr.sbin/ugidfw/ugidfw.c#5 (text+ko) ==== @@ -41,6 +41,8 @@ #include +#include +#include #include #include #include @@ -69,6 +71,8 @@ void print_rule(int rulenum, struct mac_bsdextended_rule *rule) { + struct group *grp; + struct passwd *pwd; int anymode, unknownmode; printf("%d ", rulenum); @@ -77,20 +81,40 @@ printf("subject "); if (rule->mbr_subject.mbi_flags & MBI_NEGATED) printf("not "); - if (rule->mbr_subject.mbi_flags & MBI_UID_DEFINED) - printf("uid %u ", rule->mbr_subject.mbi_uid); - if (rule->mbr_subject.mbi_flags & MBI_GID_DEFINED) - printf("gid %u ", rule->mbr_subject.mbi_gid); + if (rule->mbr_subject.mbi_flags & MBI_UID_DEFINED) { + pwd = getpwuid(rule->mbr_subject.mbi_uid); + if (pwd != NULL) + printf("uid %s ", pwd->pw_name); + else + printf("uid %u ", rule->mbr_subject.mbi_uid); + } + if (rule->mbr_subject.mbi_flags & MBI_GID_DEFINED) { + grp = getgrgid(rule->mbr_subject.mbi_gid); + if (grp != NULL) + printf("gid %s ", grp->gr_name); + else + printf("gid %u ", rule->mbr_subject.mbi_gid); + } } if (rule->mbr_object.mbi_flags & (MBI_UID_DEFINED | MBI_GID_DEFINED)) { printf("object "); if (rule->mbr_object.mbi_flags & MBI_NEGATED) printf("not "); - if (rule->mbr_object.mbi_flags & MBI_UID_DEFINED) - printf("uid %u ", rule->mbr_object.mbi_uid); - if (rule->mbr_object.mbi_flags & MBI_GID_DEFINED) - printf("gid %u ", rule->mbr_object.mbi_gid); + if (rule->mbr_object.mbi_flags & MBI_UID_DEFINED) { + pwd = getpwuid(rule->mbr_object.mbi_uid); + if (pwd != NULL) + printf("uid %s ", pwd->pw_name); + else + printf("uid %u ", rule->mbr_object.mbi_uid); + } + if (rule->mbr_object.mbi_flags & MBI_GID_DEFINED) { + grp = getgrgid(rule->mbr_object.mbi_gid); + if (grp != NULL) + printf("gid %s ", grp->gr_name); + else + printf("gid %u ", rule->mbr_object.mbi_gid); + } } printf("mode "); @@ -119,6 +143,8 @@ parse_identity(int argc, char *argv[], struct mac_bsdextended_identity *identity) { + struct group *grp; + struct passwd *pwd; int uid_seen, gid_seen, not_seen; int current; char *endp; @@ -154,13 +180,18 @@ fprintf(stderr, "uid short.\n"); return (-1); } - value = strtol(argv[current+1], &endp, 10); - if (*endp != '\0') { - fprintf(stderr, "invalid uid: '%s'\n", - argv[current+1]); - return (-1); + pwd = getpwnam(argv[current+1]); + if (pwd != NULL) + uid = pwd->pw_uid; + else { + value = strtol(argv[current+1], &endp, 10); + if (*endp != '\0') { + fprintf(stderr, "invalid uid: '%s'\n", + argv[current+1]); + return (-1); + } + uid = value; } - uid = value; uid_seen = 1; current += 2; } else if (strcmp("gid", argv[current]) == 0) { @@ -168,13 +199,18 @@ fprintf(stderr, "gid short.\n"); return (-1); } - value = strtol(argv[current+1], &endp, 10); - if (*endp != '\0') { - fprintf(stderr, "invalid gid: '%s'\n", - argv[current+1]); - return (-1); + grp = getgrnam(argv[current+1]); + if (grp != NULL) + gid = grp->gr_gid; + else { + value = strtol(argv[current+1], &endp, 10); + if (*endp != '\0') { + fprintf(stderr, "invalid gid: '%s'\n", + argv[current+1]); + return (-1); + } + gid = value; } - gid = value; gid_seen = 1; current += 2; } else { To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe p4-projects" in the body of the message