2011-07-29
	* tests/: remove some bashisms, add more explicit error reporting to
	the test harness (trac #1, Aleksander Adamowski)

2011-07-28
	* src/session.c,src/session.h: make the current open/close session
	function into one that's called with an extra parameter to help
	clarify when we're calling it
	* src/auth.c: call the new open/close session "worker" function with
	information indicating that it's really a setcred call
	* configure.ac: add a --with-default-no-cred-session option
	* src/options.c,src/options.h: track the cred_session option
	* src/pam_krb5.5.in,src/pam_krb5.8.in: note "cred_session"
	* src/session.c: when opening/closing a session, if cred_sessios is
	false and we're called from pam_sm_setcred, just return success
	* src/auth.c: when we get non-"external" creds, be sure to note that
	* src/sly.c: if libpam has a KRB5CCNAME set, look there for creds
	before looking in the default location
	* src/stash.c: always re-read "external" creds when called by libpam
	* src/tokens.c: create a temporary in-memory ccache for use in
	obtaining tokens using v5 creds, since we might not be creating one
	on disk any more

2011-04-27
	* configure.ac: check for krb5_set_trace_callback()
	* src/log.h,src/logpam.c,src/logstdio.c: add a trace() function
	to log trace messages along with debug messages
	* src/options.c: set the trace callback to our own logging function
	if the "trace" option is enabled
	* src/pam_krb5.5.in,src/pam_krb5.8.in,README: make a note about
	the "trace" option

2011-04-27
	* src/password.c(pam_sm_chauthtok): if we managed to get password
	changing creds the first time, don't try again, but do prompt for
	a password if we're still expected to be the module that does it

2011-03-25
	* src/stash.c(_pam_krb5_stash_external_read): add a flag to track
	whether or not our creds were externally obtained, and set it
	correctly
	* src/session.c(pam_sm_open_session): only create a v5 ccache if
	the creds we have weren't externally obtained (#690832)

2011-03-03
	* src/v5.c(v5_change_password): prefer krb5_change_password() over
	krb5_set_password()
	* configure.ac: go back to checking for address manipulation
	declarations
	* tests: disable tests that depend on address manipulation if we
	didn't find those functions; run the test kdc on tcp, too

2010-09-07
	* src/kuserok.c(add a double-check using krb5_aname_to_localname()
	when options->always_allow_localname is set)
	* src/options.c: parse options->always_allow_localname

2010-07-22
	* src/v5.c(v5_validate_ccache): add, using user-to-user auth with an
	already-present ccache to verify that the KDC that issued the just-
	obtained creds was the same one that issued the previously-obtained
	ones.
	* src/v5.c(v5_validate_keytab): rename from the previous v5_validate
	function.
	* src/v5.c(v5_validate): try to validate using the keytab first, and
	if we don't get a definite answer, maybe try with the default ccache
	* src/v5.c(v5_get_creds): keep track of whether or not validation
	found keys that could be used for validation
	* src/options.c,src/v5.c: make validation using user-to-user logic an
	option, and enable it by default
	* src/v5.c(v5_validate_keytab): split out the server principal
	selection logic into a separate "v5_select_keytab_service" function
	* src/v5.c(v5_validate_keytab): rename to v5_validate_using_keytab,
	using v5_select_keytab_service() to select a service name, or using
	NULL if it fails for whatever reason.
	* src/v5.c(v5_validate_ccache): rename to v5_validate_using_ccache
	* src/v5.c(v5_get_creds): drop logic that cares about whether or not
	we found acceptable keys
	* src/options.c,src/pam_krb5.5.in,src/pam_krb5.8.in: switch to enabling
	validation by default

2010-03-29
	* src/options.c,src/options.h,src/acct.c,src/auth.c: add and heed an
	"ignore_k5login" boolean option.

2010-03-08
	* krb5.spec,configure.ac: 2.3.11

2010-02-24
	* src/v5.c,v5.h: add wrapper functions for reading a cred keyblock as
	a keyblock (v5_creds_get_key) and a ticket's client
	(v5_ticket_get_client), and a wrapper for the set-user-to-user-key
	function (v5_auth_con_setuserkey).
	* src/uuauth.c: use the just-introduced abstractions
	* src/v5.c,v5.h: add wrapper function for krb5_enctype_to_string()

2010-02-12
	* src/minikafs.c: crank up debug verbosity (Chris Wing, #157107)
	* src/kuserok.c(_pam_krb5_kuserok): also set up the user's ccache,
	in case there's a process on the box that expects the user to have
	creds before it can look up the location of the user's .k5login file
	or read from it (#563442)
	* src/harness.c: fix --debug
	* src/kuserok.c,src/storetmp.c: don't close stdio on our helpers if
	we don't need to
	* src/logstdio.c: make it clear when a subprocess is debug logging

2010-01-19
	* src/minikafs.c: call krb5_allow_weak_crypto(), if defined, before
	doing anything with DES.  call krb5_enctype_enable(), if defined,
	before attempting to get a credential with a specific enctype.

2010-01-07
	* configure.in: check for krb5_change_password, krb5_set_password,
	krb5_xfree
	* src/v5.c: add v5_change_password(); make v5_free_unparsed_name()
	call krb5_xfree(), if it exists, in preference over
	krb5_free_unparsed_name() or free()
	* src/password.c: use v5_change_password()

2009-12-11
	* Makefile.am,configure.ac: relegate use of RPM to the 'archive'
	target, don't use it in our regular build machinery
	* configure.ac,src/options.c,src/stash.c,src/v4.c,src/v5.c: add a
	'multiple_ccaches' option, and change the default behavior from on
	to off
	* configure.ac,src/options.c: allow setting a default value for
	chpw_prompt

2009-11-10
	* src/harness.c: we're not using our internal logging stuff, so we can
	eject most of the Kerberos-specific bits

2009-10-07
	* src/prompter.c(_pam_krb5_prompt_type): add, abstracting out an
	API difference.
	* src/prompter.c(_pam_krb5_generic_prompter): use prompt type
	information to override prompt text for new passwords.  Change saving
	of the PAM_AUTHTOK so that we do so only when we've asked for both a
	new password and confirmation.  Fix what might have been a bug in
	how we number responses when we're asked for the current password and
	we're suppressing such requests in unknown cases where libkrb5 could
	ask both for the current and new passwords.
	* src/tokens.c,src/minikafs.c,src/afs5log.c,src/options.c: fix some
	signedness warnings

2009-10-05
	* src/prompter.c(_pam_krb5_prompt_is_for_password): check the
	prompt_type first.

2009-10-05
	* src/options.c(_pam_krb5_options_init): parse the "chpw_prompt"
	flag
	* src/initopts.c(_pam_krb5_set_init_opts): enable or disable
	change-expired-password behavior based on the chpw_prompt setting
	rather than forcing it off all of the time
	* src/prompter.c(_pam_krb5_generic_prompter): when we're letting the
	library attempt to change expired passwords, set PAM_AUTHTOK to
	what the user typed in

2009-06-26
	* src/options.c(option_b): don't leak the list of values

2009-06-26
	* src/sly.c(_pam_krb5_sly_maybe_refresh): refresh creds in the default
	ccache location when KRB5CCNAME isn't set in the environment (#507984)

2009-06-26
	* src/stash.c: derive the stash name from the user some bits of the
	configuration rather than the principal name which we end up hopefully
	deriving using the user and those bits of the configuration.
	* src/options.c: hang on to a copy of the mappings list, in its
	original form, for use later

2009-06-15
	* src/v5.c(v5_validate): walk the keytab, looking for a host key,
	and fall back to just using the first one (#450776)

2009-06-09
	* src/initopts.c,src/v5.c: compile fixes for krb5 1.7

2009-06-04
	* src/prompter.c(_pam_krb5_generic_prompter): if the prompt looks
	like a password prompt, use "Password: " instead

2009-05-27
	* src/auth.c(pam_sm_authenticate): if we need to be the module that
	asks for a password, do so before sanity checking things like whether
	or not the user name is valid (#502602)
	* src/auth.c(pam_sm_authenticate),
	src/prompter.c(_pam_krb5_generic_prompter): only allow libkrb5 to
	ask for a password if we weren't supplied with one and didn't ask for
	one ourselves

2009-03-04
	* src/initopts.c(_pam_krb5_set_init_opts_for_pwchange): add, for
	setting options which are appropriate for obtaining password-changing
	credentials
	* src/v5.c: use temporary-for-pwchange opts when we try to get
	password-changing creds as a way to check that an expired password
	is correct.
	* src/password.c: use temporary-for-pwchange opts when we try to get
	password-changing creds as a way to check that an expired password
	is correct.

2009-02-11
	* src/options.c(_pam_krb5_options_init): don't log ticket and
	renew lifetimes of 0, which we interpret as "let the library use
	its settings" anyway

2009-02-06
	* src/kuserok.c(_pam_krb5_kuserok): close the read end of the
	pipe that's used to gather the child's result (Dan Walsh)
	* src/storetmp.c(_pam_krb5_storetmp_data): close the write end
	of the pipe to the child if we encounter an error writing to it
	(Dan Walsh)

2009-02-05
	* src/minikafs.c: remove minikafs_realm_of_cell(), which is not
	used anywhere
	* src/minikafs.c(minikafs_4log): pass the locally-initialized
	context to minikafs_realm_of_cell_with_context() rather than the
	passed-in value, so that minikafs_realm_of_cell_with_context()
	can skip the init call if we're passed NULL

2008-10-29
	* src/password.c (pam_sm_chauthtok): if the "use_shmem" option is
	set, stash the credentials which we obtain after a password change
	in shared memory as well.  Based on patch from and initial report
	by Michael Calmer.

2008-10-16
	* src/acct.c,src/auth.c,src/password.c,src/session.c,src/sly.c: be
	resistant to libpam returning NULL from pam_get_user() even though it
	results a successful result code (#467208).

2008-10-01
	* src/perms.c,src/perms.h: add functions for swapping real and
	effective UID and GID, if they're different
	* src/v5.c: swap the real and effective UID and GID when reading
	credentials from an "existing_ticket" ccache

2008-09-03
	* configure.ac,src/Makefile.am: link pam_krb5.so with libpam unless
	explicitly disabled at compile-time (#227097,#460998)

2008-09-03
	* src/options.c (option_b): if the realm name given to us is NULL,
	don't bother consulting the appdefaults
	* src/options.c (_pam_krb5_options_init): check for the "debug" flag
	earlier (Simo Sorce)

2008-08-08
	* src/Makefile.am: reverse the order of libpam_krb5.la and PAM_LIBS
	so that people adding things like -Wl,--as-needed -Wl,--no-undefined
	will be able to (patch from Guillaume Rousse)

2008-04-10
	* po/Makevars: extract text strings correctly (#441858).
	* po/POTFILES.in: note that input strings are planned to be UTF-8
	(#441858).

2008-04-09
	* src/session.c(pam_sm_open_session): when setting up creds to use
	for obtaining tokens, don't bother trying to save v4 creds if we
	don't have any.

2008-03-26
	* src/auth.c(pam_sm_authenticate): unconditionally set PAM_AUTHTOK
	when we prompt the user for a password (#437179)

2008-03-20
	* configure.ac,src/auth.c,src/password.c: use Y_ as a macro
	for dgettext rather than _, because <openssl/des_old.h> will
	undefine _, and we end up including it indirectly when building with
	Heimdal with v4 compatibility enabled.

2008-03-18
	* src/afs5log.c(main): actually hook up the '-n' flag to the
	null_afs_first option, so that it does something useful.

2008-03-17
	* src/auth.c,src/password.c: mark user-visible strings for
	translation (Michael Calmer).
	* configure.ac: call macros to set up for gettext (Michael Calmer)
	* po/POTFILES.in: add (Michael Calmer)
	* po/Makevars: add

2008-03-10:
	* NEWS, pam_krb5.spec: update version, note last changes
	* README: note the new SCM location
	* src/minikafs.c: remove workaround for NI_MAXHOST not being defined,
	because it's noise until we need it somewhere.

2008-03-07:
	* src/password.c: force at least one attempt to authenticate using
	the KDC, even in the pathological case where there's no previously-
	entered password and we were told not to ask for one (#400611)
	* src/options.c,src/minikafs.c,src/afs5log.c: merge Jan Iven's changes
	to add a "nullafs" option, so that when we're guessing the principal
	name for an AFS service we'll try the no-instance version first
	(#249558)
	* src/minikafs.c: if we're going to guess the realm name because
	the whereis pioctl failed, guess the far-more-likely-to-be-correct
	upper cased version of the cell's name than the cell's name.

2008-03-03:
	* src/options.c: update copyright date for token_strategy stuff.

2008-03-03:
	* src/noafs.c: fix signature of stub version of minikafs_log().

2008-02-18:
	* src/minikafs.c: flesh out some getprop bits, but don't use them
	because the number of KDC round trips would go _way_ up

2008-02-18:
	* src/minikafs.c: stub out the routines to use the cache manager's
	rxk5.enctypes property, if it reports one

2008-02-14:
	* src/password.c,src/prompter.c: suppress compiler warnings about how
	we use prompter callback data.

2008-02-14:
	* src/sly.c: suppress a compiler warning calling tf_init().

2008-02-14:
	* src/minikafs.c: rework formatting of tokens to use indirections
	provided by v5.c instead of poking at creds structures directly

2008-02-14:
	* src/v5.c,src/v5.h(v5_creds_get_etype): remove the need for the
	context pointer.
	* src/v5.c,src/v5.h(v5_creds_key_contents): return const data.
	* src/v5.c,src/v5.h: add functions for picking out principal name
	components and addresses and authdata from creds structures.
	* src/v5.c(v5_principal_compare): rewrite to use these new functions.
	* src/v5.c(v5_get_creds): correctly log the pkinit identity template.

2008-02-14:
	* src/tokens.c,src/afs5log.c: only recognize "v4" and "524" strategies
	if we're building with krb4 support.

2008-02-14:
	* src/options.c: when we're debug-logging lifetimes, also log a
	days/hours/minutes/seconds breakdown.

2008-02-07:
	* README,configure.ac,src/options.c,src/tokens.c,src/afs5log.c,
	src/afs5log.1.in,src/pam_krb5.5.in: add a "token_strategy" option
	to pam_krb5, and a matching "-s" option to afs5log.  That, in
	combination being able to specify the best guess at the principal name
	for a cell, should really let people cut down on what's getting to be
	a large set of round trips to the KDC.

2008-02-07:
	* configure.ac: get the sense of --enable-keyutils right, so that we
	warn when it's not requested, and error when it's requested, instead
	of the other way around.
	* src/afs5log.c: reorder the default list of methods, close the ccache
	properly, and free the temporary homedir string for debugging use.
	* src/minikafs.c(minikafs_5settoken2): add, to set a v5 cred.
	* src/minikafs.c(minikafs_5log,minikafs_5log_with_principal): take a
	flag to signal that we should try rxk5, and use it and the 2b flag to
	designate which method we want to use (no longer trying more than one
	during a single invocation).
	* src/minikafs.c(encode_bytes,encode_ubytes): take const input.
	* src/minikafs.c(encode_string): add.
	* src/tokens.c: add rxk5 to the default method lists.

2008-02-07:
	* src/kuserok.c(_pam_krb5_kuserok): add a function which wraps
	krb5_kuserok() in a subprocess which can create a new PAG, get tokens,
	and drop privileges to the user's account, all so that we can attempt
	to read the user's .k5login if we need to, and without disturbing any
	AFS creds the calling process might have.
	* src/auth.c(pam_sm_authenticate),src/acct.c(pam_sm_acct_mgmt): use
	_pam_krb5_kuserok() instead of trying to get tokens, call
	krb5_kuserok(), and clear tokens

2008-02-07:
	* src/minikafs.c: don't barf on compile if NI_MAXHOST isn't defined.

2008-01-29:
	* src/options.c: log a debug message when we disable prompting
	on behalf of libkrb5

2007-12-11:
	* src/auth.c: don't ask for another password when we've already
	gotten an unknown-user error, since there's no point then (Paul
	Batkowski, #400611)

2007-12-05:
	* src/pam_krb5.5.in,src/pam_krb5.8.in: give an example ("no_debug")
	to make it more clear that you can add exceptions to "true" settings
	that way.  Stress that no_subsequent_prompt may be needed for apps
	which do the "PAM_PROMPT_ECHO_OFF" means "what's the current
	password?" dance, which can really screw us up when we can't disable
	the change-password-during-get_init_creds behavoir.
	* src/v5.c(v5_alloc_get_init_creds_opt): call the library's struct
	init function for the we-malloc-it case.
	* src/initopts.c(_pam_krb5_set_init_opts): disable the library's own
	change-password-during-get_init_creds behavior, if we're building with
	one which lets us disable it, so that we can handle it ourselves.

2007-12-04:
	* src/options.c(option_b): take a service name, and a default enable
	and disable list.  If we have no command-line argument, check for the
	service's name in the list of values given in the config file, then
	check for a regular boolean setting in the configuration file, and
	lastly check our default configuration using the default enable and
	disable lists.
	* src/pam_krb5.5.in,src/pam_krb5.8.in: note that boolean options take
	lists of service names now.

2007-11-09:
	* src/auth.c: fetch tokens when "tokens" is enabled and we're not
	configured to use krb4, instead of not doing anything like that
	* src/auth.c(pam_sm_authenticate): fetch tokens (if we haven't
	already) before checking the user's .k5login with krb5_kuserok()
	* src/acct.c(pam_sm_acct_mgmt): fetch tokens before checking the
	user's .k5login with krb5_kuserok()

2007-11-08:
	* src/stash.c: if we're about to create a ccache with a name identical
	to one which we've already created (and haven't since destroyed), try
	to make the name unique by appending a "_" to it (mainly for keyrings).
	When creating a temporary FILE: ccache, use mkstemp() to generate the
	file so that mkstemp patterns don't get used literally.  When removing
	a ccache, treat EKEYREVOKED when resolving the ccache as a successful
	result.
	* src/*.c: when printing UIDs and GIDs, case to "unsigned long long"
	if available.
	* src/auth.c,src/acct.c,src/session.c: skip "minimum_uid" checks when
	"no_user_check" was given, in which case we can't know the user's UID.
	* configure.ac: fix some of the help text. make use of keyutils
	something we can issue an error for if the library isn't detected,
	if the user explicitly requests it.
	* src/stash.c(_pam_krb5_read_keyring): add a level of indirection to
	avoid a type-safety warning.

2007-11-05:
	* src/stash.c(_pam_krb5_stash_chown_keyring): add, to make sure that
	keyrings we create for the user can actually be modified by the user
	after the session is opened (spotted by Michael Calmer)

2007-10-31:
	* src/sly.c(_pam_krb5_sly_maybe_refresh): note that we stored creds
	when we do so for non-FILE ccaches, so that we don't forget to fetch
	new tokens if we need to do so.

2007-10-26:
	* src/sly.c(sly_v5): only free the ccache principal name if the call
	to retrieve it succeeded.
	* src/sly.c(_pam_krb5_sly_maybe_refresh): debug log when we decide
	to do things.  Don't bother trying to refresh an unset KRB5CCNAME.
	* src/shmem.c: correctly check the value returned of shmat() in
	the place where it was being done wrong.
	* src/v5.c: change internally-used ccaches from FILE: to MEMORY:

2007-10-26:
	* src/stash.c(_pam_krb5_stash_cc_copy): don't nuke the new ccache
	on failure iterating it, the parent will for any error.
	* src/stash.c: obey the ccname_template when we clone for the user,
	which is the only time it matters anyway.

2007-10-25:
	* src/harness.c: use the PAM environment when running commands

2007-10-23:
	* src/log.c: use the AUTHPRIV facility, when defined, else AUTH,
	else the default.

2007-09-05:
	* src/v5.c(v5_passwd_error_message): tweak some error text to
	hopefully make more sense to people (#230438)

2007-08-15:
	* src/v4.c: if we fail to open the ticket file with TKT_FIL_ACC,
	debug log the file's permissions and our process's identity

2007-08-02:
	* src/v4.c: warn when an fchown() fails, and don't try to give away
	our file; that's for later
	* src/pam_krb5.5.in,src/pam_krb5.8.in: note that "tokens" is
	unnecessary if the calling application was written correctly.
	* src/pam_krb5.8.in: reintroduce a missing line.
	* COPYING: be more explicit about which BSD license we mean

2007-07-27:
	* src/v5.c: fix v5_check_initialized_pwc() with Heimdal
	* src/v4.c: fix compilation for no-krb4-support cases, avoid cloning
	the tktfile if we were asked not to do that
	* src/stash.c: don't leak the v4 tktfile name when cleaning up, and
	fix the check for whether or not we have a saved file

2007-07-25:
	* src/v4.c: try to clean up the debug message for v5->v4 principal
	name conversion

2007-07-24:
	* configure.ac: check for krb5_get_prompt_types, though we don't do
	anything with it yet.
	* src/minikafs.c: factor the v5- and v4-specific bits of settoken()
	out into a single function, and allocate the buffer from the heap
	rather than dynamically-sizing it based on the function's arguments.

2007-07-20:
	* src/v5.c: get v5_check_initialized_pwc() working on Heimdal.
	* src/pam_krb5_storetmp.c: silence a compiler warning comparing the
	return code from write() with strlen().
	* src/password.c: tweak the error message which is logged when
	password changing fails to avoid "()".  Check for the presence of
	password-changing creds in the update phase, and error out if they
	aren't found.
	* src/v5.c: add v5_check_initialized_pwc() to check specifically
	for password-changing credentials.
	* src/v4.c,src/v5.c,src/auth.c,src/session.c: distinguish between
	ccache and ticket files which we create for users and those which
	we create for our own use (which needn't involve the helper).
	* src/options.c: let options_l() take a default value.
	* configure.ac,src/options.c: let the user specify a default
	"use_shmem" and "external" value at build-time.

2007-07-19:
	* src/acct.c: return ignore instead of user-unknown for client-revoked
	errors when ignore_unknown_users has been specified, for consistency

2007-07-19:
	* src/password.c: report the synthetic PAM result from attempting to
	get password-changing creds (part of #230439)

2007-07-13:
	* src/v5.c: treat a "client revoked" error (which is generated by
	disabling the account, at least on a Windows KDC) as an "unknown
	principal" error (#230442).

2007-07-13:
	* src/v5.c: initialize the entire prompter_data structure.
	* src/v4.c,src/v5.c,src/minikafs.c,src/tokens.c,src/init.c: use the
	error_message wrapper.
	* src/auth.c: check for NULL or empty passwords.

2007-07-12:
	* src/stash.c: switch from saving a path and removing the file to a
	push/pop interface, allowing multiple ccaches and ticket files to
	exist at the same time
	* src/v4.c,src/v5.c: use push/pop to create/remove files
	* src/tokens.c: use the topmost ccache name
	* src/session.c: don't skip creating ccache/ticket files when we've
	already done so

2007-07-10:
	* src/options.c: be more careful about freeing a couple of list
	parameters.

2007-07-10:
	* src/harness.c: add a --run option, so that I can run a command
	when the session's set up and the credentials are initialized.

2007-06-24:
	* src/password.c: display the right string.
	* tests/run-tests: start to adjust for getting-prompts-changes-passwords
	behavior.
	* tests/config/kdc.conf.in: place the location of files in the right
	part of the file

2007-06-24:
	* src/password.c(pam_sm_chauthtok): always display result_text for
	the user's sake.  Actually check that we opened the pwhelp file,
	like Luke's original patch did.

2007-06-24:
	* tests/pwhelp.txt,tests/run-tests: add a test for the pwhelp option.

2007-06-24:
	* Makefile.am: don't use the gmake $(shell) option; use backticks.

2007-06-24:
	* src/options.c: add a "pwhelp" option.
	* src/password.c(pam_sm_chauthtok): display the contents of the
	pwhelp file before doing anything else when in the preliminary check
	phase (#230465, Luke Howard).

2007-06-24:
	* src/prompter.c(_pam_krb5_always_fail_prompter,
	_pam_krb5_previous_prompter): output the banner and name information
	if it was given (#230450).

2007-06-24:
	* src/password.c(pam_sm_chauthtok): when returning, note whether
	we are here for the preliminary check or the actual update in the
	debug message (#230444, Luke Howard).

2007-06-24:
	* src/password.c(pam_sm_chauthtok): set v5_attempted to 1 for
	correctness (#230446, Luke Howard, Pieter Krul).

2007-06-24:
	* src/options.c: don't pass in PAM handles when we don't actually use
	them.

2007-06-24:
	* src/acct.c(pam_sm_acct_mgmt): return PAM_USER_UNKNOWN in event of
	a client-revoked error (#230442, Luke Howard, Christian Bolz, Pieter
	Krul)

2007-06-24:
	* src/stash.c(_pam_krb5_stash_shm_read_v5): correct an argument size
	mismatch calling the logging function.

2006-09-21:
	* src/auth.c(pam_sm_authenticate): try again to clean up the three
	possible setups (pre-entered password, one for which we prompt directly,
	libkrb5 asking questions) to minimize the number of calls we make to
	krb5_get_init_creds_password().
	* src/prompter.c(_pam_krb5_prompt_is_password): take the prompter
	callback data instead of the string.
	* src/prompter.c(_pam_krb5_*prompter): if we're debugging sensitive
	data, log both the answer we give and the default provided by libkrb5
	* src/v5.c(v5_get_creds): guard against potential problems logging a
	NULL password.
	* src/acct.c(pam_sm_acct_mgmt): if the previous attempt to authenticate
	gave us decrypt-integrity-check-failed or preauthentication-failed,
	assume that there's no pam_acct_mgmt error to report (#207410)

2006-09-20:
	* src/password.c(pam_sm_chauthtok): set the AUTHTOK and OLDAUTHTOK
	items properly (report and patch from Michael Calmer).
	* tests/run-tests: clear any policy we've applied to the user when we
	delete the user's entry (report and patch from Michael Calmer).

2006-09-13:
	* src/harness.c: add the ability to preset the AUTHTOK and OLDAUTHTOK
	items.

2006-09-12:
	* src/harness.c: add the ability to preset the AUTHTOK and OLDAUTHTOK
	items.
	* src/prompter.c(_pam_krb5_always_fail_prompter): add a prompter which
	always fails and one which always return a previously-input password.
	* src/options.c,options.h: rework the processing of initial_prompt,
	add subsequent_prompt

2006-09-08:
	* src/options.c,options.h: track whether or not we want to let libkrb5
	ask for information via the callbacks.
	* src/v5.c(v5_get_creds): give the caller a way to specify which
	prompter callback we should use.
	* src/auth.c(pam_sm_authenticate): rework the prompting bits so that
	it makes more correct use of the initial_prompt/use_first_pass flags
	and correctly disables use of the callback for arbitrary prompts
	* configure.ac: provide a --with-os-distribution flag for people who
	want to replace the "Red Hat Linux" bit in the man pages with the
	name of a product or OS which still exists
	* src/pam_krb5.5.in: mention pam_passwdqc.so along with pam_cracklib.so

2006-08-28:
	* configure.ac: change the preference from <krb5/krb5.h> to <krb5.h>,
	so that we don't pick up the system <krb5/krb5.h> when we need the
	<krb5.h> which lives in the directory pointed out by krb5-config

2006-08-28:
	* src/v5.c(v5_passwd_error_message): add a function to interpret the
	error codes returned for password-change requests.
	* src/password.c(pam_sm_chauthtok): log text for server-supplied error
	code along with the failure information.

2006-07-27:
	* src/auth.c: include unistd.h to get the declaration of getuid().

2006-07-26:
	* src/options.c(option_i): check for strtoll()/long long.
	* configure.ac: check for strtoll().
	* src/v4.c(v4_save): actually set the permissions on the new file to
	the requested values.  Note in the warning why we fail to open a
	file, which is returned as the result and not in errno.
	* src/storetmp.c(_pam_krb5_storetmp_data): try to setreu/gid if either
	the real or effective values don't match the desired value.
	* src/pam_krb5_storetmp.c(main): only use strtoll() if it's
	available, otherwise just use strtol().
	* src/stash.c(_pam_krb5_stash_clone): go back to overwriting the
	template, to avoid uncontrolled growth in the filename.
	* src/session.c(pam_sm_open_session): specify the current real
	UID and GID when creating temporary v4 credential files.  Note the
	guessed UID and GID of the user in the debug message.
	* src/auth.c(pam_sm_authenticate): always specify the current real
	UID and GID when creating temporary v4 credential files.
	* src/stash.c(_pam_krb5_stash_clone): build the new ccache name by
	appending the mkstemp template instead of assuming the previous file
	ended with one
	* configure.ac: check for "long long" explicitly
	* src/storetmp.c(_pam_krb5_storetmp_data): use a long long print
	specifier only if we actually have a "long long" type.  Fix incorrect
	usage of sigaction.

2006-07-25:
	* src/stash.c(_pam_krb5_stash_external_read): note when we try to
	pick up external creds, and when we fail to do so.
	* src/storetmp.c(_pam_krb5_storetmp_data): save and set signal handlers
	before we fork().  Go back to allowing setuid/setgid to fail, but only
	after we attempt to drop setuid/setgid status (which gets to fail, too,
	but renders the helper unuseful).
	* src/sly.c,src/sly.h(_pam_krb5_sly_looks_unsafe,
	_pam_krb5_sly_maybe_refresh): move detection of whether or not it
	looks safe into another function.
	* src/auth.c(pam_sm_setcred): if it doesn't look safe to refresh
	credentials, just return PAM_IGNORE (#197428).
	* src/storetmp.c(_pam_krb5_storetmp_data): save and restore the SIGPIPE
	handler in case our child exits, drop any setuid/setgid pretense
	when we're called from a setuid application (#190159, patch by Jon
	Fautley), bail early if calls to setuid/setgid fail.
	* configure.ac: look for krb5/krb5.h in preference to krb5.h (new in
	MIT Kerberos 1.5)
	* src/stash.c(_pam_krb5_stash_external_read): if the default principal
	in the ccache doesn't match the userinfo structure, update the
	userinfo structure, based on patch from Jan Iven (#182239,#197660).
	* src/v4.c(v4save): always use the name of the v5 principal when saving
	credentials, especially for the "external" case where it may not be the
	value we originally guessed (#197660).
	* src/pam_krb5.5.in: note that the krb4_convert_524 and krb4_use_as_req
	options don't affect each other.
	* src/prompter.c(_pam_krb5_prompter): be more careful about other
	ways which our prompting callback can try to break us (noted by Michael
	Calmer).

2006-04-21:
	* src/prompter.c(_pam_krb5_prompter): check for dumb converation
	functions which return success but set the response to NULL.  From
	Michael Calmer.

2006-02-29:
	* src/v5.c(v5_get_creds): don't try to validate creds which aren't
	TGTs, because the attempt will always fail unless the matching key
	is in the keytab, which should never be the case for the
	password-changing service (#187303, rbasch)
	* src/tokens.c(tokens_obtain): if v4 has been disabled completely,
	go ahead and try to set 2b tokens because we're going to end up having
	to do that anyway (#182378).  If we have a hint principal, note it in
	debug output.
	* src/minikafs.c(minikafs_5log_with_principal): if we read a client
	principal from the ccache, unparse it and include it in debug messages.
	If we fail to obtain creds from the KDC, note why we failed.

2006-02-23:
	* src/stash.c(_pam_krb5_stash_get): skip v4 creds setup when v4 isn't
	enabled.

2006-02-21:
	* src/v4.c, src/v4.h (v4_save): make ccname a const char *.
	* src/v5.c, src/v5.h (v5_save): make ccname a const char *.
	* src/stash.c(_pam_krb5_stash_get): when we pick up v5 creds via either
	"external" or "use_shmem", do 524 conversion if we need to do so.
	* src/session.c(pam_sm_open_session): also create a v4 tktfile if
	KRB5CCNAME was already set.
	* src/afs5log.c, src/minikafs.c: use init_secure_context when possible.
	* src/Makefile.am: juggle deps so that linking works again.

2006-02-07:
	* src/pam_newpag.8.in: edit

2006-02-06:
	* src/options.c,src/options.h: break down and add an explicit option
	for disabling v4-via-as-req attempts
	* src/minikafs.c: don't try to convert creds for use in setting v4
	tokens when krb4_convert_524 is disabled.
	* src/v4.c: don't try to get initial creds if krb4_use_as_req is off.
	* src/pam_krb5.5.in,src/pam_krb5.8.in: document krb4_use_as_req.
	* src/pam_krb5.5.in,src/pam_krb5.8.in: point out that we turn on v4
	support if AFS is detected at run-time.
	* README: document krb4_use_as_req.
	* TODO: update because 2.2 was tagged a while ago

2006-01-26:
	* src/minikafs.c: wrap a debug message in an if (debugging) clause.
	* src/session.c: wrap a pair of debugging messages in an if (debugging)
	clause (#179037).
	* configure.ac: if $with_gnu_ld is set, set SYMBOLIC_LINKER_FLAG to
	the right variation on -Bsymbolic
	* src/Makefile.am: use the SYMBOLIC_LINKER_FLAG when linking modules

2006-01-16:
	* src/afs5log.1, src/pagsh.1: fix the bug reporting instructions.

2006-01-16:
	* src/password.c(pam_sm_chauthtok): fix handling of no-password-given
	cases.
	* src/harness.c: work around Linux-PAM actively trying to keep us from
	doing what we're doing.  Adjust command-line parsing to allow both
	password-change phases to be called out.
	* tests/run-tests.c: add a password-not-good-enough-at-change-time
	test case.
	* src/password.c(pam_sm_chauthtok): cast away a couple of compiler
	warnings.
	* src/Makefile.am: tweak dependencies on dummy files for the sake of
	distcheck.

2006-01-13:
	* src/log.h,src/log.c,src/logstdio.c: add notice_user() to for spewing
	an error message at the user.
	* src/password.c(pam_sm_chauthtok): if we got a result string back from
	the password-changing server, attempt to display it.

2006-01-11:
	* src/session.c: no, I did touch that file last year.
	* src/pam_krb5.5.in: document the "ignore_afs" option.
	* src/pam_newpag.c: add.
	* src/pam_newpag.5.in: add.
	* src/pam_newpag.8.in: add.
	* src/Makefile.am: add rules for building pam_newpag.so.
	* configure.ac: generate man pages for pam_newpag.
	* src/pam_dummy_acct.c: add.
	* src/pam_dummy_chauthtok.c: add.
	* src/Makefile.am: add rules for building harness-newpag
	* src/pagsh.1: add.

2005-12-19:
	* src/items.c: include <stdio.h> to get the definition of NULL (Jesse
	Keating).
	* src/init.c: same bug, different file.

2005-11-21:
	* src/v5.c(v5_validate): don't leak the keytab file descriptor (patch
	from Daniel Colascione, #173681).

2005-11-15:
	* src/afs5log.c: actually check for AFS support first, so that the
	ioctl-only support case will work properly.

2005-11-07:
	* src/options.c: allow "validate" to be specified using a list of
	service names as well.

2005-11-07:
	* src/pam_krb5.5.in,src/pam_krb5.8.in: add proper quoting for arguments
	which include whitespace

2005-11-01:
	* src/stash.c(_pam_krb5_stash_shm_write_v5/4): initialize the segment
	key and owner in the stash when we write to it, in case the application
	decides to never call pam_end(), so that we can clean up the segment
	during session close.

2005-11-01:
	* src/stash.c,src/stash.h,src/shmem.csrc/shmem.h: log debug messages
	when we remove segments.

2005-10-31:
	* src/stash.c,src/stash.h,src/shmem.csrc/shmem.h: track the PID which
	created the shared memory segment, so that we don't try to remove it
	twice and accidentally stomp on another process.

2005-10-28:
	* src/session.c(pam_sm_open_session): dispose of shared memory segments
	once we've read their contents, in case we won't be able to dispose of
	them later (patch from Greg Wettstein).
	* src/shmem.c,src/shmem.h: add a _pam_krb5_shm_remove() function for
	use by the session functions (patch from Greg Wettstein).
	* src/stash.c,src/stash.h: add a v5shm/v4shm field to the stash
	structure to track the ID of the shared memory segment
	* src/session.c: don't leak the values of $KRB5CCNAME and $KRBTKFILE
	which we set; libpam makes copies of the values which are passed-in.
	* src/session.c: unset PAM environment variables by setting "<VAR>",
	not "<VAR>=", in accordance with the Linux-PAM docs.
	* src/session.c: unset PAM environment variables which list the shared
	memory segment identifiers when we destroy the segments.

2005-10-20:
	* src/shmcat.c: add.
	* src/Makefile.am: update.

2005-10-19:
	* src/options.c: initialize options->debug correctly when it's
	neither explicitly enabled nor disabled (patch from Greg Wettstein).

2005-10-19:
	* src/acct.c,src/pam_krb5.5.in,src/pam_krb5.8.in: note that the
	"existing_ticket" option bypasses account management checks, too.

2005-10-18:
	* src/options.c,src/options.h: parse the "existing_ticket" option
	(patch from Nathan Huff).
	* src/pam_krb5.5.in,src/pam_krb5.8.in: update.
	* src/v5.c: if the "existing_ticket" option is used, attempt to read
	the TGT cred from the default ccache, and accept that as sufficient
	for successful authentication (patch from Nathan Huff).
	* src/auth.c: if the "existing_ticket" option is used, call to get
	creds before prompting for a password (patch from Nathan Huff).
	
2005-10-18:
	* src/acct.c: remove an unused variable to silence a compile warning.
	* src/harness.c: check the result of fgets().
	* src/minikafs.c: comment out minikafs_unpag(), which was static and
	unused, to silence a compile warning.
	* src/tokens.c: check for errors from readlink().

2005-10-13:
	* configure.ac: clean up logic for setting pkgsecuritydir correctly if
	a libdir isn't passed to configure (Greg Wettstein).

2005-10-06:
	* src/afs5log.c: recognize that "--" means "no more options".

2005-10-06:
	* autogen: use RPM's optflags for CFLAGS, if available.
	* src/afs5log.c: don't autolog to the local cell if the '-p' flag was
	given on the command line.
	* src/minikafs.c,src/pagsh.c: implement an unpag() call, then check
	and find out that it's the same as unlog(), so comment it out.

2005-10-06:
	* src/options.c: make "tokens" an option which can also take a list of
	service names for which it should be enabled.
	* src/pam_krb5.5.in,src/pam_krb5.8.in: update section for "tokens".
	* src/pam_krb5.5.in: fix header text for "external" and "use_shmem".

2005-10-05:
	* configure.ac: prereq the version of autoconf which my development
	box has, to avoid possible AC_CONFIG_HEADER/AM_CONFIG_HEADER wackiness.
	* src/pam_krb5_storetmp.8.in: use the actual installation paths.
	* src/acct.c: list the actual result code in the debug message.

2005-10-05:
	clean up CVS version tags
	* README.winbind: clear up a couple of finer points.
	* src/Makefile.am,src/pam_krb5_storetmp.8.in: add a man page for the
	temp file helper.
	* pam_krb5.spec: list bindir and section 1 man page files in the files
	manifest.

2005-10-05:
	* src/session.c: suppress duplicate success messages.
	* src/stash.c: warn on shmem failures.

2005-10-05:
	* src/shmem.c: always detach from the segment, even in error cases.
	* src/stash.c: note when we manipulate shared memory when debugging.

2005-10-04:
	* configure.ac: oh right, enable AFS support on *-sun-* now.

2005-10-04:
	* src/options.c,src/pam_krb5.5.in,src/pam_krb5.8.in: add
	"ignore_unknown_upn" as an alias for the "ignore_unknown_principals",
	to match behavior of patch from Luke Howard.  Correct the option
	parsing code so that it matches the option named in the man pages.
	* src/acct.c,src/auth.c: Merge most of the rest of Luke's patch for
	changed behavior when this option is supplied.
	* configure.ac: set the default keytab path to "FILE:/etc/krb5.keytab",
	not just "/etc/krb5.keytab".
	* src/acct.c,src/auth.c,src/conv.c,src/harness.c,src/initopts.c,
	src/items.c,src/map.c,src/minikafs.c,src/noafs.c,src/options.c,
	src/password.c,src/prompter.c,src/session.c,src/shmem.c,src/sly.c,
	src/stash.c,src/tokens.c,src/userinfo.c,src/v4.c,src/v5.c: include
	<security/pam_appl.h> before every inclusion of <security/pam_modules.h>
	(patch from Luke Howard).
	* src/minikafs.c: define __NR_afs_syscall on Solaris, use the standard
	names for sized integer types (patch from Luke Howard).
	* src/userinfo.c: prefer __posix_getpwnam_r() to getpwnam_r() on
	Solaris (patch from Luke Howard).
	* configure.ac,src/pam_krb5.8.in: list the configured path for the
	module in the example in the man pages.

2005-10-04:
	* configure.ac: check for the presence of <sys/ioccom.h> (patch from
	Luke Howard).
	* src/minikafs.c: include <sys/ioccom.h>, if present (patch from Luke
	Howard).

2005-10-04:
	* src/password.c: save the result of getting new credentials with the
	newly-set password so that we don't forget to store them in the user's
	session ccache, and return the more correct PAM_AUTHTOK_RECOVER_ERR
	instead of PAM_AUTHTOK_ERR if we were called with "use_authtok" and
	there is no PAM_AUTHTOK item set (patches from Michael Calmer).

2005-10-04:
	* src/options.c,src/options.h: parse the "krb4_convert_524" option.
	Accept "don't" and "dont" as prefixes which indicate that a boolean
	option is disabled.
	* src/pam_krb5.5.in,src/pam_krb5.8.in: list the "krb4_convert_524"
	option.  Conditionalize portions of the text which are specific to
	Kerberos IV or AFS.
	* src/pam_krb5.8.in: fix the synopsis.
	* src/v4.c: don't attempt to use the 524 service to obtain a v4 TGT
	if the "krb4_convert_524" option is disabled.

2005-10-04:
	* configure.ac: only trust 'krb5-config --libs krb4' to provide krb4
	if '-lkrb4' is in the output -- krb5 1.2.7's krb5-config doesn't exit
	with an error when built without krb4 support

2005-10-04:
	* configure.ac: sort out --with-krb4/--without-krb4 logic so that it
	defaults to use-krb4-if-available.
	* src/session.c, src/stash.c, src/tokens.c, src/userinfo.c: add missing
	inclusion of <limits.h>

2005-08-22:
	* configure.ac: add maintainer mode.  Add definitions so that the
	preprocessed man pages will be able to omit portions which pertain to
	options not selected at compile-time (i.e., AFS).
	* src/afslog.c, src/afslog.h: add (not yet tested) -p flag support.
	* noafs.c: update for changed prototype for minikafs_log().

2005-08-15:
	* src/password.c(pam_sm_chauthtok): save the old password as the
	PAM_OLDAUTHTOK item, not the PAM_AUTHTOK item.  Apparently libpam
	doesn't do anything with these (patch from Michael Calmer).
	* src/password.c(pam_sm_chauthtok): double-check that we don't
	get NULL as an old or new password (patch from Michael Calmer).
	* src/password.c(pam_sm_chauthtok): better match the behavior of
	pam_unix and pam_ldap by treating "use_authtok" as an indication
	that PAM_AUTHTOK *has* to have been set already, and otherwise
	that it's okay to prompt (patch from Michael Calmer).

2005-07-12:
	* src/password.c(pam_sm_chauthtok): check the result_code returned by
	krb5_change_password() as well as the return code (patch from Dan Perry)

2005-06-21:
	* src/tokens.c(tokens_obtain): don't skip a cell if it's both the
	local/home and in the set of explicitly-specified cells (Jack Neely).

2005-06-20:
	* configure.ac: fix --disable-Werror, --disable-extra-warnings so that
	they actually work as expected.
	* src/shmem.c, src/stash.c, src/storetmp.c: fix compile warnings.

2005-06-17:
	* src/minikafs.c,src/minikafs.h: add a variant of cell_of_file which
	walks up the tree if it fails.
	* src/afs5log.c,src/tokens.c: use the new cell_of_file variant instead
	of handling the logic locally.
	* src/minikafs.c: increase the default size of the address list we
	pass to the whereis pioctl, and make its growth exponential instead of
	linear if we fail with E2BIG (Jack Neely).
	* README: note that we don't re-get tokens if the home directory is in
	the local cell
	* NEWS: note that SAM support hasn't been tested, and that "external"
	isn't limited to use with OpenSSH

2005-05-18:
	* src/afs5log.1: add
	* src/Makefile.am: install afs5log and afs5log.1
	* src/afs5log.c: debug-log when we're obtaining tokens for the local
	or the user's home cell
	* src/minikafs.c(realm_of_cell): debug-log IP->hostname conversion
	* src/minikafs.c(minikafs_5log): rearrange the order of things so that
	we don't always try to determine the realm name ourselves, so that if
	a principal was supplied, we actually can be faster.
	* src/minikafs.c(minikafs_4log): be careful for cases where we may have
	been passed a NULL krb5 context.

2005-05-09:
	* src/minikafs.c(realm_of_cell): debug-log failures in the whereis
	pioctl, stop looking at addresses if we hit 0.0.0.0.
	* src/minikafs.c(minikafs_5log): if realm_of_cell succeeds, don't
	clear the realm name (duh).

2005-05-09:
	* src/minikafs.c: add a wrapper for the ws_cell pioctl.
	* src/tokens.c,src/afs5log.c: use ws_cell to find the default cell
	instead of guessing by doing a cell_of_file on /afs (#157109)

2005-04-27:
	* src/minikafs.c: also try afs@DEFAULTREALM if the default realm is
	not the same as the derived realm (sort of from Christopher Allen Wing).
	* src/options.c,src/options.h: track a "ignore_unknown_principals"
	boolean flag, with "ignore_unknown_spn" being consulted if it's unset.
	Parse cell names which contain a '=' character as if they're of the
	form cell_name=principal_name.
	* src/minikafs.c,src/minikafs.h: if a principal name was given, try
	to get creds for the named service and use them.  If that doesn't work,
	fall back to previous behavior.
	* src/afs5log.c: parse "=" signs in command-line arguments, as options.c
	does.
	* src/acct.c: return PAM_IGNORE if the error is either
	KDC_ERR_C_PRINCIPAL_UNKNOWN or KDC_ERR_NAME_EXP and
	ignore_unknown_principals was set, else PAM_USER_UNKNOWN as before.
	* src/v5.c: return PAM_IGNORE if the error is either
	KDC_ERR_C_PRINCIPAL_UNKNOWN or 5KDC_ERR_NAME_EXP and
	ignore_unknown_principals was set, else PAM_USER_UNKNOWN as
	before.
	* src/minikafs.c: correctly handle E2BIG errors from a WHEREIS pioctl,
	bug spotted by Lamont Granquist.  Handle multiple IPs coming back,
	and try to look up a host name and realm name in turn until we either
	succeed or run out of addresses.
	* src/minikafs.c: when obtaining tokens, try to get credentials for
	afs@defaultrealm if defaultrealm resembles the cell name and doesn't
	resemble the derived realm name, which can happen if deriving the
	realm name didn't work for whatever reason.
	* src/options.c: don't leak the mappings list when freeing options
	structures.
	* src/pagsh.c: unbreak by not assuming that "-c" as a first option
	meant that the user wanted a help message.
	* src/pam_krb5.5,src/pam_krb5.8: use \fR instead of \fP for resetting
	formatting.
	* src/tokens.c: if the default or home cell was explicitly listed in
	the configuration, skip initial attempts to get tokens for them, in
	case the user specified principal names for the services.
	* src/tokens.c: remove tokens_getcells() and tokens_freecells(), which
	weren't being used.

2005-03-14:
	* src/options.c: accept "," as a separator for list parameters, so that
	we can pass parameters with list values in via argv

2005-03-14:
	* src/noafs.c: add.
	* configure.ac: fix the keytab result message.  Add a --without-afs
	flag.

2005-03-04:
	* configure.ac: bail if security/pam_appl.h or security/pam_modules.h
	aren't found.

2005-03-04:
	* src/v4.h: restore the prototypes to avoid warnings, typedef the one
	krb4 struct we pass around to avoid an error.

2005-03-04:
	* configure.ac: remove -Wno-unused-parameters from the set of extra
	warning flags.  Add a newline after inclusion of <krb5.h> when we're
	testing for structures defined in the krb5 API.
	* src/sly.c: compile in a dummy sly_v4() if USE_KRB4 isn't defined
	* src/v4.h: don't provide prototypes if USE_KRB4 isn't defined.

2005-02-28:
	* configure.in: demote -Wextra and friends --enable-extra-warnings
	status.

2005-02-28:
	* src/minikafs.c: fix compilation against releases which didn't define
	KRB_TICKET_GRANTING_TICKET.
	* src/pagsh.c: add missing <stdio.h> inclusion.
	* src/minikafs.c: handle cases where krb_life_to_time() isn't available.
	* src/pagsh.c: add a --help flag, by assuming that the command will
	never start with "-".

2005-02-24 nalin
	* src/logstdio.c: add a log_progname global to adjust log messages.
	* src/afs5log.c,src/harness.c: set log_progname at startup.
	* src/prompter.c: suppress prompts for the previously-entered password.
	* src/userinfo.c: clean up some valgrind-caught weirdness.
	* src/harness.c: use getpass() instead of fgets() for
	PAM_PROMPT_ECHO_OFF prompts.  Kids, don't try that at home.
	* src/sly.c: only refresh the default krb5 ccache if its principal is
	the one we've authenticated.
	* src/tokens.c: log a debug message if we create a new PAG.  When
	determining the user's home cell, if the user's home directory is a
	symlink, chase it.
2005-02-24 nalin
	* configure.ac: add a --enable-default-keytab-location flag.
	* src/options.c,src/pam_krb5.5.in,src/pam_krb5.8.in: obey it.
	* README: document that it can be overridden.  (Don't want to change
	this to README.in to actually reflect that override value.)
	* src/v4.c(v4_get_creds): error out if password is NULL or zero-length.
	* src/v5.c(v5_get_creds): provide the prompter callback to libkrb5.
	* src/options.c: add an "initial_prompt"/"no_initial_prompt" option
	which suppresses the initial password prompt.  It's useless for
	providing a PAM_AUTHTOK to subsequent modules, but is useful now that
	we're providing a prompter callback to libkrb5.
	* src/auth.c: handle no_initial_prompt cases.  Get AFS tokens if the
	saved password turned out to be correct.
	* src/log.c: fix a few memory leaks.
	* src/harness.c: add, to make debugging easier.
2005-02-23 nalin
	* src/init.c: don't call initialize_krb5_error_table; this currently
	leads to a crash due to libkrb5 from MIT's 1.4 release making an
	invalid assumption about e2fsprogs 1.36's libcom_err (SF #1150146)
2005-02-14 nalin
	* src/stash.c,src/stash.h: add a field to the stash structure for
	keeping of whether or not we set the KRB5CCNAME/KRBTKFILE environment
	variables
	* src/session.c: clear KRB5CCNAME/KRBTKFILE if we're removing the
	files *and* we set the variables.  Treat zero-length values as we
	treate NULL values for those variables.
2005-02-08 nalin
	* src/afs5log.c: properly screen out "dynroot" as a cell name, walk up
	from the user's home directory if we can't determine in which cell it
	is that it resides

2005-02-08 nalin
	* src/acct.c: treat a KRB5KDC_ERR_PREAUTH_FAILED error as if it were
	a KRB5KRB_AP_ERR_BAD_INTEGRITY error.
	* README,src/pam_krb5.5.in,src/pam_krb5.8.in: doc updates.

2005-02-08 nalin
	* src/userinfo.c,src/userinfo.h: look up and make note of the user's
	home directory.
	* src/tokens.c(tokens_obtain): attempt to determine the cell in which
	the user's home directory resides, and default to obtaining tokens for
	that cell as well, unless it's the same as the default cell.  Skip
	cells given to the afs_cells option if they are the same as either the
	local cell or the user's home cell.
	* src/options.c: handle "external" like we handle "use_shmem".
	* src/stash.c: read a krbtgt key from $KRB5CCNAME if "external" was
	set.  Try to reuse the passed-in krb5_context, if possible.
	* src/session.c: don't create new ccache or ticket files if KRB5CCNAME
	or KRBTKFILE are already set in the PAM environment, respectively.

2005-02-07 nalin
	* src/minikafs.c(minikafs_5log): initialize use_ccache as a handle for
	the default cred cache, not ccache, when ccache is NULL.
	* src/options.c(option_t): add, for parsing a value as a krb5_deltat if
	it can't be parsed as a normal integer.
	* src/options.h: change normal and renewable lifetimes to krb5_deltat
	* src/options.c(_pam_krb5_options_init): parse lifetimes using option_t
	instead of option_i.
	* src/*.c: random signed/unsigned warning corrections.

2004-09-13 nalin
	* src/tokens.c: skip getting tokens for the cell of /afs if that cell
	is "dynroot", which is what OpenAFS's dynamic-root support gives us.
	* src/auth.c: run the krb5_kuserok() check in the authentication phase
	as well (Douglas E. Engert).

2004-09-02 nalin
	* src/minikafs.c: add copyright statement because the ioctl patch is
	too much like heimdal's implementation.

2004-08-31 nalin
	* src/shmem.c,src/shmem.h: add, several functions for handling shared
	memory.
	* src/auth.c:(pam_sm_authenticate): log the realm as well. store
	credentials to shared memory on success if the "use_shmem" flag was
	given, or if "use_shmem=" lists the current service, or is true.
	* src/stash.c:(_pam_krb5_stash_shm_read,_pam_krb5_stash_shm_write): add.
	* src/storetmp.c(_pam_krb5_read_with_retry): make non-static.
	* src/storetmp.c(_pam_krb5_storetmp_file): add a hook for storing a copy
	of the file contents in a blob of memory.

2004-08-31 nalin
	* src/password.c(pam_sm_chauthtok): during the preliminary check phase,
	read the current password as the PAM_OLDAUTHTOK item, not PAM_AUTHTOK
	(Ludek Finstrle, #131246)

2004-08-27 nalin
	* src/userinfo.c(_pam_krb5_user_info_init): override the realm name to
	be the one which was passed in (Carlos A. Villegas, #116198).

2004-08-27 nalin
	* src/minikafs.c: handle cases where the length of the realm name >
	length of the cell name.

2004-08-27 nalin
	* src/options.c(_pam_krb5_options_init): set the default realm for
	ctx (#116198).

2004-08-26 nalin
	* src/options.h,options.c: add an ignore_afs flag to the options
	structure, heavily based on Matthew Miller's patch (#126345).
	* auth.c, session.c, sly.c: obey ignore_afs.

2004-08-26 nalin
	* src/acct.c(pam_sm_acct_mgmt): skip .k5login check of user_check was
	disabled -- it's not as if we can expect an unknown user to have a home
	directory.

2004-08-26 nalin
	* src/conv.c(_pam_krb5_conv_call): return PAM_BAD_ITEM instead of
	PAM_CONV_ERR if the application didn't define a conversation function.

2004-08-26 nalin
	* src/minikafs.c(minikafs_ioctlcall): add, from Alexander Boström
	(#127529).
	* src/minikafs.c(minikafs_call): add, calling afs_ioctlcall or
	afs_syscall as appropriate, from Alexander Boström (#127529).  The
	setpag and pioctl functions now call this function instead of our
	afs_syscall.
	* src/minikafs.c(minikafs_has_afs): check for ioctl-based interface to
	Arla or OpenAFS for Linux 2.6, from Alexander Boström (#127529).

2004-08-26 nalin
	* src/password.c(pam_sm_chauthtok): prompt for the user's current
	password when use_first_pass isn't flagged, ignoring use_authtok
	during the initial-authentication pass (#130950).

2004-06-14 nalin
	* src/session.c(pam_sm_open_session,pam_sm_close_session): log what
	we return, and why, if debugging is enabled.

2004-06-14 nalin
	* src/acct.c(pam_sm_acct_mgmt): likewise, catch and log specific error
	information for EAGAIN, KRB5_REALM_CANT_RESOLVE, and KRB5_KDC_UNREACH
	errors.

2004-06-14 nalin
	* src/v5.c(v5_get_creds): return PAM_AUTHINFO_UNAVAIL if we got EAGAIN,
	which is triggered by a transient hostname resolution error (John
	Dennis).  Also do this for KRB5_REALM_CANT_RESOLVE and KRB5_KDC_UNREACH
	error cases.

2004-04-21 nalin
	* Makefile.am: make configure depend on pam_krb5.spec.
	* autogen: run with --enable-maintainer-mode so that the dependency
	gets honored when autogen is used.
	* pam_krb5.spec: bump version.

2004-04-21 nalin
	* src/minikafs.c: print debug messages when doing realmofcell stuff.

2004-04-21 nalin
	* configure.ac: perform all checks for Kerberos functions with all of
	the libraries we've found.

2004-04-21 nalin
	* configure.ac: escape sed expressions correctly so that LDFLAGS doesn't
	include -l flags for Kerberos, skip all krb4 checks if --without-krb4
	is passed in.
	* src/Makefile.am: add KRB5_LIBS and KRB4_LIBS as needed.
	* src/minikafs.c: use krb524_convert_creds_kdc if krb5_524_convert_creds
	isn't available.  Force v5 mode on if USE_KRB4 is not defined.

2004-04-21 nalin
	* configure.ac: search for PAM libraries separately
	* src/Makefile.am: use a convenience library to compile code only once
	* src/afs5log.c: supply a non-bogus ccache and options argument to
	minikafs, provide local logging functions which use stdio.

2004-04-15 nalin
	* configure.ac: default krb5-config and krb4-config to ':', add non
	library arguments output by --libs to LIBS
	* src/minikafs.c: add missing <stdio.h> include.
	* src/stash.c: fix compile for non-USE_KRB4 case.
	* src/v4.c: fix compile for non-USE_KRB4 case.
	* src/v5.c(v5_cc_retrieve_match): add.
	* src/v5.c(v5_creds_key_length): add.
	* src/v5.c(v5_creds_key_contents): add.

2004-03-23 nalin
	* configure.ac: remove kafs/krbafs checks.
	* src/Makefile.am: add EXTRA_PROGRAMS target for afs5log.
	* src/afs5log.c: add a test program for exercising minikafs.
	* src/minikafs.c, src/minikafs.h: add a less-portable but more-flexible
	krbafs implementation.
	* src/options.c(_pam_krb5_options_init): distinguish between v4 for
	general use and v4 because we're using AFS.

2004-03-16 nalin
	* src/pam_krb5_storetmp.c: remove the file if it's not a valid mkstemp
	pattern, even if we were passed a UID/GID.

2004-03-16 nalin
	* src/storetmp.c: drop privileges before we exec the helper.

2004-03-16 nalin
	* src/pam_krb5_storetmp.c: only attempt to change to the required
	UID/GID if we are not already running with that UID/GID, and only
	attempt to clear the supplemental groups list if uid == 0 (we're root).

2004-03-16 nalin
	* src/session.c: remove explict calls to chown(), which would be denied
	by SELinux in enforcing mode, instead expecting the helper to handle it
	all.
	* src/v5.c: remove explict calls to chown(), which would be denied by
	SELinux in enforcing mode, instead expecting the helper to handle it
	all.
	* src/v4.c: remove explict calls to chown(), which would be denied by
	SELinux in enforcing mode, instead expecting the helper to handle it
	all.
	* src/storetmp.c: pass the user's uid and gid to the helper, it already
	knows what to do.
	* src/tokens.c(tokens_useful): add.
	* src/session.c: when opening a session, create temporary tickets for
	grabbing tokens with the current permissions so that libkrb4 doesn't
	reject them, then clean them up, then create those for the user.

2004-03-10 nalin
	* src/pam_krb5_storetmp.c: if the filename pattern supplied is not a
	valid pattern (does not end with XXXXXX), delete the file instead,
	reporting success in the same way.
	* src/session.c(pam_sm_close_session): note ticket file deletions when
	debugging.
	* src/storetmp.c(_pam_krb5_storetmp_delete): add, to invoke the helper
	for removal of a file.
	* src/stash.c(_pam_krb5_stash_clean): add, to attempt to remove a file
	using the helper, falling back to unlink() if the helper fails.
	* src/v4.c(v4_destroy): use _pam_krb5_stash_clean instead of unlink()
	to remove ticket files.
	* src/v5.c(v5_destroy): use _pam_krb5_stash_clean instead of unlink()
	to remove ccache files.

2004-02-27 nalin
	* src/session.c(pam_sm_open_session): only set variables if the ticket
	files have non-zero-length filenames.

2004-02-27 nalin
	* src/storetmp.c(_pam_krb5_storetmp_data): open /dev/null three times to
	ensure that pipe() won't give us any stdio descriptors.  Reintroduce the
	call to execl() which got dropped earlier.

2004-02-27 nalin
	* src/pam_krb5_storetmp.c: add this helper, which creates a file using
	mkstemp, filling it with supplied data.
	* src/storetmp.c: add routines for using pam_krb5_storetmp to create
	copies of session-specific ticket files after crossing an exec(), so
	that a new SELinux context can apply to the new file.
	* everything: update copyright statements to include this year.
	* src/stash.c(_pam_krb5_stash_clone_v5): add, to call
	_pam_krb5_storetmp_file to copy the ccache.
	* src/v5.c(v5_save): clone the ticket file after creating it.
	* src/stash.c(_pam_krb5_stash_clone_v4): add, to call
	_pam_krb5_storetmp_file to copy the ccache.
	* src/v4.c(v4_save): clone the ticket file after creating it.

2004-01-07 nalin
	* src/stash.h: always have a v4present field in the structure.
	* src/v4.h: don't try 524 conversion if we don't have krb4 -- we
	wouldn't be able to do anything with the results.  Noted by Jörg
	Albert.

2004-01-07 nalin
	* src/v4.c(v4_save): make the stub v4_save function match the
	non-stub's prototype.  Noted by Jörg Albert.
	* src/v4.c(v4_destroy): don't return a value from this function, which
	returns void.  Noted by Jörg Albert.

2003-11-25 nalin
	* README: updates

2003-11-20 nalin
	* src/userinfo.c, src/userinfo.h: when setting things up for a user,
	obey "mappings" settings.  Because we can't be certain that the
	generated principal will pass through aname_to_lname correctly, don't
	do that any more.

2003-11-20 nalin
	* src/initopts.c(_pam_krb5_set_init_opts): set the ticket lifetime,
	if configured, as an initopt.  This change lets us fix #109331.

2003-11-20 nalin
	* src/options.c, src/options.h: add code for parsing a "mappings"
	setting.  Reintroduce ticket_lifetime, which I mistakenly thought was
	a libdefault setting now.

2003-11-20 nalin
	* src/map.c, src/map.h: add mapping functions which mimic OpenLDAP's
	saslRegexp functionality for mapping local user names to principal
	names.

2003-11-20 nalin
	* src/init.c: instead of forcing the realm when parsing principals,
	make realm= set the default realm.

2003-11-19 nalin
	* src/v5.c(v5_get_creds): use the realm from the unparsed version of
	the principal name when constructing service principals.

2003-09-22 nalin
	* src/session.c: actually return where we were supposed to return.

2003-09-19 nalin
	* src/session.c: if v5attempted is 0 or v5result is not 0, don't
	mess with tokens or credentials.  This allows apps which change their
	UIDs to keep tokens unless they obtained some of their own.
	* src/auth.c: before attempting authentication, reset v5attempted so
	that we don't count a previous authentication failure as a failure
	forever.
	* src/acct.c: if v5attempted is not set in the user's stash, attempt
	to get initial credentials for the user.  If the password check fails,
	assume the user name is valid.

2003-09-05 nalin
	* src/stash.h: add a v5attempted field to track whether or not we've
	attempted to get v5 creds for this user. add an afspag field to track
	whether or not we've created an afs PAG.
	* src/stash.c: initialize v5attempted and other fields, even if it's
	redundant after using memset to clear the whole structure.
	* src/auth.c: set v5attempted in the user's stash immediately after
	all calls to v5_get_creds.
	* src/acct.c: if v5attempted is not set in the user's stash, just
	return PAM_IGNORE.
	* src/tokens.c: only delete tokens on session close if we created a
	pag, lest we lose tokens when reverting back in su.  Only warn about
	errors getting tokens if v5attempted was set (else these become debug
	messages).
	* src/pam_krb5.8.in: note the behavior of the module in acct stacks.

2003-09-05 nalin
	* configure.ac: check for krb_time_to_life.
	* src/v4.c: use krb_time_to_life to convert lifetimes from seconds to
	bytes, not krb_life_to_time, which does the opposite.

2003-08-14 nalin
	* configure.ac: check for __posix_getpwnam_r.
	* src/userinfo.c(get_pw): use __posix_getpwnam_r if it is available and
	getpwnam_r isn't available

2003-08-14 nalin
	* src/session.c(pam_close_session), src/sly.c: return PAM_USER_UNKNOWN
	instead of PAM_SERVICE_ERR if we fail to get information about the user.

2003-08-14 nalin
	* src/auth.c(pam_sm_authenticate): log the PAM error code we're
	returning if we're returning a failure after all attempts have been
	made.  Save the password entered by the user in the normal we-prompted
	case.
	* pam_krb5.spec: bump version to 2.0.1

2003-08-14 nalin
	* src/auth.c, src/acct.c, src/session.c(pam_open_session),
	src/password.c: return PAM_USER_UNKNOWN instead of PAM_SERVICE_ERR if
	we fail to get information about the user.
	
2003-08-14 nalin
	* tests/run-tests: leave some time between expiring of passwords and
	attempts to check if they've truly been expired, in case the server
	implementation considers expiration time to be the end of the second
	instead of the start

2003-08-13 nalin
	* src/xstr.c, src/xstr.h: add xstrfree().
	* src/auth.c, src/options.c, src/password.c, src/prompter.c,
	src/stash.c, src/userinfo.c, src/v4.c, src/v5.c: use xstrfree() to
	free strings.

Thu Aug  7 2003 nalin
- Major overhaul and refactoring of everything.

Thu Jan 30 2003 Nalin Dahyabhai <nalin@redhat.com>
- Fix uninitialized pointer crash when we fail to retrieve cached return values.

Wed Jan 29 2003 Nalin Dahyabhai <nalin@redhat.com>
- Fix accidental double-free because libpam doesn't appear to make copies of
  the names for data items.

Fri Aug 23 2002 Nalin Dahyabhai <nalin@redhat.com>
- Update docs on the location of the anoncvs tree.
- Add warnings to the list of options we invoke $(CC) with.
- Use per-user stash and stored return value names.

Wed Aug  7 2002 Nalin Dahyabhai <nalin@redhat.com>
- Treat PAM_REFRESH_CRED like PAM_REINITIALIZE_CRED.  From Jason Heiss.

Fri May 24 2002 Nalin Dahyabhai <nalin@redhat.com>
- Fix a parser bug, pointed out by Balazs GAL.

Wed May 22 2002 Nalin Dahyabhai <nalin@redhat.com>
- Guess that the current cell name is the same as the realm name, lower-cased.

Fri Feb 15 2002 Nalin Dahyabhai <nalin@redhat.com>
- Update docs to give info about the account management function.

Mon Feb 11 2002 Nalin Dahyabhai <nalin@redhat.com>
- Add account management, which checks for key expiration and .k5login files.

Tue Sep 25 2001 Nalin Dahyabhai <nalin@redhat.com>
- Fix parsing of options which have multiple whitespace-separated values,
  like afs_cells.

Wed Sep  5 2001 Nalin Dahyabhai <nalin@redhat.com>
- Link with libresolv to get res_search, tip from Justin McNutt, who
  built it statically.
- Explicitly link with libdes425.
- Handle cases where getpwnam_r fails but still sets the result pointer.
- If use_authtok is given and there is no authtok, error out.

Mon Aug 27 2001 Nalin Dahyabhai <nalin@redhat.com>
- Set the default realm when a default realm is specified.

Thu Aug 23 2001 Nalin Dahyabhai <nalin@redhat.com>
- Only use Kerberos error codes when there is no PAM error yet.

Wed Aug 22 2001 Nalin Dahyabhai <nalin@redhat.com>
- Add minimum UID support. (#52358)
- Don't link pam_krb5 with libkrbafs; that dependency should only exist for
  pam_krb5afs.

Wed Aug 22 2001 Nalin Dahyabhai <nalin@redhat.com>
- Add minimum UID support (suggested by Matthew Miller).
- Don't link pam_krb5 with libkrbafs.
- Make all options in krb5.conf available as PAM config options.  This should
  make things more interesting.

Tue Jul 31 2001 Nalin Dahyabhai <nalin@redhat.com>
- Merge patch from Chris Chiappa for building with Heimdal.

Mon Jul 24 2001 Nalin Dahyabhai <nalin@redhat.com>
- Note that we had to prepend the current directory to a given path in
  dlopen.c when we had to (noted by Onime Clement).

Tue Jul 17 2001 Nalin Dahyabhai <nalin@redhat.com>
- Return PAM_NEW_AUTHTOK_REQD when attempts to get initial credentials
  fail with KRB5KDC_ERR_KEY_EXP (noted by Onime Clement).

Thu Jul 12 2001 Nalin Dahyabhai <nalin@redhat.com>
- Add info about accessing the CVS repository to the README.
- Parser cleanups (thanks to Dane Skow for a more complicated sample).

Fri Jul  6 2001 Nalin Dahyabhai <nalin@redhat.com>
- Don't set forwardable and assorted other flags when getting password-
  changing service ticket (noted, and fix supplied, by Onime Clement).
- Try __posix_getpwnam_r on Solaris before we try getpwnam_r, which may
  or may not be expecting the same number/type of arguments (noted by
  Onime Clement).
- Use krb5_aname_to_localname to convert the principal to a login name
  and set PAM_USER to the result when authenticating.
- Some autoconf fixes for failure cases.

Wed Jun 26 2001 Nalin Dahyabhai <nalin@redhat.com>
- Use krb5_change_password() to change passwords.

Tue Jun 12 2001 Nalin Dahyabhai <nalin@redhat.com>
- Use getpwnam_r instead of getpwnam when available.

Fri Jun  8 2001 Nalin Dahyabhai <nalin@redhat.com>
- Cleanup some autoconf checks.

Thu Jun  7 2001 Nalin Dahyabhai <nalin@redhat.com>
- Don't call initialize_krb5_error_table() or initialize_ovk_error_table()
  if they're not found at compile-time (reported for RHL 6.x by Chris Riley).

Thu May 31 2001 Nalin Dahyabhai <nalin@redhat.com>
- Note that [pam] is still checked in addition to [appdefaults].
- Note that AFS and Kerberos IV support requires working Kerberos IV
  configuration files (i.e., kinit -4 needs to work) (doc changes
  suggested by Martin Schulz).

Tue May 29 2001 Nalin Dahyabhai <nalin@redhat.com>
- Add max_timeout, timeout_shift, initial_timeout, and addressless options
  (patches from Simon Wilkinson).
- Fix the README to document the [appdefaults] section instead of [pam].
- Change example host and cell names in the README to use example domains.

Wed May  2 2001 Nalin Dahyabhai <nalin@redhat.com>
- Don't delete tokens unless we're also removing ticket files (report and
  patch from Sean Dilda).
- Report initialization errors better.

Thu Apr 26 2001 Nalin Dahyabhai <nalin@redhat.com>
- Treat semicolons as a comment character, like hash marks (bug reported by
  Greg Francis at Gonzaga University).
- Use the [:blank:] equivalence class to simplify the configuration file parser.
- Don't mess with the real environment.
- Implement mostly-complete aging support.

Sat Apr  7 2001 Nalin Dahyabhai <nalin@redhat.com>
- Tweak the man page (can't use italics and bold simultaneously).

Fri Apr  6 2001 Nalin Dahyabhai <nalin@redhat.com>
- Restore the default TGS value (#35015).

Wed Mar 28 2001 Nalin Dahyabhai <nalin@redhat.com>
- Fix a debug message.
- Fix uninitialized pointer error.

Mon Mar 26 2001 Nalin Dahyabhai <nalin@redhat.com>
- Don't fail to fixup the krb5 ccache if something goes wrong obtaining
  v4 credentials or creating a krb4 ticket file (#33262).

Thu Mar 22 2001 Nalin Dahyabhai <nalin@redhat.com>
- Fixup the man page.
- Log return code from k_setpag() when debugging.
- Create credentials and get tokens when setcred is called for REINITIALIZE.

Wed Mar 21 2001 Nalin Dahyabhai <nalin@redhat.com>
- Don't twiddle ownerships until after we get AFS tokens.
- Use the current time instead of the issue time when storing v4 creds, since
  we don't know the issuing host's byte order.
- Depend on a PAM development header again instead of pam-devel.

Tue Mar 20 2001 Nalin Dahyabhai <nalin@redhat.com>
- Add a separate config file parser for compatibility with settings that
  predate the appdefault API.
- Use a version script under Linux to avoid polluting the global namespace.
- Don't have a default for afs_cells.
- Need to close the file when we succeed in fixing permissions (noted by
  jlkatz@eos.ncsu.edu).

Mon Mar 19 2001 Nalin Dahyabhai <nalin@redhat.com>
- Use the appdefault API to read krb5.conf if available.
- Create v4 tickets in such a way as to allow 1.2.2 to not think there's
  something fishy going on.

Tue Feb 13 2001 Nalin Dahyabhai <nalin@redhat.com>
- Don't log unknown user names to syslog -- they might be sensitive information.

Fri Feb  9 2001 Nalin Dahyabhai <nalin@redhat.com>
- Handle cases where krb5_init_context() fails.

Wed Jan 17 2001 Nalin Dahyabhai <nalin@redhat.com>
- Be more careful around memory allocation (fixes from David J. MacKenzie).

Mon Jan 15 2001 Nalin Dahyabhai <nalin@redhat.com>
- No fair trying to make me authenticate '(null)'!

Wed Nov  7 2000 Nalin Dahyabhai <nalin@redhat.com>
- Only try to delete ccache files once.
- Ignore extra data in v4 TGTs, but do log it.
- Require "validate" to be true to try validating, and fail if validation fails.

Thu Aug 10 2000 Nalin Dahyabhai <nalin@redhat.com>
- Fix handing of null passwords.

Wed Jul  5 2000 Nalin Dahyabhai <nalin@redhat.com>
- Integrate some fixes for Solaris 7 from Trevor Schroeder (flock.c is
  entirely his).

Tue Jun 27 2000 Nalin Dahyabhai <nalin@redhat.com>
- Integrate Seth Vidal's "no_user_check" argument, so that non-privileged
  users (i.e., secure web servers) can also do checks.

Wed May 17 2000 Nalin Dahyabhai <nalin@redhat.com>
- Make errors chown()ing ccache files non-fatal if (getuid() != 0), suggested
  by Steve Langasek.

Mon May 15 2000 Nalin Dahyabhai <nalin@redhat.com>
- Attempt to get initial Kerberos IV credentials when we get Kerberos 5 creds

Thu Apr 20 2000 Nalin Dahyabhai <nalin@redhat.com>
- Chris Chiappa's modifications for customizing the ccache directory

Wed Apr 19 2000 Nalin Dahyabhai <nalin@redhat.com>
- Mark Dawson's fix for krb4_convert not being forced on when afs_cells defined

Thu March 23 2000 Nalin Dahyabhai <nalin@redhat.com>
- fix problem with leftover ticket files after multiple setcred() calls

Mon March 20 2000 Nalin Dahyabhai <nalin@redhat.com>
- add proper copyright statements
- save password for modules later in the stack

Fri March 03 2000 Nalin Dahyabhai <nalin@redhat.com>
- clean up prompter

Thu March 02 2000 Nalin Dahyabhai <nalin@redhat.com>
- add krbafs as a requirement

Fri February 04 2000 Nalin Dahyabhai <nalin@redhat.com>
- pick up non-afs PAM config files again

Wed February 02 2000 Nalin Dahyabhai <nalin@redhat.com>
- autoconf and putenv() fixes for broken apps
- fix for compressed man pages

Fri January 14 2000 Nalin Dahyabhai <nalin@redhat.com>
- fix stupid bug in password-changing
- add check that user exists in Kerberos before prompting to make password-
  changing sane for mixed environments

Thu January 6 2000 Nalin Dahyabhai <nalin@redhat.com>
- merge in spelling and other fixes from Michael K. Johnson
- modify to build both normal and AFS-aware version if krbafs.h is found

Fri December 31 1999 Nalin Dahyabhai <nalin@redhat.com>
- change to using ticket files created with mkstemp()

Tue December 28 1999 Nalin Dahyabhai <nalin@redhat.com>
- make setcred() return the same code as authenticate() to make sure that libpam
  walks the auth stack the same way for both functions

Wed December 22 1999 Nalin Dahyabhai <nalin@redhat.com>
- add man pages that don't mention AFS at all

Tue November 30 1999 Nalin Dahyabhai <nalin.dahyabhai@pobox.com>
- add linking with libcrypt, remove linking with libpam

Mon November 29 1999 Nalin Dahyabhai <nalin.dahyabhai@pobox.com>
- Make creating the Kerberos IV ticket a non-fatal error if there are problems.
- Add man pages.

Mon November 8 1999 Nalin Dahyabhai <nalin.dahyabhai@pobox.com>
- Clean up PAM_AUTHTOK_RECOVER{,Y}_ERR definition problems and Solaris LD flags.
  Problems spotted and solution proposed by Nitin Dahyabhai <nitind@pobox.com>.

Wed November 3 1999 Nalin Dahyabhai <nalin.dahyabhai@pobox.com>
- Massive restructuring and cleaning out of 1.0-specific code.

Mon October 4 1999 Nalin Dahyabhai <nalin.dahyabhai@pobox.com>
- Update for krb5 1.1 release

Mon July 26 1999 Nalin Dahyabhai <nalin.dahyabhai@pobox.com>
- Configure should die if krb5.h or krbafs.h isn't found (bfdimmic@eos.ncsu.edu)

Thu July 15 1999 Nalin Dahyabhai <nalin.dahyabhai@pobox.com>
- Added reason to authentication failure messages (wjlyerly@eos.ncsu.edu)
- Only prompt for second password if first password fails

Fri June 18 1999 Nalin Dahyabhai <nalin.dahyabhai@pobox.com>
- First public release.  Bwah-ha-ha-ha-ha-ha-ha!
