Hello community, here is the log from the commit of package pam_mount for openSUSE:Factory checked in at 2016-10-02 00:07:51 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pam_mount (Old) and /work/SRC/openSUSE:Factory/.pam_mount.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pam_mount" Changes: -------- --- /work/SRC/openSUSE:Factory/pam_mount/pam_mount.changes 2014-12-05 21:03:57.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.pam_mount.new/pam_mount.changes 2016-10-02 00:08:24.000000000 +0200 @@ -1,0 +2,10 @@ +Fri Sep 30 08:13:57 UTC 2016 - jeng...@inai.de + +- Update to new upstream release 2.16 +* the sgrp match is now implemented by asking for the user's + group list instead of asking for the group's user list. (The + latter can easily be orders of magnitude larger, which is why + some LDAP servers may be configured not to return the list at + all.) + +------------------------------------------------------------------- Old: ---- pam_mount-2.15.tar.asc pam_mount-2.15.tar.xz New: ---- pam_mount-2.16.tar.asc pam_mount-2.16.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pam_mount.spec ++++++ --- /var/tmp/diff_new_pack.5OFswm/_old 2016-10-02 00:08:25.000000000 +0200 +++ /var/tmp/diff_new_pack.5OFswm/_new 2016-10-02 00:08:25.000000000 +0200 @@ -1,7 +1,7 @@ # # spec file for package pam_mount # -# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -21,7 +21,7 @@ Summary: A PAM Module that can Mount Volumes for a User Session License: LGPL-2.1+ and GPL-2.0+ Group: System/Libraries -Version: 2.15 +Version: 2.16 Release: 0 Url: http://pam-mount.sf.net/ ++++++ pam_mount-2.15.tar.xz -> pam_mount-2.16.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_mount-2.15/configure new/pam_mount-2.16/configure --- old/pam_mount-2.15/configure 2014-12-01 14:35:43.000000000 +0100 +++ new/pam_mount-2.16/configure 2016-09-23 10:43:08.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for pam_mount 2.15. +# Generated by GNU Autoconf 2.69 for pam_mount 2.16. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ # Identity of this package. PACKAGE_NAME='pam_mount' PACKAGE_TARNAME='pam_mount' -PACKAGE_VERSION='2.15' -PACKAGE_STRING='pam_mount 2.15' +PACKAGE_VERSION='2.16' +PACKAGE_STRING='pam_mount 2.16' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1368,7 +1368,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures pam_mount 2.15 to adapt to many kinds of systems. +\`configure' configures pam_mount 2.16 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1438,7 +1438,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of pam_mount 2.15:";; + short | recursive ) echo "Configuration of pam_mount 2.16:";; esac cat <<\_ACEOF @@ -1578,7 +1578,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -pam_mount configure 2.15 +pam_mount configure 2.16 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2000,7 +2000,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by pam_mount $as_me 2.15, which was +It was created by pam_mount $as_me 2.16, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2348,7 +2348,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -PACKAGE_RELDATE="2014-11-28" +PACKAGE_RELDATE="2016-09-23" ac_aux_dir= for ac_dir in build-aux "$srcdir"/build-aux; do @@ -2868,7 +2868,7 @@ # Define the identity of the package. PACKAGE='pam_mount' - VERSION='2.15' + VERSION='2.16' cat >>confdefs.h <<_ACEOF @@ -13413,7 +13413,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by pam_mount $as_me 2.15, which was +This file was extended by pam_mount $as_me 2.16, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -13479,7 +13479,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -pam_mount config.status 2.15 +pam_mount config.status 2.16 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_mount-2.15/configure.ac new/pam_mount-2.16/configure.ac --- old/pam_mount-2.15/configure.ac 2014-12-01 14:35:30.000000000 +0100 +++ new/pam_mount-2.16/configure.ac 2016-09-23 09:52:47.000000000 +0200 @@ -7,8 +7,8 @@ # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # -AC_INIT([pam_mount], [2.15]) -PACKAGE_RELDATE="2014-11-28" +AC_INIT([pam_mount], [2.16]) +PACKAGE_RELDATE="2016-09-23" AC_PREREQ([2.59]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_HEADERS([config.h]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_mount-2.15/doc/news.txt new/pam_mount-2.16/doc/news.txt --- old/pam_mount-2.15/doc/news.txt 2014-12-01 14:35:30.000000000 +0100 +++ new/pam_mount-2.16/doc/news.txt 2016-09-23 09:52:47.000000000 +0200 @@ -5,6 +5,17 @@ ==== +v2.16 (2016-09-23) +================== +Enhancements: +* support building with OpenSSL 1.1.0 and test libressl 2.4.2 +Changes: +* the sgrp match is now implemented by asking for the user's group list instead + of asking for the group's user list. (The latter can easily be orders of + magnitude larger, which is why some LDAP servers may be configured not to + return the list at all.) + + v2.15 (2014-12-01) ================== Changes: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_mount-2.15/dvconfigure new/pam_mount-2.16/dvconfigure --- old/pam_mount-2.15/dvconfigure 2014-12-01 14:35:30.000000000 +0100 +++ new/pam_mount-2.16/dvconfigure 2016-09-23 09:52:47.000000000 +0200 @@ -4,5 +4,5 @@ ./autogen.sh; fi; exec ./configure CFLAGS=-ggdb3 \ - LDFLAGS="-Wl,-z -Wl,defs -Wl,-z -Wl,--as-needed" \ + LDFLAGS="-Wl,-z -Wl,defs -Wl,--as-needed" \ --with-rundir="$PWD/run" "$@"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_mount-2.15/src/crypto.c new/pam_mount-2.16/src/crypto.c --- old/pam_mount-2.15/src/crypto.c 2014-12-01 14:35:30.000000000 +0100 +++ new/pam_mount-2.16/src/crypto.c 2016-09-23 09:52:47.000000000 +0200 @@ -415,7 +415,7 @@ { unsigned char key[EVP_MAX_KEY_LENGTH], iv[EVP_MAX_IV_LENGTH]; unsigned int out_cumul_len = 0; - EVP_CIPHER_CTX ctx; + EVP_CIPHER_CTX *ctx; int out_len = 0; hxmc_t *out; @@ -424,18 +424,20 @@ (par->password == NULL) ? 0 : strlen(par->password), 1, key, iv) <= 0) return EHD_KEYDEC_OTHER; + ctx = EVP_CIPHER_CTX_new(); + if (ctx == NULL) + return EHD_KEYDEC_OTHER; - out = HXmc_meminit(NULL, par->d_keysize + par->s_cipher->block_size); - EVP_CIPHER_CTX_init(&ctx); - EVP_DecryptInit_ex(&ctx, par->s_cipher, NULL, key, iv); - EVP_DecryptUpdate(&ctx, signed_cast(unsigned char *, + out = HXmc_meminit(NULL, par->d_keysize + EVP_CIPHER_block_size(par->s_cipher)); + EVP_DecryptInit_ex(ctx, par->s_cipher, NULL, key, iv); + EVP_DecryptUpdate(ctx, signed_cast(unsigned char *, &out[out_len]), &out_len, par->d_text, par->d_keysize); out_cumul_len += out_len; - EVP_DecryptFinal_ex(&ctx, signed_cast(unsigned char *, + EVP_DecryptFinal_ex(ctx, signed_cast(unsigned char *, &out[out_len]), &out_len); out_cumul_len += out_len; HXmc_setlen(&out, out_cumul_len); - EVP_CIPHER_CTX_cleanup(&ctx); + EVP_CIPHER_CTX_free(ctx); par->d_result = out; return EHD_KEYDEC_SUCCESS; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_mount-2.15/src/rdconf1.c new/pam_mount-2.16/src/rdconf1.c --- old/pam_mount-2.15/src/rdconf1.c 2014-12-01 14:35:30.000000000 +0100 +++ new/pam_mount-2.16/src/rdconf1.c 2016-09-23 09:52:47.000000000 +0200 @@ -617,33 +617,45 @@ * no match was found, positive non-zero on success or negative non-zero on * failure. */ -static bool user_in_sgrp(const char *user, const char *grp, bool icase, +static bool user_in_sgrp(const char *user, const char *search_grp, bool icase, bool regex) { - struct group *gent; - const char *const *wp; + const struct group *gent; + int i, ret, ngroups = 1; + gid_t *grplist, grpbuf; - if ((gent = getgrnam(grp)) == NULL) { - if (errno != 0) - w4rn("getgrnam(\"%s\") failed: %s\n", - grp, strerror(errno)); + ret = getgrouplist(user, -1, &grpbuf, &ngroups); + if (ret == 0 || (ret == 1 && grpbuf == -1)) { + /* No secondary groups. Cannot be a member, then. */ return false; } - - wp = const_cast2(const char *const *, gent->gr_mem); - while (wp != NULL && *wp != NULL) { + grplist = malloc(sizeof(gid_t) * ngroups); + ret = getgrouplist(user, -1, grplist, &ngroups); + if (ret < 0) { + l0g("getgrouplist(%s) failed: %s\n", user, strerror(errno)); + free(grplist); + return false; + } + for (i = 0; i < ngroups; ++i) { + if (grplist[i] == -1) + continue; + gent = getgrgid(grplist[i]); + if (gent == NULL) + continue; if (regex) { - if (pmt_strregmatch(user, *wp, icase) > 0) - return true; - } else if (icase && strcasecmp(*wp, user) == 0) { - return true; - } else if (strcmp(*wp, user) == 0) { - return true; + if (pmt_strregmatch(gent->gr_name, search_grp, icase) > 0) + goto found; + } else if (icase && strcasecmp(gent->gr_name, search_grp) == 0) { + goto found; + } else if (strcmp(gent->gr_name, search_grp) == 0) { + goto found; } - ++wp; } - + free(grplist); return false; + found: + free(grplist); + return true; } //----------------------------------------------------------------------------- ++++++ pam_mount.keyring ++++++ --- /var/tmp/diff_new_pack.5OFswm/_old 2016-10-02 00:08:25.000000000 +0200 +++ /var/tmp/diff_new_pack.5OFswm/_new 2016-10-02 00:08:25.000000000 +0200 @@ -1,129 +1,91 @@ -pub 4096R/19FC338D 2011-05-09 [expires: 2016-05-07] -uid Jan Engelhardt <jeng...@gmx.de> -sub 4096R/C66DD881 2011-05-09 [expires: 2016-05-07] -sub 4096g/34C483D3 2011-05-09 [expires: 2016-05-07] -sub 3072D/68A20E45 2011-05-09 [expires: 2016-05-07] +pub 4096R/0xA28BDFEEB5A2B2FF 2015-05-07 [expires: 2020-08-08] + Key fingerprint = 2F8B FE96 D14F 8B56 0FBC 1F1D A28B DFEE B5A2 B2FF +uid [ unknown] Jan Engelhardt <jeng...@inai.de> +sub 4096R/0xB927458717B4ECED 2015-05-07 [expires: 2020-08-08] +sub 4096R/0x6A3933DA297DFB7D 2015-05-07 [expires: 2020-08-08] -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v2.0.19 (GNU/Linux) -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 -=ZosZ +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 +cCAy +=ePMx -----END PGP PUBLIC KEY BLOCK-----