control: tags -1 +patch +pending Hi,
I've found the root cause of this bug, and fixed it. On my local sid machine, I've tested it with edit /etc/pam.d/su as search pam_yubico.so, exec su and it searchs /lib/security/pam_yubico.so :) See below debdiff. If it seems to be okay, I'll put it into sid and request unblock. diff -Nru pam-1.4.0/debian/changelog pam-1.4.0/debian/changelog --- pam-1.4.0/debian/changelog 2021-03-16 04:01:55.000000000 +0900 +++ pam-1.4.0/debian/changelog 2021-07-06 22:09:15.000000000 +0900 @@ -1,3 +1,13 @@ +pam (1.4.0-7.1) unstable; urgency=high + + * Non-maintainer upload. + * debian/patches-applied/lib_security_multiarch_compat + - Fix regression that was introduced in 1.4.0-1, some lines were not + applied during refresh patch and it doesn't work. + (Closes: #979973, #990412) + + -- Hideki Yamane <henr...@debian.org> Tue, 06 Jul 2021 22:09:15 +0900 + pam (1.4.0-7) unstable; urgency=medium * Updated portuguese debconf translation, thanks Pedro Ribeiro, Closes: diff -Nru pam-1.4.0/debian/patches-applied/lib_security_multiarch_compat pam-1.4.0/debian/patches-applied/lib_security_multiarch_compat --- pam-1.4.0/debian/patches-applied/lib_security_multiarch_compat 2021-01-31 07:09:52.000000000 +0900 +++ pam-1.4.0/debian/patches-applied/lib_security_multiarch_compat 2021-07-06 22:09:15.000000000 +0900 @@ -11,11 +11,11 @@ order to get everything installed where we want it and get absolute paths the way we want them. -Index: pam/libpam/pam_handlers.c +Index: pam-1.4.0/libpam/pam_handlers.c =================================================================== ---- pam.orig/libpam/pam_handlers.c -+++ pam/libpam/pam_handlers.c -@@ -735,7 +735,18 @@ +--- pam-1.4.0.orig/libpam/pam_handlers.c ++++ pam-1.4.0/libpam/pam_handlers.c +@@ -735,7 +735,27 @@ _pam_load_module(pam_handle_t *pamh, con success = PAM_ABORT; D(("_pam_load_module: _pam_dlopen(%s)", mod_path)); @@ -31,11 +31,20 @@ + } else { + pam_syslog(pamh, LOG_CRIT, "cannot malloc full mod path"); + } ++ if (!mod->dl_handle) { ++ if (asprintf(&mod_full_path, "%s/%s", ++ _PAM_ISA, mod_path) >= 0) { ++ mod->dl_handle = _pam_dlopen(mod_full_path); ++ _pam_drop(mod_full_path); ++ } else { ++ pam_syslog(pamh, LOG_CRIT, "cannot malloc full mod path"); ++ } ++ } + } D(("_pam_load_module: _pam_dlopen'ed")); D(("_pam_load_module: dlopen'ed")); if (mod->dl_handle == NULL) { -@@ -812,7 +823,6 @@ +@@ -812,7 +832,6 @@ int _pam_add_handler(pam_handle_t *pamh struct handler **handler_p2; struct handlers *the_handlers; const char *sym, *sym2; @@ -43,7 +52,7 @@ servicefn func, func2; int mod_type = PAM_MT_FAULTY_MOD; -@@ -824,16 +834,7 @@ +@@ -824,16 +843,7 @@ int _pam_add_handler(pam_handle_t *pamh if ((handler_type == PAM_HT_MODULE || handler_type == PAM_HT_SILENT_MODULE) && mod_path != NULL) {