2022-05-09  Sergey Poznyakoff  <gray@gnu.org>

        Version 2.5


2022-05-09  Sergey Poznyakoff  <gray@gnu.org>

        Bugfix


2022-02-04  Sergey Poznyakoff  <gray@gnu.org>

        Update NEWS and THANKS files

        Build the ChangeLog file using plain git, without auxiliary awk
        formatter.

2022-02-04  Sergey Poznyakoff  <gray@gnu.org>

        Update copyright years


2022-02-03  Sergey Poznyakoff  <gray@gnu.org>

        pam_fshadow: new option skip-password

        * pam_fshadow/pam_fshadow.c (pam_opt): New option skip-password.
        (_pam_parse,verify_user_acct,verify_user_pass): Fix log
        messages.
        (verify_user_pass): Skip password verification, if requested.
        (pam_sm_authenticate): Don't try to obtain password, if
        skip-password is given. Bugfix: even if password hash is given
        in passwd and verified successfully, verify the shadow file too,
        this time with password set to NULL, so that the actual account
        status is taken into account.
        * doc/pam-modules.texi: Document skip-password
        * doc/pam_fshadow.8in: Likewise.

2022-02-02  Sergey Poznyakoff  <mirsad.todorovac@alu.hr>

        Bugfixes in pam_fshadow

        * pam_fshadow/pam_fshadow.c (verify_user_acct): Don't leave the
        file open.
        (pam_sm_authenticate): If the username was changed, set the
        changed value in the PAM_USER item, for eventual use by
        subsequent modules in stack.

2021-08-28  Sergey Poznyakoff  <gray@gnu.org>

        transform: fix replacement of particular pattern instance

        This fixes handling of expressions like 's/s/@/2'.

        * lib/transform.c (_single_transform_name_to_slist): Avoid
        duplicating initial prefix if replace is not needed.

2021-08-11  Sergey Poznyakoff  <gray@gnu.org>

        Version 2.4.1


2021-08-11  Sergey Poznyakoff  <gray@gnu.org>

        pam_mysql: optionally read MySQL default file

        * doc/pam-modules.texi: Document new MySQL statements.
        * pam_sql/pam_mysql.c (mysql_do_query): Use MySQL default
        file/group, if specified.
        (gpam_sql_verify_user_pass): Fix handling of "setenv-query".
        * pam_sql/pam_pgsql.c (gpam_sql_verify_user_pass): Likewise.
        * pam_sql/pam_sql.c (gpam_sql_get_query): Return
        PAM_AUTHINFO_UNAVAIL if the keyword is not defined in the
        environment.

2021-07-07  Sergey Poznyakoff  <gray@gnu.org>

        Fix typo


2021-01-06  Sergey Poznyakoff  <gray@gnu.org>

        Update copyright years


2020-12-30  Sergey Poznyakoff  <gray@gnu.org>

        Version 2.4


2020-06-14  Sergey Poznyakoff  <gray@gnu.org>

        Use wordsplit v1.1


2020-03-29  Sergey Poznyakoff  <gray@gnu.org>

        Use wordsplit for keyword expansion.

        * .gitmodules: Add wordsplit
        * configure.ac: Likewise.
        * lib/Makefile.am: Likewise.
        * lib/graypam.h (gray_expand_argv): Remove.
        (gray_expand_string): Change prototype.
        * lib/vartab.c (gray_expand_argv): Remove.
        (gray_expand_string): Rewrite using wordsplit.
        * pam_ldaphome/pam_ldaphome.c (import_public_key): Assume 
        sshPublicKey as a default attribute.
        * pam_log/pam_log.c (_pam_parse): Take two return arguments.
        (echo): Use gray_expand_string.
        * pam_sql/pam_mysql.c: Update gray_expand_string usage.
        * pam_sql/pam_pgsql.c: Likewise.
        * pam_sql/pam_sql.c: Likewise.
        * pam_sql/pam_sql.h (gpam_sql_get_query): Change signature.
        * pam_umotd/pam_umotd.c (pam_sm_open_session): Update 
        gray_expand_string usage.

2020-03-29  Sergey Poznyakoff  <gray@gnu.org>

        pam_regex: Return PAM_IGNORE if called with 'transform=' but
        without 'regex='

        Bug spotted by Ray Morris.

2019-08-30  Sergey Poznyakoff  <gray@gnu.org>

        Minor fix

        * examples/ldappubkey: Pass arguments to start_tls

2018-09-01  Sergey Poznyakoff  <gray@gnu.org>

        Bugfix

        * lib/mem.c (gray_2nrealloc): Add missing multiplier.

2018-08-16  Sergey Poznyakoff  <gray@gnu.org>

        Version 2.3.90


2018-08-16  Sergey Poznyakoff  <gray@gnu.org>

        Minor changes


2018-08-15  Sergey Poznyakoff  <gray@gnu.org>

        Minor fix


2018-08-15  Sergey Poznyakoff  <gray@gnu.org>

        Major cleanup

        * lib/graypam.h (gray_pam_init)
        (gray_raise,gray_malloc,gray_zalloc,gray_calloc)
        (gray_realloc,gray_strdup): Remove.
        (gray_slist_err,gray_slist_clrerr): New functions.
        (gray_slist_append,gray_slist_append_char): Return ssize_t.
        (gray_slist_coalesce): Likewise.
        (gray_slist_grow_backslash_num)
        (gray_slist_grow_backslash): Return int.
        (errno_to_pam): New function.
        (gray_set_transform_expr): Return int.
        * lib/mem.c (gray_raise,gray_malloc,gray_zalloc,gray_calloc)
        (gray_realloc,gray_strdup): Remove.
        (gray_2nrealloc): Rewrite.
        * lib/base64.c: Check return from gray_slist_append_char
        * lib/env.c: Check return values from gray_slist functions
        * lib/ldappass.c: Likewise.
        * lib/slist.c (gray_slist_bucket) <ec>: New member.
        (gray_slist_err,gray_slist_clrerr): New functions.
        (gray_slist_append,gray_slist_append_char): Return ssize_t.
        (gray_slist_coalesce): Likewise.
        (gray_slist_grow_backslash_num)
        (gray_slist_grow_backslash): Return int.
        * lib/transform.c: Use standard memory allocation functions.
        * pam_ldaphome/pam_ldaphome.c: Likewise.
        * pam_innetgr/pam_innetgr.c: Likewise.
        * pam_log/pam_log.c: Likewise.
        * pam_regex/pam_regex.c: Likewise.
        * pam_sql/pam_mysql.c: Likewise.
        * pam_sql/pam_pgsql.c: Likewise.

2018-08-15  Sergey Poznyakoff  <gray@gnu.org>

        Bugfix

        * pam_groupmember/pam_groupmember.c (split): Use standard memory 
        allocation functions. Correctly handle empty strings (demimiter 
        immediately followed by another delimiter.

2018-08-14  Sergey Poznyakoff  <gray@gnu.org>

        Minor fixes

        * configure.ac: Don't build static libraries.
        * examples/ldappubkey: Optionally authenticate via PAM`

2018-08-13  Sergey Poznyakoff  <gray@gnu.org>

        Version 2.3.1: add missing pam_sm_setcred symbol


2018-08-12  Sergey Poznyakoff  <gray@gnu.org>

        Version 2.3


2018-08-12  Sergey Poznyakoff  <gray@gnu.org>

        New module pam_innetgr.

        * Makefile.am: Add new module.
        * NEWS: Upgrade
        * configure.ac: Add configuration for pam_innetgr
        * pam_innetgr/Makefile.am: New file.
        * pam_innetgr/pam_innetgr.c: New file.
        * doc/Makefile.am: Add pam_innetgr.8
        * doc/pam-modules.texi: Document pam_innetgr.
        * doc/pam_innetgr.8: New file.
        * examples/ldappubkey: Bugfixes
        (publickeyattribute setting): Accept a list of attributes
        (publickeyfilter): New setting.

2018-01-02  Sergey Poznyakoff  <gray@gnu.org>

        Version 2.2


2018-01-01  Sergey Poznyakoff  <gray@gnu.org>

        Happy GNU Year


2017-12-22  Sergey Poznyakoff  <gray@gnu.org.ua>

        pam_fshadow: allow the user to use arbitrary group numbers for
        username and domain parts.

        New options username-index and domain-index are used to indicate 
        indices of the parenthesized groups used to extract the user and 
        the domain name. The default corresponds to 'user-index=1
        domain-index=1'.

        Additionally, change the behavior in case if the user name
        doesn't match the regexp. Previous versions would fall back to
        plain authentication in this case. New behavior is to reject
        access.

        * pam_fshadow/pam_fshadow.c (pam_opt): New options 
        username-index and domain-index.
        (pam_sm_authenticate): Move username splitting into a separate 
        function.
        * doc/pam_fshadow.8in: Document the new options.

2015-08-04  Sergey Poznyakoff  <gray@gnu.org.ua>

        Version 2.1


2015-04-23  Sergey Poznyakoff  <gray@gnu.org.ua>

        minor change


2015-04-23  Sergey Poznyakoff  <gray@gnu.org.ua>

        Fix doc generation.

        Default Config file applied to all output formats, which is
        wrong. Use a dedicated configuration file for html output
        formats, and defaults for the rest.

        * doc/Makefile.am (GENDOCS): Add html-specific configuration
        file.
        * doc/Config: Rename to doc/html.init (with changes).

2015-03-01  Sergey Poznyakoff  <gray@gnu.org>

        Switch to Texinfo 5.0

        * doc/Config: Rewrite.
        * doc/Makefile.am: Use Makeinfo 5 instead of texi2htm
        * doc/gendocs_template: Ps is not built
        * imprimatur: Upgrade.

2015-02-26  Sergey Poznyakoff  <gray@gnu.org.ua>

        Version 2.0

        * NEWS: Update version number
        * configure.ac: Likewise.
        * doc/pam-modules.texi: Fix a typo.
        * doc/pam_ldaphome.8in: Likewise.
        * pamck/pamck.c: Update copyright years.

        * pam_fshadow/pam_fshadow.c: Suppress cc warnings.
        * pam_groupmember/pam_groupmember.c: Likewise.
        * pam_ldaphome/pam_ldaphome.c: Likewise.
        * pam_log/pam_log.c: Likewise.
        * pam_regex/pam_regex.c: Likewise.

2015-01-30  Sergey Poznyakoff  <gray@gnu.org.ua>

        Document user-keys-boundary


2015-01-28  Sergey Poznyakoff  <gray@gnu.org.ua>

        Update copyright dates.


2015-01-28  Sergey Poznyakoff  <gray@gnu.org.ua>

        pam_ldaphome: run initrc command as user.

        * examples/usergitconfig: Documentation formatting change.
        * lib/graypam.h (gray_2nrealloc): New function.
        * lib/mem.c (gray_2nrealloc): New function.
        * pam_fshadow/pam_fshadow.c (fgetpwent): Skip malformed entries.
        * pam_ldaphome/pam_ldaphome.c (runas): New finction.
        (run_prog): Switch to user privileges unless initrc-root is
        true.

        * NEWS: Update.
        * doc/pam-modules.texi: Update.
        * doc/pam_ldaphome.8in: Update.

2014-12-05  Sergey Poznyakoff  <gray@gnu.org>

        Build pam_fshadow even if fgetpwent is not defined.

        * configure.ac: Only check if fgetpwent is defined, don't
        disable the module if it is not.
        * pam_fshadow/pam_fshadow.c [!HAVE_FGETPWENT] (fgetpwent):
        Provide a replacement.

2014-12-04  Sergey Poznyakoff  <gray@gnu.org.ua>

        Implement audit option

        Audit is equivalent to debug=100, i.e. it enables logging 
        maximum debugging output.

2014-09-16  Sergey Poznyakoff  <gray@gnu.org.ua>

        pam_ldaphome: Make user-specific key boundary configurable.

        * pam_ldaphome/pam_ldaphome.c (store_pubkeys): Use the value of
        the user-keys-boundary option as the boundary of user-specific
        key section.

2014-09-12  Sergey Poznyakoff  <gray@gnu.org.ua>

        Provide a way to keep user-defined pubkeys in file.

        A user can add his public keys to the authorized_keys file
        without disturbing the key synchronization from the LDAP
        database.  The #:end comment in the file marks the end of area
        synchronized with LDAP.  Everything below this comment is
        preserved intact.

        * pam_ldaphome/pam_ldaphome.c (pubkeyfile): New struct.
        (pubkeyfile_open,pubkeyfile_read,pubkeyfile_init)
        (pubkeyfile_write,pubkeyfile_remove_lines)
        (pubkeyfile_alloc_lines,pubkeyfile_insert_lines)
        (pubkeyfile_close): New functions.
        (store_pubkeys): Use pubkeyfile functions to operate on the
        authorized_keys file.

2014-09-11  Sergey Poznyakoff  <gray@gnu.org>

        Bugfixes

        * pam_ldaphome/pam_ldaphome.c (check_groups): Take into account
        primary group.
        * doc/pam_regex.8: Fix escaping.

2014-07-26  Sergey Poznyakoff  <gray@gnu.org.ua>

        Improve docstrings in examples.


2014-07-25  Sergey Poznyakoff  <gray@gnu.org.ua>

        Implement TLS in perl utilities.


2014-07-25  Sergey Poznyakoff  <gray@gnu.org.ua>

        Raise version number to 1.9.90


2014-07-25  Sergey Poznyakoff  <gray@gnu.org.ua>

        pam_ldaphome: read /etc/ldap.conf file.

        * lib/env.c (gray_env_read_tr): New function.
        (gray_env_read): Rewrite using gray_env_read_tr.
        (gray_env_merge): New function.
        * lib/escape.c (gray_escape_string): Remove useless typecasts.
        * lib/graypam.h (gray_env_read_tr)
        (gray_env_merge): New protos.
        * pam_ldaphome/pam_ldaphome.c (ldap_config_name): New variable.
        (ldap_connect): Use 'ssl' keyword, if 'tls' is not defined.
        (ldaphome_main): New keyword ldap-config

        * doc/pam-modules.texi: Document reading system-wide ldap.conf
        * doc/pam_ldaphome.8in: Likewise.

2014-07-24  Sergey Poznyakoff  <gray@gnu.org.ua>

        pam_ldaphome: provide an option to specify CA certificate file
        for TLS

        * pam_ldaphome/pam_ldaphome.c (ldap_connect): New option
        tls-cacert
        * doc/pam-modules.texi: Document tls-cacert
        * doc/pam_ldaphome.8in: Likewise.

2014-05-21  Sergey Poznyakoff  <gray@gnu.org>

        Version 1.9

        * NEWS: Update version number.
        * configure.ac: Likewise.
        * doc/pam_ldaphome.8in: Reorder configuration statements.
        * pamck/pamck.c: Update copyright years.

2014-05-21  Sergey Poznyakoff  <gray@gnu.org.ua>

        Fix docs.

        * doc/Makefile.am (check-ldaphome-config): Take into account 
        gray_env_get_bool (see 7636fa3e).
        * doc/pam-modules.texi: Update; final check.
        * NEWS: Update.

2014-05-21  Sergey Poznyakoff  <gray@gnu.org.ua>

        Remove deprecated use of INCLUDES from Makefiles.

        * Make.rules: Use AM_CPPFLAGS instead of INCLUDES.
        * Makefile.am (SUBDIRS): Add examples.
        (dist-hook): Remove.
        * configure.ac: Build examples/Makefile.
        * examples/Makefile.am: New file.
        * pam_fshadow/Makefile.am: Include Make.rules on top. Use += to
        set AM_CPPFLAGS
        * pam_groupmember/Makefile.am: Likewise.
        * pam_ldaphome/Makefile.am: Likewise.
        * pam_log/Makefile.am: Likewise.
        * pam_regex/Makefile.am: Likewise.
        * pam_sql/Makefile.am: Likewise.
        * pam_umotd/Makefile.am: Likewise.

2014-05-21  Sergey Poznyakoff  <gray@gnu.org.ua>

        Document the use of ldappubkey


2014-05-20  Sergey Poznyakoff  <gray@gnu.org.ua>

        pam_ldaphome: don't run initrc program if the home dir already
        exists.

        * pam_ldaphome/pam_ldaphome.c (create_exists): New return code.
        (create_home_dir): Return create_exists if the directory already 
        exists.
        (ldaphome_main): Run initrc only after creating the home dir.

2014-05-20  Sergey Poznyakoff  <gray@gnu.org.ua>

        Version 1.8.93


2014-05-19  Sergey Poznyakoff  <gray@gnu.org.ua>

        New utility "ldappubkey".

        * NEWS: Document new features.
        * doc/pam-modules.texi: Document usergitconfig.
        * doc/pam_ldaphome.8in: Update.
        * examples/ldappubkey: New file.
        * examples/usergitconfig: Refer to perldoc on error.
        * lib/env.c (gray_env_get_bool): New function.
        * lib/graypam.h (gray_env_get_bool): New proto.
        * pam_ldaphome/pam_ldaphome.c (import_public_key): Do nothing if
        "import-public-keys" is set to "no".
        (pam_sm_authenticate): New function.

2014-05-11  Sergey Poznyakoff  <gray@gnu.org.ua>

        Allow to modify environment of initrc-command

        * pam_ldaphome/pam_ldaphome.c (find_env,locate_unset)
        (env_concat,parsenv,env_setup): New statics.
        (run_prog): Use execve and env_setup to set up the environment.

        * doc/pam-modules.texi: Document new statements.
        * doc/pam_ldaphome.8in: Likewise.

2014-05-11  Sergey Poznyakoff  <gray@gnu.org.ua>

        Minor fix

        * examples/usergitconfig: Use bindpw attribute.

2014-05-10  Sergey Poznyakoff  <gray@gnu.org.ua>

        pam_ldaphome: optionally run external program after populating
        home directory.

        This allows for dynamic modifications of the initial directory
        contents, depending on the login name of the user.  The name of
        the external program is given with the initrc-command
        configuration statement.  It is invoked with the single
        argument, specifying the login name.  The standard input is
        closed, standard output is diverted to standard error.  Standard
        error can be diverted to a file using the initrc-log statement.

        * Makefile.am (EXTRA_DIST): Add examples.
        * examples/usergitconfig: New file.
        * pam_ldaphome/pam_ldaphome.c (run_prog, run_initrc): New
        statics.
        (pam_sm_authenticate): Call run_initrc prior to calling 
        import_public_key.

2014-05-06  Sergey Poznyakoff  <gray@gnu.org.ua>

        New module: pam_groupmember

        * Makefile.am: Add pam_groupmember.
        * configure.ac: Likewise.
        * NEWS: Update.

        * pam_groupmember/Makefile.am: New file.
        * pam_groupmember/pam_groupmember.c: New file,

        * doc/Makefile.am: Add pam_groupmember.8
        * doc/pam-modules.texi: Document pam_groupmember
        * doc/pam_groupmember.8: New file.

        * lib/graypam.h (gray_calloc, gray_strdup): New protos.
        * lib/mem.c (gray_calloc, gray_strdup): New functions.

2014-04-04  Sergey Poznyakoff  <gray@gnu.org.ua>

        Escape dashes in pam_ldaphome.8in


2014-04-04  Sergey Poznyakoff  <gray@gnu.org.ua>

        Add pam_ldaphome(8) manpage.


2014-04-02  Sergey Poznyakoff  <gray@gnu.org.ua>

        Fix pam-modules.texi


2014-03-30  Sergey Poznyakoff  <gray@gnu.org.ua>

        Add manpages; remove invariant sections from pam-modules.texi


2014-03-28  Sergey Poznyakoff  <gray@gnu.org.ua>

        Fix docs, raise version number to get in synch with the ftp.


2014-03-28  Sergey Poznyakoff  <gray@gnu.org.ua>

        Bugfix.

        * lib/transform.c (gray_free_transform_expr): Fix the loop.

2014-02-11  Sergey Poznyakoff  <gray@gnu.org.ua>

        Update copyright years, set version 1.7.92


2014-02-11  Sergey Poznyakoff  <gray@gnu.org.ua>

        pam_ldaphome: control where home directories can be created

        * pam_ldaphome/pam_ldaphome.c (create_interdir): Fail if unable
        to chown,
        (store_pubkeys): Log error if fchown or ftruncate fails.
        (dir_in_path): New static function.
        (create_home_dir): Return enum create_status. If allow-home-dir
        statement is present, create directory only if it is located in
        one of the directories listed in it, otherwise return
        create_skip.
        (pam_sm_authenticate): Import keys only if home dir exists.
        * doc/pam-modules.texi: Document allow-home-dir.

2013-04-16  Sergey Poznyakoff  <gray@gnu.org.ua>

        Bugfixes.

        * configure.ac: Do not call PM_ENABLE within a conditional.
        * pam_ldaphome/pam_ldaphome.c (import_public_key): Exit 
        gracefully if keys == NULL.

2012-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

        Make pam_fshadow reentrant.

        * pam_fshadow/pam_fshadow.c (_pam_parse): Initialize global 
        variables, in case pam_fshadow is called twice in the same 
        stack. Do not register rexp in pam data, this hurts 
        reentrability.
        (pam_sm_authenticate): Free rexp.

2012-08-01  Sergey Poznyakoff  <gray@gnu.org.ua>

        Improve pam_ldaphome

        New keywords: bindpwfile and keyfile-mode.

        * doc/pam-modules.texi: Document bindpwfile and keyfile-mode.
        * pam_ldaphome/pam_ldaphome.c (ldap_bind): Read password from 
        file, if bindpwfile is given.
        (store_pubkeys): Optionally enforce file mode, given by the 
        keyfile-mode configuration statement.
        * pamck/pamck.c (main): Fix a typo.

2012-07-30  Sergey Poznyakoff  <gray@gnu.org.ua>

        Merge branch 'master' of
        ssh://git.gnu.org.ua/gitroot/pam-modules


2012-07-15  Sergey Poznyakoff  <gray@gnu.org.ua>

        Upgrade imprimatur.


2012-07-05  Sergey Poznyakoff  <gray@gnu.org.ua>

        Version 1.7.91


2012-07-05  Sergey Poznyakoff  <gray@gnu.org.ua>

        Document pam_umotd.


2012-07-05  Sergey Poznyakoff  <gray@gnu.org.ua>

        pam_umotd: control the LA value.

        * pam_umotd/pam_umotd.c: New option max-la.
        (pam_sm_open_session): Return PAM_IGNORE if the 5 minute LA is
        greater than the max-la value.

2012-07-04  Sergey Poznyakoff  <gray@gnu.org.ua>

        Fix the congfigure script.

        * acinclude.m4 (PM_ENABLE): Revamp. Change meaning of the second
        argument.
        * configure.ac: Reflect the above change.
        * pam_umotd/pam_umotd.c: Remove unused includes.

2012-07-04  Sergey Poznyakoff  <gray@gnu.org.ua>

        Bugfixes.

        * acinclude.m4 (PM_ENABLE): Don't test $build_$1 variable before
        its initialization.
        * pam_umotd/pam_umotd.c: Remove unnecessary includes.
        (exec_file): Argv is not const.
        (pam_sm_open_session): PAM does not guarantee that argv[] is
        null-terminated. Create a null-terminated copy for use by
        exec_file.

2012-07-04  Sergey Poznyakoff  <gray@gnu.org.ua>

        Bugfixes.

        * pam_umotd/pam_umotd.c (logfile_name): Static.
        (max_output_size): New variable.
        (pam_opt): New option max-size.
        (read_fd): Limit output size.
        (exec_file): Likewise.

2012-07-04  Sergey Poznyakoff  <gray@gnu.org.ua>

        Update copyright years.


2012-07-04  Sergey Poznyakoff  <gray@gnu.org.ua>

        Add pam_umotd module.

        * Makefile.am [PAM_COND_UMOTD] (UMOTD_DIR): New variable.
        (SUBDIRS): Add $(UMOTD_DIR).
        * configure.ac: Check for security/pam_ext.h. Add pam_umotd
        module.
        * lib/graypam.h (pam_opt_type)<pam_opt_rest>: New type.
        * lib/parseopt.c (gray_parseopt): Upon encoutnering pam_opt_rest
        parameter, stop further processing and return the index of the
        next argument.
        * pam_umotd/Makefile.am: New file.
        * pam_umotd/pam_umotd.c: New file.

2012-05-23  Sergey Poznyakoff  <gray@gnu.org.ua>

        Bugfixes.

        * configure.ac: Version 1.7.90.
        * NEWS: Update.
        * doc/Makefile.am (EXTRA_DIST): Remove leftover files.
        * pam_ldaphome/pam_ldaphome.c (ldap_connect): Set LDAP version 
        before enforcing TLS.

2012-05-18  Sergey Poznyakoff  <gray@gnu.org.ua>

        Enable fine-grained control over TLS.

        * doc/pam-modules.texi: Document new tls values.
        * pam_ldaphome/pam_ldaphome.c (ldap_connect): The tls keyword is
        tri-state.  Allowed values are: "yes", "no" and "only".

2012-05-18  Sergey Poznyakoff  <gray@gnu.org.ua>

        Improve the docs.

        * doc/Makefile.am (check-all-options): Check ldaphome options.
        (check-ldaphome-config): New rule.
        (check-options): Add check-ldaphome-config.
        * doc/pam-modules.texi: Add missing documentation.

2012-05-18  Sergey Poznyakoff  <gray@gnu.org.ua>

        Improve configuration for pam_ldaphome.

        * doc/pam-modules.texi: Document new configuration keywords.
        * pam_ldaphome/pam_ldaphome.c (get_intval): Take additional
        "base" argument. Return 1 if the requested keyword is not 
        present in the database, -1 on error and 0 on success.
        (ldap_connect): Consult the "ldap-version" configuration 
        variable for the LDAP version to use.
        (create_home_dir): Read mode for the home directory from the
        configuration variable "home-dir-mode".

2012-05-17  Sergey Poznyakoff  <gray@gnu.org.ua>

        Document pam-modules.texi


2012-05-16  Sergey Poznyakoff  <gray@gnu.org.ua>

        Minor improvements.

        * pam_ldaphome/pam_ldaphome.c (get_ldap_attrs): restore pubkey 
        debug output.
        (pam_sm_authenticate): New keyword "authorized_keys"

2012-05-15  Sergey Poznyakoff  <gray@gnu.org.ua>

        Improve handling of multiple keys.

        * pam_ldaphome/pam_ldaphome.c (get_ldap_attrs): return array of
        values.
        (store_pubkeys): Fix key comparison.

2012-05-15  Sergey Poznyakoff  <gray@gnu.org.ua>

        Allow for multiple authorized keys.

        * pam_ldaphome/pam_ldaphome.c (argcvz_free,trimnl): New
        functions.
        (get_ldap_attr): Trim trailing newlines from the return value.
        (ldap_search): Rename to get_pubkeys. Return null-terminated
        array of sorted lexicographically keys.
        (store_pubkey): Rename to store_pubkeys, take char ** as its 
        first argument. Store all keys unless the file already contains 
        exactly that set of keys.
        (import_public_key): Call store_pubkeys. Use argcvz_free to free
        the keys.

2012-05-15  Sergey Poznyakoff  <gray@gnu.org.ua>

        Bugfixes.

        * pam_ldaphome/pam_ldaphome.c (argcv_free): Fix multiple free
        (argcv_concat): Fix overly conservative size calculation and 
        concatenation loop.
        (parse_ldap_uri): Fix URI reconstruction.
        (dir_copy_loop): Remove unused variable.
        (store_pubkey): Return meaningful error code.
        (import_public_key): Propagate return code from store_pubkey.
        (create_home_dir): Return meaningful error code.
        (pam_sm_authenticate): Propagate return code from
        create_home_dir and import_public_key to the caller.
        * pam_log/Makefile.am: Remove BUILD_PAM_LOG substitution
        (complements 1a80b647).

2012-05-15  Sergey Poznyakoff  <gray@gnu.org.ua>

        pam_ldaphome: implement populate_homedir.


2012-05-14  Sergey Poznyakoff  <gray@gnu.org.ua>

        Initialize submodules in autogen.sh


2012-05-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Revamp build system. Add pam_ldaphome module.
	
	* configure.ac: Test for ldap.
	(AC_OUTPUT): Create pam_ldaphome/Makefile.
	* acinclude.m4 (PM_ENABLE): Declare PAM_COND_<item>
	conditional in addition to BUILD_PAM_<item> substitution
	variable.
	* Makefile.am (SUBDIRS): Include most modules via
	conditionally defined Makefile variables.
	
	* lib/graypam.h (gray_env): New struct.
	(gray_env_get,gray_env_free,gray_env_read)
	(gray_boolean_true_p): New protos.
	* lib/env.c: New file.
	* lib/Makefile.am (libgraypam_la_SOURCES): Add env.c
	
	* pam_fshadow/Makefile.am: Remove BUILD_PAM_FSHADOW
	substitution.
	* pam_regex/Makefile.am: Remove BUILD_PAM_REGEX
	substitution.
	* pam_sql/pam_sql.c (free_config, boolean_true_p)
	(read_config): Remove. Use gray_env_* functions
	instead. All uses updated.
	* pam_regex/pam_regex.c: Fix typo.

	* pam_ldaphome/Makefile.am: New file.

2011-09-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Allow installers to link modules with alternative crypt(3)
	implementations.
	
	* configure.ac: New option --with-crypt-lib.
	* README: Update.

2011-08-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	Various bugfixes.
	
	* pam_fshadow/pam_fshadow.c (pam_sm_authenticate): Fix
	erroneous conditional, which allowed for logins with
	arbitrary passwords if `nopasswd' option was given.
	* lib/graypam.h (gray_free_transform_expr): New proto.
	* lib/transform.c (transform) <has_regex>: New member.
	(free_transform,free_segment): New statics.
	(gray_free_transform_expr): New function.
	* pam_regex/pam_regex.c (pam_sm_authenticate): Free slist and
	transform expression.

2011-04-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 1.7
	
	* configure.ac: Enable silent rules.
	Require autoconf 2.63, automake 1.11.
	* pam_log/pam_log.c: Suppress a gcc warning.
	* NEWS: Update.
	
2011-04-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Allow for the use of `CALL proc' in MySQL queries.

	* pam_sql/pam_mysql.c (flush_result): New static.
	(mysql_do_query): Call mysql_real_connect with the 
	CLIENT_MULTI_RESULTS flag.
	(check_query_result, mysql_setenv, gpam_sql_acct): Call flush_result
	after freeing the result.

2009-02-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes
	
	* pam_fshadow/pam_fshadow.c: Protect shadow-related code with
	ifdefs.
	* configure.ac: Check for shadow.h, struct spwd and fgetspent. Do
	not disable pam_fshadow.c if they are not present.

	Rewrite Makefile.am's in a clearer and simpler way
	
	* configure.ac: Require libtool 2.2.5a
	* Make.rules (.c.lo, .lo.la): Remove
	(AM_LDFLAGS, INCLUDES, LIBS): New assignments.
	* pam_sql/Makefile.am, pam_fshadow/Makefile.am,
	pam_sql/Makefile.am, pam_regex/Makefile.am,
	pam_log/Makefile.am: Rewrite.
	* pam_sql/pam_sql.h, pam_sql/pam_mysql.c, pam_sql/pam_pgsql.c.
	pam_sql/pam_sql.c: Rewrite.
	* pam_sql/sha1.h, pam_sql/md5.c, pam_sql/md5.h, pam_sql/sha1.c
	* pam_fshadow/pam_fshadow.c: New option [no]shadow
	* doc/pam-modules.texi: Update.

	* lib/graypam.h (gray_trim_ws): New proto
	* lib/strutil.c: New file.
	* lib/Makefile.am: Add strutil.c

2009-02-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	* pam_fshadow/Makefile.am: Build the module conditionally.
	* pam_regex/Makefile.am: Likewise.
	* pam_log/Makefile.am: Likewise.
	* NEWS, README: Update.
	* configure.ac: Raise version number to 1.5. Update bug-report
	address.
	Add options for disabling fshadow, log and regex.
	* acinclude.m4: Prefix all macros with PM_
	(PM_CHECK_LIB): Rewrite.

2008-03-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac, NEWS: Version 1.4
	* doc/pam-modules.texi: Update.
	* doc/macros.texi (opsummary,kwsummary): Remove anchor
	definitions, they cause grief in texi2html.

2008-03-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	* doc/pam-modules.texi: Improve docs.

	Documentation checking framework:
	
	* doc/macros.texi, doc/check-docs.sh, doc/mastermenu.el,
	doc/untabify.el, doc/rendition.texi: New files.
	* pam_regex/pam_regex.c: Remove useless use_authtok option.
	* pam_sql/pam_mysql.c, pam_sql/pam_pgsql.c,
	pam_sql/pam_sql.c: Pacify `make check-sql-config' in doc.
	* doc/Makefile.am: Add check-* rules.
	* doc/pam-modules.texi: Update.

	* configure.ac: Check for pam libraries and header files.
	* pam_sql/pam_mysql.c (mysql_setenv): Protect by #ifdef
	HAVE_PAM_MISC_SETENV.  Prevent coredumps on NULL values.
	* pam_sql/pam_pgsql.c (pgsql_setenv): Likewise.
	* pam_sql/Makefile.am (pam_mysql_la_LDADD,pam_pgsql_la_LDADD): Add
	@PAM_MISC@.
	* pam_sql/pam_sql.c (read_config): Read lines of arbitrary length.

	* pam_sql/pam_mysql.c, pam_sql/pam_pgsql.c: Implement `setenv'
	method.
	* pam_sql/pam_sql.c, pam_fshadow/pam_fshadow (_pam_get_password):
	Set PAM_AUTHTOK.

2008-03-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	* doc/pam-modules.texi: Update.

	* pam_fshadow/pam_fshadow.c, pam_sql/pam_mysql.c,
	pam_sql/pam_sql.c, pam_regex/pam_regex.c: Ensure passwords might
	get divulged only at debugging level 100.

2008-03-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add session management to pam_sql.

	* NEWS, configure.ac: Updated. Set version to 1.3.90.
	
	* lib/escape.c, lib/vartab.c: New files.
	* lib/graypam.h (gray_expand_argv)
	(gray_expand_string, gray_escape_string): New functions.
	(struct keyword): New declaration.
	(gray_find_keyword): New function.
	* lib/Makefile.am (libgraypam_la_SOURCES): Add vartab.c and
	escape.c.

	* pam_log/pam_log.c: Use gray_find_keyword and gray_expand_argv.
	
	* pam_sql/pam_mysql.c, pam_sql/pam_pgsql.c (verify_user_pass):
	Change signature.
	(sql_acct): New function.
	* pam_sql/pam_sql.c (verify_user_pass): Change signature.
	(_pam_parse): Initialize globals.
	(free_config): Reset config_env to NULL.
	(read_config): Set config_env to NULL.
	(get_query,get_query2): New functions.
	(pam_sm_authenticate): Call gray_pam_init, update call to
	verify_user_pass.
	(sql_session_mgmt,pam_sm_open_session,pam_sm_close_session): New
	functions. 

2008-03-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	* pam_regex/pam_regex.c (pam_opt): Fix a typo: rename "user_name"
	option to "user".
	(pam_sm_authenticate): Bugfix

2008-03-15  Sergey Poznyakoff  <gray@gnu.org.ua>
	
	-= Release 1.3 =- 

2008-03-15  Sergey Poznyakoff  <gray@gnu.org.ua>
	
	Initial framework for LDAP-style password hashes.
	
	* pam_sql/pam_mysql.c, pam_sql/pam_pgsql.c: Call
	gray_check_ldap_pass if configuration variable allow-ldap-pass is
	set.
	* lib/graypam.h (gray_base64_decode, gray_check_ldap_pass): New
	prototypes.
	* lib/Makefile.am (libgraypam_la_SOURCES): Add new files.
	* lib/sha1.h, lib/base64.c, lib/md5.c, lib/ldappass.c, lib/md5.h,
	lib/sha1.c: New files.

2008-03-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	* doc/Makefile.am: Use texi2html to produce html files.
	* doc/gendocs_template: Use latest version from Texinfo.

	-= Release 1.2 =-
	
	* lib/graypam.h: Minor change.
	* pam_sql/pam_pgsql.c (verify_user_pass): port is optional.
	Fix erroneous argument to PQsetdbLogin.
	* pam_sql/pam_sql.c (pam_opt): Bugfix.
	
	* doc/pam-modules.texi: Minor change.

	* NEWS, doc/pam-modules.texi: Document new regexp default for
	pam_fshadow.c 

	* lib/parseopt.c: New file.
	* lib/Makefile.am (libgraypam_la_SOURCES): Add parseopt.c
	* lib/graypam.h (gray_parseopt, gray_wait_debug_fun): New
	functions
	(CNTL_DEBUG_LEV, CNTL_SET_DEBUG_LEV): Removed.
	* lib/log.c (gray_wait_debug): New functions.
	* pam_fshadow/pam_fshadow.c, pam_sql/pam_sql.c,
	pam_regex/pam_regex.c, pam_log/pam_log.c: Use gray_parseopt for
	command line parsing.

2008-03-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac (PAM_COMMON_INCLUDES): Add -I${top_srcdir}/lib.
	(AC_OUTPUT): Add lib/Makefile.
	* doc/pam-modules.texi: Document `transform' option.
	* Make.rules: New file.

	* lib/mem.c, lib/slist.c, lib/log.c, lib/converse.c,
	lib/graypam.h, lib/Makefile.am, lib/transform.c.

	* pam_regex/pam_regex.c: Implement user name transformations.
	
	* pam_fshadow/Makefile.am, pam_sql/Makefile.am:
	Add ../lib/libgraypam.la to LDADD
	* pam_fshadow/pam_fshadow.c, pam_sql/pam_mysql.c,
	pam_sql/pam_pgsql.c, pam_sql/pam_sql.c: Use functions from ../lib.
	
2007-08-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	* pam_fshadow/Makefile.am, pam_regex/Makefile.am,
	pam_log/Makefile.am: Place INCLUDES in front of CPPFLAGS
	
	* pam_sql/Makefile.am: Place INCLUDES in front of CPPFLAGS
	(pam_mysql.la): Redo rule
	
	* pam_sql/sha1.h, pam_sql/sha1.c, pam_sql/md5.h, pam_sql/md5.c:
	Replace with another version 
	
	* pam_fshadow/pam_fshadow.c: Minor change
	* pam_sql/pam_mysql.c (sql_expand_query): Bugfix
	Implement pure md5 passwords
	(verify_user_pass): Lots of bugfixes
	* pam_sql/pam_sql.c (read_config): Lots of bugfixes
	(pam_sm_setcred,pam_sm_acct_mgmt): Add required functions
	
2007-08-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS, configure.ac: Version 1.2
	
	* pam_fshadow/pam_fshadow.c: Include config.h and time.h
	* pam_sql/pam_mysql.c, pam_sql/pam_pgsql.c, pam_sql/pam_sql.c: Use
	_pam_log for diagnostics.
	* pam_regex/pam_regex.c (pam_sm_authenticate): Remove unused variable.
	* configure.ac: New option --enable-debug
	* common.c (wait_debug): Bugfix
	* pam_log/pam_log.c: Include ctype.h
	(parse_priority): Change return type.
	* pam_fshadow/Makefile.am, pam_log/Makefile.am,
	pam_regex/Makefile.am, pam_sql/Makefile.am: Use CPPFLAGS in cc rules.
	
2007-08-06  Sergey Poznyakoff  <gray@gnu.org.ua>

        Relicense under GPLv3.

2007-08-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS: Update
	* configure.ac: Version 1.0.90
	* common.c: Include regex.h;
	(_cleanup_regex, make_str): New functions
	* doc/pam-modules.texi: Update
	* pam_fshadow/Makefile.am (pam_fshadow_la_LDADD): Add @LIBS@
	* pam_fshadow/pam_fshadow.c: Implement virtual domain
	authentication.
	* pam_regex/pam_regex.c (make_str): Moved to ../common.c
	* pam_sql/pam_sql.c (verify_user_pass): static

2006-09-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: New option --without-sql

	* doc/pam-modules.texi: Updated
	* common.c: Moved here syslog-reporting and debugging functions
	* pam_fshadow/Makefile.am (AM_CPPFLAGS): Define MODULE_NAME
	* pam_log/Makefile.am: Likewise
	* pam_regex/Makefile.am: Likewise

	* pam_fshadow/pam_fshadow.c: Update
	* pam_regex/pam_regex.c: Update
	* pam_sql/pam_sql.c: Update

	* pam_sql/pam_mysql.c (sql_expand_query): Bugfix
	* pam_sql/pam_pgsql.c (sql_expand_query): Bugfix
	
	* pam_log/pam_log.c: Implemented
	
2006-09-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	* acinclude.m4: New file
	* common.c: New file
	* pam_log: New directory
	* pam_log/pam_log.c: New file
	* pam_log/Makefile.am: New file
	* pam_log/.cvsignore: New file
	
	* pam_sql: New directory
	* pam_sql/Makefile.am: New file
	* pam_sql/pam_mysql.c: New file
	* pam_sql/pam_pgsql.c: New file
	* pam_sql/pam_sql.c: New file
	* pam_sql/pam_sql.h: New file
	* pam_sql/sha1.c: New file
	* pam_sql/sha1.h: New file
	* pam_sql/.cvsignore: New file

	* Makefile.am (SUBDIRS): Add pam_log pam_sql
	* configure.ac: Add library versioning. Check for libmysqlclient
	and libpq. Create pam_log/Makefile and pam_sql/Makefile
	* pam_fshadow/Makefile.am, pam_regex/Makefile.am: Update
	* pam_fshadow/pam_fshadow.c, pam_regex/pam_regex.c: Include <common.c>

2006-09-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	* pam_regex/pam_regex.c: New option 'user=[arg]'
	* doc/pam-modules.texi: Update
	
2005-08-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	* autogen.sh: Updated
	* pam_regex/pam_regex.c: Use stdarg.h
	(regex): Made const

	* NEWS: Updated
	* README: Updated
	* configure.ac: Change auxiliary directory to build-aux, change
	version number to 1.0, change bug report address.

	* doc: New directory
	* doc/Makefile.am: New file
	* doc/pam-modules.texi: New file
	* doc/gendocs_template: New file
	* doc/fdl.texi: New file
	* doc/.cvsignore: New file

	* configure.ac: Add doc/
	* Makefile.am: Likewise
	* pam_fshadow/pam_fshadow.c: Updated copyright statement
	* pam_regex/pam_regex.c: Likewise

2004-05-27  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* INSTALL: Removed
	* Makefile.in: Removed
	* pam_fshadow/Makefile.in: Removed
	* pam_regex/Makefile.in: Removed
	* .cvsignore: New file
	* pam_fshadow/.cvsignore: New file
	* pam_regex/.cvsignore: New file
	* pam_fshadow/pam_fshadow.c: Minor fixes.
	* README: Updated
	* autogen.sh: Updated
	
2004-02-09  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* Put the two modules in a single packet and imported them
	to CVS.

2001-09-22  Sergey Poznyakoff <gray@mirddin.farlep.net>
	
	First release. 
        

Local Variables:
mode: change-log
version-control: never
End:

Local Variables:
mode: change-log
version-control: never
buffer-read-only: t
End:

 Copyright (C) 2001-2022 Sergey Poznyakoff

 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 3, or (at your option)
 any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License along
 with this program.  If not, see <http://www.gnu.org/licenses/>.
