On Thu, Nov 01, 2018 at 06:37:15PM -0400, Ted Unangst wrote:
> yes, this is how it should be. please fix group lookup as well.
Was in the queue for a separate diff, here it goes together.

Index: getent.c
===================================================================
RCS file: /cvs/src/usr.bin/getent/getent.c,v
retrieving revision 1.20
diff -u -p -r1.20 getent.c
--- getent.c    26 Sep 2018 16:39:19 -0000      1.20
+++ getent.c    1 Nov 2018 23:43:40 -0000
@@ -201,11 +201,11 @@ group(int argc, char *argv[])
                        GROUPPRINT;
        } else {
                for (i = 2; i < argc; i++) {
-                       gid = strtonum(argv[i], 0, GID_MAX, &err);
-                       if (!err)
-                               gr = getgrgid(gid);
-                       else
-                               gr = getgrnam(argv[i]);
+                       if ((gr = getgrnam(argv[i])) == NULL) {
+                               gid = strtonum(argv[i], 0, GID_MAX, &err);
+                               if (err == NULL)
+                                       gr = getgrgid(gid);
+                       }
                        if (gr != NULL)
                                GROUPPRINT;
                        else {
@@ -302,11 +302,11 @@ passwd(int argc, char *argv[])
                        PASSWDPRINT;
        } else {
                for (i = 2; i < argc; i++) {
-                       uid = strtonum(argv[i], 0, UID_MAX, &err);
-                       if (!err)
-                               pw = getpwuid(uid);
-                       else
-                               pw = getpwnam(argv[i]);
+                       if ((pw = getpwnam(argv[i])) == NULL) {
+                               uid = strtonum(argv[i], 0, UID_MAX, &err);
+                               if (err == NULL)
+                                       pw = getpwuid(uid);
+                       }
                        if (pw != NULL)
                                PASSWDPRINT;
                        else {

Reply via email to