• Bug#1109006: pam: FTBFS on hurd-any

    From Samuel Thibault@21:1/5 to All on Wed Jul 9 14:50:01 2025
    Source: pam
    Version: 1.7.0-5
    Severity: important
    Tags: ftbfs patch

    Hello,

    pam currently fails to build on hurd-any for a couple of upstream
    reasons, and a debian reason. The attached patches fix them:

    - hurd-fsuid fixes the usage of the linuxish setfsuid
    - hurd-host-name-max comes from upstream, to fix a HOST_NAME_MAX use
    - hurd-tcgeta fixes the usage of the non-posix TCGETA
    - patch fixes the list of installed binaries according to what the
    upstream meson files build.

    chmod +x debian/libpam-modules-bin.install

    is then needed to make the packaging patch work.

    With regards,
    Samuel

    -- System Information:
    Debian Release: 13.0
    APT prefers testing
    APT policy: (990, 'testing'), (500, 'testing-debug'), (500, 'stable-security'), (500, 'stable-debug'), (500, 'oldstable-proposed-updates-debug'), (500, 'oldoldstable'), (500, 'buildd-unstable'), (500, 'unstable'), (500, 'stable'), (500, 'oldstable'), (
    1, 'experimental-debug'), (1, 'buildd-experimental'), (1, 'experimental') Architecture: amd64 (x86_64)
    Foreign Architectures: i386, arm64

    Kernel: Linux 6.15.0 (SMP w/8 CPU threads; PREEMPT)
    Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
    Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), LANGUAGE not set
    Shell: /bin/sh linked to /usr/bin/dash
    Init: systemd (via /run/systemd/system)
    LSM: AppArmor: enabled

    --
    Samuel
    <y> update-menus: relocation error: update-menus: symbol _ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E, version GLIBCPP_3.2 not defined in file libstdc++.so.5 with link time reference
    <y> quoi que �a peut bien vouloir dire ?
    <D> N a eu la meme merde
    <y> c �a que �a veut dire ? wow, c'est bien crypt� :)
    -+- #ens-mim s'entraide -+-

    https://github.com/linux-pam/linux-pam/pull/917

    diff --git a/libpam/pam_modutil_priv.c b/libpam/pam_modutil_priv.c
    index a463e06a..456987ae 100644
    --- a/libpam/pam_modutil_priv.c
    +++ b/libpam/pam_modutil_priv.c
    @@ -14,7 +14,9 @@
    #include <syslog.h>
    #include <pwd.h>
    #include <grp.h>
    +#ifdef HAVE_SYS_FSUID_H
    #include <sys/fsuid.h>
    +#endif /* HAVE_SYS_FSUID_H */

    /*
    * Two setfsuid() calls in a row are necessary to check
    @@ -22,17 +24,35 @@
    */
    static int change_uid(uid_t uid, uid_t *save)
    {
    +#ifdef HAVE_SYS_FSUID_H
    uid_t tmp = setfsuid(uid);
    if (save)
    *save = tmp;
    return (uid_t) setfsuid(uid) == uid ? 0 : -1;
    +#else
    + uid_t tmp = geteuid();
    + if (save)
    + *save = tmp;
    + if (setresuid(-1, uid, tmp) < 0)
    + return -1;
    + return 0;
    +#endif
    }
    static int change_gid(gid_t gid, gid_t *save)
    {
    +#ifdef HAVE_SYS_FSUID_H
    gid_t tmp = setfsgid(gid);
    if (save)
    *save = tmp;
    return (gid_t) setfsgid(gid) == gid ? 0 : -1;
    +#else
    + uid_t tmp = getegid();
    + if (save)
    + *save = tmp;
    + if (setresgid(-1, gid, tmp) < 0)
    + return -1;
    + return 0;
    +#endif
    }

    static int cleanup(struct pam_modutil_privs *