Author: trasz
Date: Sun Nov 29 11:30:17 2015
New Revision: 291445
URL: https://svnweb.freebsd.org/changeset/base/291445

Log:
  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

Modified:
  head/usr.bin/rctl/rctl.c

Modified: head/usr.bin/rctl/rctl.c
==============================================================================
--- head/usr.bin/rctl/rctl.c    Sun Nov 29 11:28:04 2015        (r291444)
+++ head/usr.bin/rctl/rctl.c    Sun Nov 29 11:30:17 2015        (r291445)
@@ -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;
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to