Do not use fgetpwent_r

fgetpwent_r does not exist on musl

Source: https://git.alpinelinux.org/aports/tree/community/libpwquality/0001-fix-musl-build.patch
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
--- a/src/pam_pwquality.c
+++ b/src/pam_pwquality.c
@@ -19,6 +19,7 @@
 #include <stdio.h>
 #include <pwd.h>
 #include <errno.h>
+#include <security/pam_modutil.h>
 #include "pwquality.h"
 
 /*
@@ -43,8 +44,6 @@ struct module_options {
 
 #define CO_RETRY_TIMES  1
 
-#define PATH_PASSWD "/etc/passwd"
-
 static int
 _pam_parse (pam_handle_t *pamh, struct module_options *opt,
             int argc, const char **argv)
@@ -98,44 +97,7 @@ static int
 check_local_user (pam_handle_t *pamh,
                   const char *user)
 {
-        struct passwd pw, *pwp;
-        char buf[4096];
-        int found = 0;
-        FILE *fp;
-        int errn;
-
-        fp = fopen(PATH_PASSWD, "r");
-        if (fp == NULL) {
-                pam_syslog(pamh, LOG_ERR, "unable to open %s: %s",
-                           PATH_PASSWD, pam_strerror(pamh, errno));
-                return -1;
-        }
-
-        for (;;) {
-                errn = fgetpwent_r(fp, &pw, buf, sizeof (buf), &pwp);
-                if (errn == ERANGE) {
-                        pam_syslog(pamh, LOG_WARNING, "%s contains very long lines; corrupted?",
-                                   PATH_PASSWD);
-                        /* we can continue here as next call will read further */
-                        continue;
-                }
-                if (errn != 0)
-                        break;
-                if (strcmp(pwp->pw_name, user) == 0) {
-                        found = 1;
-                        break;
-                }
-        }
-
-        fclose (fp);
-
-        if (errn != 0 && errn != ENOENT) {
-                pam_syslog(pamh, LOG_ERR, "unable to enumerate local accounts: %s",
-                           pam_strerror(pamh, errn));
-                return -1;
-        } else {
-                return found;
-        }
+	return pam_modutil_check_user_in_passwd(pamh, user, NULL) == PAM_SUCCESS;
 }
 
 PAM_EXTERN int
