mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-06 17:18:32 +00:00
User and group identifiers the rctl(8) utility receives from the kernel
are always in numeric form; don't try to resolve them by names. This speeds up rule listing with large rulesets by about 50%. MFC after: 1 month Sponsored by: The FreeBSD Foundation
This commit is contained in:
parent
d3214e8d6d
commit
478f7a726b
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=291445
|
@ -193,7 +193,7 @@ humanize_ids(char *rule)
|
|||
struct passwd *pwd;
|
||||
struct group *grp;
|
||||
const char *subject, *textid, *rest;
|
||||
char *humanized;
|
||||
char *end, *humanized;
|
||||
|
||||
subject = strsep(&rule, ":");
|
||||
textid = strsep(&rule, ":");
|
||||
|
@ -206,12 +206,16 @@ humanize_ids(char *rule)
|
|||
|
||||
/* Replace numerical user and group ids with names. */
|
||||
if (strcasecmp(subject, "user") == 0) {
|
||||
id = parse_user(textid);
|
||||
id = strtod(textid, &end);
|
||||
if ((size_t)(end - textid) != strlen(textid))
|
||||
errx(1, "malformed uid '%s'", textid);
|
||||
pwd = getpwuid(id);
|
||||
if (pwd != NULL)
|
||||
textid = pwd->pw_name;
|
||||
} else if (strcasecmp(subject, "group") == 0) {
|
||||
id = parse_group(textid);
|
||||
id = strtod(textid, &end);
|
||||
if ((size_t)(end - textid) != strlen(textid))
|
||||
errx(1, "malformed gid '%s'", textid);
|
||||
grp = getgrgid(id);
|
||||
if (grp != NULL)
|
||||
textid = grp->gr_name;
|
||||
|
|
Loading…
Reference in a new issue