mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-05-08 17:39:24 +00:00
libpwquality: Do not use fgetpwent_r on musl
It does not exist Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
@@ -0,0 +1,72 @@
|
|||||||
|
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
|
||||||
@@ -8,6 +8,7 @@ SRCNAME = "libpwquality"
|
|||||||
SRC_URI = "https://github.com/${SRCNAME}/${SRCNAME}/releases/download/${SRCNAME}-${PV}/${SRCNAME}-${PV}.tar.bz2 \
|
SRC_URI = "https://github.com/${SRCNAME}/${SRCNAME}/releases/download/${SRCNAME}-${PV}/${SRCNAME}-${PV}.tar.bz2 \
|
||||||
file://add-missing-python-include-dir-for-cross.patch \
|
file://add-missing-python-include-dir-for-cross.patch \
|
||||||
"
|
"
|
||||||
|
SRC_URI:append:libc-musl = " file://0001-fix-musl-build.patch "
|
||||||
|
|
||||||
SRC_URI[md5sum] = "1fe43f6641dbf1e1766e2a02cf68a9c3"
|
SRC_URI[md5sum] = "1fe43f6641dbf1e1766e2a02cf68a9c3"
|
||||||
SRC_URI[sha256sum] = "d43baf23dc6887fe8f8e9b75cabaabc5f4bbbaa0f9eff44278d276141752a545"
|
SRC_URI[sha256sum] = "d43baf23dc6887fe8f8e9b75cabaabc5f4bbbaa0f9eff44278d276141752a545"
|
||||||
|
|||||||
Reference in New Issue
Block a user