]> git.cameronkatri.com Git - pw-darwin.git/blobdiff - libc/gen/pw_scan.c
Don't forget to '\n'-terminate new entries. This unbreaks chpass -a.
[pw-darwin.git] / libc / gen / pw_scan.c
index 95328a8b2d2f7935e08992685fc27c9ac68267fe..e785511d2cae0c66f2b908ba882a036f24c38c2a 100644 (file)
@@ -104,7 +104,7 @@ __pw_scan(char *bp, struct passwd *pw, int flags)
                        warnx("%s > max uid value (%lu)", p, ULONG_MAX);
                return (0);
        }
-       if (*ep != '\0' || ep == p) {
+       if (*ep != '\0') {
                if (flags & _PWSCAN_WARN)
                        warnx("%s uid is incorrect", p);
                return (0);
@@ -124,13 +124,20 @@ __pw_scan(char *bp, struct passwd *pw, int flags)
                goto fmt;
        if (p[0])
                pw->pw_fields |= _PWF_GID;
+       else {
+               if (pw->pw_name[0] != '+' && pw->pw_name[0] != '-') {
+                       if (flags & _PWSCAN_WARN)
+                               warnx("no gid for user %s", pw->pw_name);
+                       return (0);
+               }
+       }
        id = strtoul(p, &ep, 10);
        if (errno == ERANGE) {
                if (flags & _PWSCAN_WARN)
                        warnx("%s > max gid value (%lu)", p, ULONG_MAX);
                return (0);
        }
-       if (*ep != '\0' || ep == p) {
+       if (*ep != '\0') {
                if (flags & _PWSCAN_WARN)
                        warnx("%s gid is incorrect", p);
                return (0);