diff options
| -rw-r--r-- | meta-oe/recipes-extended/libpwquality/files/0001-fix-musl-build.patch | 72 | ||||
| -rw-r--r-- | meta-oe/recipes-extended/libpwquality/libpwquality_1.4.4.bb | 1 |
2 files changed, 73 insertions, 0 deletions
diff --git a/meta-oe/recipes-extended/libpwquality/files/0001-fix-musl-build.patch b/meta-oe/recipes-extended/libpwquality/files/0001-fix-musl-build.patch new file mode 100644 index 0000000000..2cbdd6c74c --- /dev/null +++ b/meta-oe/recipes-extended/libpwquality/files/0001-fix-musl-build.patch | |||
| @@ -0,0 +1,72 @@ | |||
| 1 | Do not use fgetpwent_r | ||
| 2 | |||
| 3 | fgetpwent_r does not exist on musl | ||
| 4 | |||
| 5 | Source: https://git.alpinelinux.org/aports/tree/community/libpwquality/0001-fix-musl-build.patch | ||
| 6 | Upstream-Status: Pending | ||
| 7 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
| 8 | --- a/src/pam_pwquality.c | ||
| 9 | +++ b/src/pam_pwquality.c | ||
| 10 | @@ -19,6 +19,7 @@ | ||
| 11 | #include <stdio.h> | ||
| 12 | #include <pwd.h> | ||
| 13 | #include <errno.h> | ||
| 14 | +#include <security/pam_modutil.h> | ||
| 15 | #include "pwquality.h" | ||
| 16 | |||
| 17 | /* | ||
| 18 | @@ -43,8 +44,6 @@ struct module_options { | ||
| 19 | |||
| 20 | #define CO_RETRY_TIMES 1 | ||
| 21 | |||
| 22 | -#define PATH_PASSWD "/etc/passwd" | ||
| 23 | - | ||
| 24 | static int | ||
| 25 | _pam_parse (pam_handle_t *pamh, struct module_options *opt, | ||
| 26 | int argc, const char **argv) | ||
| 27 | @@ -98,44 +97,7 @@ static int | ||
| 28 | check_local_user (pam_handle_t *pamh, | ||
| 29 | const char *user) | ||
| 30 | { | ||
| 31 | - struct passwd pw, *pwp; | ||
| 32 | - char buf[4096]; | ||
| 33 | - int found = 0; | ||
| 34 | - FILE *fp; | ||
| 35 | - int errn; | ||
| 36 | - | ||
| 37 | - fp = fopen(PATH_PASSWD, "r"); | ||
| 38 | - if (fp == NULL) { | ||
| 39 | - pam_syslog(pamh, LOG_ERR, "unable to open %s: %s", | ||
| 40 | - PATH_PASSWD, pam_strerror(pamh, errno)); | ||
| 41 | - return -1; | ||
| 42 | - } | ||
| 43 | - | ||
| 44 | - for (;;) { | ||
| 45 | - errn = fgetpwent_r(fp, &pw, buf, sizeof (buf), &pwp); | ||
| 46 | - if (errn == ERANGE) { | ||
| 47 | - pam_syslog(pamh, LOG_WARNING, "%s contains very long lines; corrupted?", | ||
| 48 | - PATH_PASSWD); | ||
| 49 | - /* we can continue here as next call will read further */ | ||
| 50 | - continue; | ||
| 51 | - } | ||
| 52 | - if (errn != 0) | ||
| 53 | - break; | ||
| 54 | - if (strcmp(pwp->pw_name, user) == 0) { | ||
| 55 | - found = 1; | ||
| 56 | - break; | ||
| 57 | - } | ||
| 58 | - } | ||
| 59 | - | ||
| 60 | - fclose (fp); | ||
| 61 | - | ||
| 62 | - if (errn != 0 && errn != ENOENT) { | ||
| 63 | - pam_syslog(pamh, LOG_ERR, "unable to enumerate local accounts: %s", | ||
| 64 | - pam_strerror(pamh, errn)); | ||
| 65 | - return -1; | ||
| 66 | - } else { | ||
| 67 | - return found; | ||
| 68 | - } | ||
| 69 | + return pam_modutil_check_user_in_passwd(pamh, user, NULL) == PAM_SUCCESS; | ||
| 70 | } | ||
| 71 | |||
| 72 | PAM_EXTERN int | ||
diff --git a/meta-oe/recipes-extended/libpwquality/libpwquality_1.4.4.bb b/meta-oe/recipes-extended/libpwquality/libpwquality_1.4.4.bb index f892cc650d..a6887b0868 100644 --- a/meta-oe/recipes-extended/libpwquality/libpwquality_1.4.4.bb +++ b/meta-oe/recipes-extended/libpwquality/libpwquality_1.4.4.bb | |||
| @@ -8,6 +8,7 @@ SRCNAME = "libpwquality" | |||
| 8 | SRC_URI = "https://github.com/${SRCNAME}/${SRCNAME}/releases/download/${SRCNAME}-${PV}/${SRCNAME}-${PV}.tar.bz2 \ | 8 | SRC_URI = "https://github.com/${SRCNAME}/${SRCNAME}/releases/download/${SRCNAME}-${PV}/${SRCNAME}-${PV}.tar.bz2 \ |
| 9 | file://add-missing-python-include-dir-for-cross.patch \ | 9 | file://add-missing-python-include-dir-for-cross.patch \ |
| 10 | " | 10 | " |
| 11 | SRC_URI:append:libc-musl = " file://0001-fix-musl-build.patch " | ||
| 11 | 12 | ||
| 12 | SRC_URI[md5sum] = "1fe43f6641dbf1e1766e2a02cf68a9c3" | 13 | SRC_URI[md5sum] = "1fe43f6641dbf1e1766e2a02cf68a9c3" |
| 13 | SRC_URI[sha256sum] = "d43baf23dc6887fe8f8e9b75cabaabc5f4bbbaa0f9eff44278d276141752a545" | 14 | SRC_URI[sha256sum] = "d43baf23dc6887fe8f8e9b75cabaabc5f4bbbaa0f9eff44278d276141752a545" |
