]> git.ipfire.org Git - thirdparty/krb5.git/log
thirdparty/krb5.git
8 years agoFix leak on error in libkadm5_srv initialization 476/head
Greg Hudson [Thu, 14 Jul 2016 15:15:40 +0000 (11:15 -0400)] 
Fix leak on error in libkadm5_srv initialization

In init_any(), free handle->params on failure.

ticket: 8453 (new)
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

8 years agoFix leak in capaths processing
Greg Hudson [Wed, 29 Jun 2016 04:01:04 +0000 (00:01 -0400)] 
Fix leak in capaths processing

In k5_client_realm_path(), free the list of strings returned by
rtree_capaths_vals().

ticket: 8447 (new)
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

8 years agoFix leak in key change operations
Greg Hudson [Wed, 29 Jun 2016 02:20:22 +0000 (22:20 -0400)] 
Fix leak in key change operations

In preserve_one_old_key(), if the initial decryption in the current
master key succeeds, free the decrypted keyblock contents before
exiting.

ticket: 8446 (new)
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

8 years agoFix leak in kadm5_hook interface
Greg Hudson [Wed, 29 Jun 2016 02:15:17 +0000 (22:15 -0400)] 
Fix leak in kadm5_hook interface

In k5_kadm5_hook_free_handles(), free each handle structure as well as
its module data.

ticket: 8445 (new)
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

8 years agoFix unlikely leak in sendto_kdc
Greg Hudson [Wed, 29 Jun 2016 02:10:35 +0000 (22:10 -0400)] 
Fix unlikely leak in sendto_kdc

If a TCP connection is killed after it allocates the buffer (so is no
longer in READING state), free the buffer during cleanup.

ticket: 8444 (new)
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

8 years agoFix leak in FAST OTP client processing
Greg Hudson [Wed, 29 Jun 2016 01:38:57 +0000 (21:38 -0400)] 
Fix leak in FAST OTP client processing

In set_pa_data(), after encoding the OTP request and stealing the
pointer from the resulting krb5_data object, free the krb5_data
container.

ticket: 8443 (new)
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

8 years agoFix leak in DB2 krb5_db_promote() implementation
Greg Hudson [Tue, 28 Jun 2016 22:09:35 +0000 (18:09 -0400)] 
Fix leak in DB2 krb5_db_promote() implementation

In krb5_db2_merge_nra_iterator(), free the entry loaded from the
source DB.

ticket: 8442 (new)
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

8 years agoFix leak in ulog_replay()
Greg Hudson [Tue, 28 Jun 2016 22:01:55 +0000 (18:01 -0400)] 
Fix leak in ulog_replay()

ulog_conv_2dbentry() allocates a krb5_db_entry container; the caller
should not also do so.

ticket: 8441 (new)
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

8 years agoFix krb5_get_init_creds_password() pwchange leak
Greg Hudson [Tue, 28 Jun 2016 18:52:31 +0000 (14:52 -0400)] 
Fix krb5_get_init_creds_password() pwchange leak

When krb5_get_init_creds_password() attempts to change the password,
make sure to free code_string along all exit paths.

ticket: 8440 (new)
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

8 years agoFix leak in gss_display_name() for non-MN names
Greg Hudson [Tue, 28 Jun 2016 16:28:11 +0000 (12:28 -0400)] 
Fix leak in gss_display_name() for non-MN names

RFC 2744 states that the gss_display_name() output_name_type result is
"a pointer into static storage, and should be treated as read-only by
the caller (in particular, the application should not attempt to free
it)".  For non-mechanism names, we were making a copy of the name type
from the union name structure, causing a memory leak; stop doing that.

ticket: 8439 (new)
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

8 years agoFix leak in k5_free_cammac()
Greg Hudson [Mon, 27 Jun 2016 23:38:36 +0000 (19:38 -0400)] 
Fix leak in k5_free_cammac()

free_vmac(), a helper function used by k5_free_cammac(), must free its
val pointer as well as the contents; otherwise the krb5_verifier_mac
container is leaked.

ticket: 8438 (new)
target_version: 1.14-next
tags: pullup

8 years agoFix leaks on error in krb5 gss_acquire_cred()
Greg Hudson [Mon, 27 Jun 2016 21:49:57 +0000 (17:49 -0400)] 
Fix leaks on error in krb5 gss_acquire_cred()

In acquire_cred_context(), when releasing the partially constructed
cred on error, make sure to free the password and impersonator fields,
and to destroy the ccache if we created it.

ticket: 8437 (new)
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

8 years agoFix leak on error in libkadm5_clnt initialization
Greg Hudson [Mon, 27 Jun 2016 06:00:26 +0000 (02:00 -0400)] 
Fix leak on error in libkadm5_clnt initialization

In init_any(), free handle->lhandle on failure.

ticket: 8435 (new)
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

8 years agoFix memory leak in old gssrpc authentication
Greg Hudson [Mon, 27 Jun 2016 04:21:30 +0000 (00:21 -0400)] 
Fix memory leak in old gssrpc authentication

auth_gssapi_create(), which is now only used to connect to ancient
servers, can leak memory on error or when multiple GSSAPI_INIT calls
are required.  Ensure that call_res is freed along all exit paths and
before each repeat clnt_call() invocation.

ticket: 8434 (new)

8 years agoFix memory leak destroying DIR ccache
Greg Hudson [Sun, 26 Jun 2016 04:46:39 +0000 (00:46 -0400)] 
Fix memory leak destroying DIR ccache

Credential cache destroy methods are supposed to free the krb5_ccache
structure as well as its contents, but dcc_destroy() was not doing so.

ticket: 8433 (new)
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

8 years agoFix memory leak in db2 policy DB initialization
Greg Hudson [Fri, 24 Jun 2016 16:33:05 +0000 (12:33 -0400)] 
Fix memory leak in db2 policy DB initialization

osa_adb_init_db() maintains a static linked list mapping filenames to
lock structures.  Entries are never removed from the list; when their
reference counts hit 0, the lockfile is closed but the filename
remains allocated.  However, the filename is allocated each time the
lockfile is re-opened, leaking the old value.  Fix this leak by moving
filename initialization to entry creation.

ticket: 8432 (new)
target_version: 1.14-next
tags: pullup

8 years agoUpdate libev sources to 4.22
Greg Hudson [Mon, 27 Jun 2016 17:13:47 +0000 (13:13 -0400)] 
Update libev sources to 4.22

This update fixes a memory leak when freeing null pointers using
ev_realloc_emul().  In 4.04, that function assumed that realloc(x, 0)
is equivalent to free(x) under glibc, but in at least some versions of
glibc, realloc(NULL, 0) behaves like malloc(0) rather than free(NULL)
and allocates memory.

ticket: 8436 (new)

8 years agoAdd Host HTTP header to MS-KKDCP requests
Christian Heimes [Mon, 8 Aug 2016 10:38:17 +0000 (12:38 +0200)] 
Add Host HTTP header to MS-KKDCP requests

Some web servers require a Host HTTP header for TLS connections with
SNI (server name indicator).  It is also required for virtual hosts.

ticket: 8472 (new)
target_version: 1.14-next
tags: pullup

8 years agoAdd unit tests for sort_key_data
Sarah Day [Fri, 22 Jan 2016 14:37:10 +0000 (09:37 -0500)] 
Add unit tests for sort_key_data

8 years agoAdd unit tests for k5_parse_host_string
Sarah Day [Tue, 19 Jan 2016 14:50:33 +0000 (09:50 -0500)] 
Add unit tests for k5_parse_host_string

Make is_string_numeric() visible outside of parse_host_string.c as
k5_is_string_numeric() so it can be tested.  Make
k5_parse_host_string() return an error when address begins with ':',
for consistency with APR's apr_parse_addr_port().

[ghudson@mit.edu: squashed three commits; added t_parse_host_string to
.gitignore and clean rule; clarified commit message]

8 years agoAdd cmocka support
Sarah Day [Mon, 25 Jul 2016 17:20:08 +0000 (13:20 -0400)] 
Add cmocka support

8 years agoChange KDC error for encrypted timestamp preauth
Andreas Schneider [Mon, 8 Aug 2016 16:03:55 +0000 (18:03 +0200)] 
Change KDC error for encrypted timestamp preauth

When encrypted timestamp pre-authentication fails, respond with error
code KDC_ERR_PREAUTH_FAILED, rather than KRB_AP_ERR_BAD_INTEGRITY, for
consistency with other Kerberos implementations.

[ghudson@mit.edu: clarified commit message and comment]

ticket: 8471 (new)

8 years agoFix and simplify locate_kdc.c port byte order 506/head
Greg Hudson [Sun, 7 Aug 2016 04:02:00 +0000 (00:02 -0400)] 
Fix and simplify locate_kdc.c port byte order

Commit c89587b4476139f05f34aa2323bd7c7db348c44c introduced a bug in
the handling of KDC specifications using the default port, by passing
it to k5_parse_host_string() in network byte order.  Fix this by
removing all of the port byte order transformations in locate_kdc.c,
and storing the struct serverlist port field in host byte order.
Adjust other consumers of struct serverlist to expect the port to be
in host field to be in host byte order.

Reported by Isaac Boukris.

9 years agoMake Emacs tags actually work 503/head
Tom Yu [Thu, 28 Jul 2016 17:18:23 +0000 (13:18 -0400)] 
Make Emacs tags actually work

9 years agoRemove unused stuff from top-level Makefile.in
Tom Yu [Wed, 27 Jul 2016 23:42:22 +0000 (19:42 -0400)] 
Remove unused stuff from top-level Makefile.in

9 years agoWarn about dump -recurse nonfunctionality 502/head
Tom Yu [Wed, 3 Aug 2016 21:00:05 +0000 (17:00 -0400)] 
Warn about dump -recurse nonfunctionality

kdb5_util dump -recurse hasn't behaved as documented since krb5-1.5,
when the DAL was integrated.  Restoring it is a nontrivial amount of
work, so just document it for now.

ticket: 8470 (new)
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

9 years agoRemove unnecessary directories 500/head
Greg Hudson [Wed, 3 Aug 2016 15:26:13 +0000 (11:26 -0400)] 
Remove unnecessary directories

Remove the plugin modules wpse, cksum_body, and locate/python, which
aren't used by the test suite or built by default.

Remove util/collected-client-lib, as we no longer have a need to
create a smaller client-only library.

Remove util/gss-kernel-lib, as it turned out not to be useful for
facilitating kernel integrations.

9 years agoRemove all makefiles in make distclean 499/head
Greg Hudson [Sat, 30 Jul 2016 18:50:46 +0000 (14:50 -0400)] 
Remove all makefiles in make distclean

Change the build system to descend into every directory where we
create a Makefile, but not to build or run anything during "make all"
and "make check" in directories we previously didn't visit.  Document
specific build targets that can be used in those directories.

Do not generate a Makefile for the securid_sam2 module unless we are
building it, for consistency with other conditionally built
directories.

9 years agomake depend 498/head
Greg Hudson [Thu, 28 Jul 2016 17:37:59 +0000 (13:37 -0400)] 
make depend

9 years agoFix build system hygiene issues
Greg Hudson [Thu, 28 Jul 2016 17:37:53 +0000 (13:37 -0400)] 
Fix build system hygiene issues

Add some missing files to .gitignore, EXTRADEPSRCS, and clean rules.

9 years agoAdd skiptests notification for Python scripts 495/head
Greg Hudson [Tue, 26 Jul 2016 18:24:44 +0000 (14:24 -0400)] 
Add skiptests notification for Python scripts

If Python 2.5 or later is not found, add a notice to the skiptests
file to alert the user that Python test scripts were skipped.

Move the "cat $(SKIPTESTS)" command from check-postrecurse to
check-unix so that it executes after check-pytests-yes or
check-pytests-no.

9 years agoUse single-colon rules in makefiles
Greg Hudson [Tue, 26 Jul 2016 17:32:08 +0000 (13:32 -0400)] 
Use single-colon rules in makefiles

Double-colon rules allow the flexibility to specify commands in
multiple places, but they also make the order of commands and
dependencies dependent on the order of declarations in the Makefile.
Convert all of our double-colon rules to single-colon rules, with the
exception of "clean-unix" and "clean-windows" which have commands
defined in both post.in and in numerous Makefile.in files.

9 years agoMove CFLAGS and CPPFLAGS after local includes
Sarah Day [Wed, 27 Jul 2016 16:44:49 +0000 (12:44 -0400)] 
Move CFLAGS and CPPFLAGS after local includes

The gss-kernel-lib Makefile overrides ALL_CFLAGS.  It was setting
the CFLAGS and CPPFLAGS to occur before local includes, which
causes some compilers to include system header files before the
local header files.  Moving the CPPFLAGS and CFLAGS to the end of
ALL_CFLAGS corrects this behavior.

9 years agoRename k5-queue.h macros 497/head
Tom Yu [Wed, 27 Jul 2016 17:19:51 +0000 (13:19 -0400)] 
Rename k5-queue.h macros

Some BSD-derived systems (e.g., FreeBSD and Mac OS X) inappropriately
include sys/queue.h from some non-kernel network-related headers that
we include (net/if.h is one example).  Because our k5-queue.h is a
copy from a BSD sys/queue.h, many compilers will warn about macro
redefinitions on those systems.  Rename the queue macros to have a K5_
prefix.

Also delete the QUEUEDEBUG macros because they are only useful for
kernel use on the BSD systems where this header originated.

ticket: 8466 (new)

9 years agoImprove bad password inference in kinit 491/head
Greg Hudson [Mon, 25 Jul 2016 17:28:43 +0000 (13:28 -0400)] 
Improve bad password inference in kinit

kinit currently outputs "Password incorrect" if it sees a
bad-integrity error code, which results if the KDC reply couldn't be
decrypted, or when encrypted timestamp preauth fails against an MIT
krb5 1.14 or earlier KDC.  Expand this check to include general
preauth failures reported by the KDC, but only if a password was
prompted for.

ticket: 8465 (new)

9 years agoSet prompt type for OTP preauth prompt
Greg Hudson [Mon, 25 Jul 2016 17:23:31 +0000 (13:23 -0400)] 
Set prompt type for OTP preauth prompt

Add k5_set_prompt_type() calls around the prompter invocation in
preauth_otp.c, and add the comment we conventionally put before
prompter invocations.

ticket: 8464 (new)

9 years agoFix skiptests typo in lib/krb5/os/Makefile.in 494/head
Tom Yu [Mon, 25 Jul 2016 20:42:13 +0000 (16:42 -0400)] 
Fix skiptests typo in lib/krb5/os/Makefile.in

9 years agoComment why TRACE() is not used directly 490/head
Ben Kaduk [Sat, 23 Jul 2016 19:59:05 +0000 (14:59 -0500)] 
Comment why TRACE() is not used directly

Instead, a new TRACE_* macro should be defined for each trace point, and
that macro used from the library code.

9 years agoClean up some whitespace in configure.in 492/head
Tom Yu [Mon, 25 Jul 2016 18:58:08 +0000 (14:58 -0400)] 
Clean up some whitespace in configure.in

Delete trailing spaces at EOL.  Other whitespace issues remain for
now.

9 years agoBetter handle failures to resolve client keytab
Will Fiveash [Wed, 20 Jul 2016 00:20:51 +0000 (19:20 -0500)] 
Better handle failures to resolve client keytab

In krb5_gss_acquire_cred(), treat failure to resolve the client keytab
similarly to a client keytab which resolves but does not exist or has
no entries.  The client keytab could fail to resolve if its name
contains %{username} and the current process is acting on behalf of
the NSS system.

[ghudson@mit.edu: rewrote commit message; changed tracing call to use
a macro; cleared error message when ignoring krb5_kt_client_default()
error; added test case]

ticket: 8462 (new)

9 years agoAllow trace logging from GSS library
Greg Hudson [Thu, 21 Jul 2016 15:40:31 +0000 (11:40 -0400)] 
Allow trace logging from GSS library

Export krb5int_trace from the krb5 DLL on Windows, so that trace
logging points can be added to the GSS library.

9 years agoMinimize timing leaks in PKINIT decryption 466/head
Greg Hudson [Thu, 16 Jun 2016 20:38:07 +0000 (16:38 -0400)] 
Minimize timing leaks in PKINIT decryption

pkcs7_dataDecode() is derived from OpenSSL's PKCS7_datadecode() and is
used by PKINIT clients to decrypt ReplyKeyPack values in RSA mode.
The upstream function was changed for CVE-2012-0884 to minimize the
timing difference when RSA decryption results in the wrong padding.
Although the impact on Kerberos is negligible (because clients do not
ordinarily choose to use RSA mode, and cannot easily be induced to
make many thousands of requests with the same key), change
pkcs7_dataDecode() to match the upstream change, generating a random
symmetric key and using it when RSA decryption fails.  Also rename
"tmp" and "tmp_len" to "ek" and "eklen" to match the more descriptive
upstream variable names.

ticket: 8428 (new)

9 years agoSimplify pkcs7_dataDecode() in PKINIT
Greg Hudson [Thu, 16 Jun 2016 17:54:01 +0000 (13:54 -0400)] 
Simplify pkcs7_dataDecode() in PKINIT

RFC 4556 requires that the EnvelopedData in the encKeyPack contain
only one RecipientInfo.  Take advantage of this constraint to simplify
pkcs7_dataDecode().

9 years agoAdd a PKINIT test using RSA
Greg Hudson [Wed, 4 May 2016 15:25:32 +0000 (11:25 -0400)] 
Add a PKINIT test using RSA

In t_pkinit.py, add a simple PKINIT test using RSA encryption instead
of a Diffie-Hellman exchange.

9 years agoFix recent change to kdcdefaults processing 486/head
Greg Hudson [Tue, 19 Jul 2016 16:46:37 +0000 (12:46 -0400)] 
Fix recent change to kdcdefaults processing

When falling back to reading kdc_tcp_ports from [kdcdefaults], assign
the result to the correct variable.

ticket: 1093

9 years agoFix S4U2Self KDC crash when anon is restricted 485/head
Greg Hudson [Tue, 19 Jul 2016 15:00:28 +0000 (11:00 -0400)] 
Fix S4U2Self KDC crash when anon is restricted

In validate_as_request(), when enforcing restrict_anonymous_to_tgt,
use client.princ instead of request->client; the latter is NULL when
validating S4U2Self requests.

CVE-2016-3120:

In MIT krb5 1.9 and later, an authenticated attacker can cause krb5kdc
to dereference a null pointer if the restrict_anonymous_to_tgt option
is set to true, by making an S4U2Self request.

  CVSSv2 Vector: AV:N/AC:H/Au:S/C:N/I:N/A:C/E:H/RL:OF/RC:C

ticket: 8458 (new)
target_version: 1.14-next
target_version: 1.13-next

9 years agoFix error code on clpreauth module failure
Greg Hudson [Tue, 19 Jul 2016 14:52:06 +0000 (10:52 -0400)] 
Fix error code on clpreauth module failure

Commit 632260bd1fccfb420f0827b59c85c329203eafc9 (ticket #7517) allows
better error reporting for some client pre-authentication failures.
However, it breaks an assumption in the S4U2Self code that such errors
can be recognized by the KRB5_PREAUTH_FAILED error code.  Instead of
passing through the error code reported by the first real preauth
module, wrap that error and return KRB5_PREAUTH_FAILED.

ticket: 8457 (new)
target_version: 1.14-next
target_version: 1.13-next

9 years agoFix error handling in k5_expand_path() 484/head
Greg Hudson [Fri, 15 Jul 2016 22:51:31 +0000 (18:51 -0400)] 
Fix error handling in k5_expand_path()

In k5_expand_path_tokens_extra(), don't throw away non-zero return
statuses in the cleanup handler.  Reported by Will Fiveash.

ticket: 8455
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

9 years agoUpdate iprop tests for kadmind -k
Matt Rogers [Fri, 15 Jul 2016 14:32:51 +0000 (10:32 -0400)] 
Update iprop tests for kadmind -k

Test the use of the -k kprop-port option.

ticket: 8456

9 years agoAdd the kprop-port option to kadmind
Matt Rogers [Fri, 15 Jul 2016 14:17:45 +0000 (10:17 -0400)] 
Add the kprop-port option to kadmind

The -k option for kadmind sets the port number that kprop is spawned
with during an iprop full resync.  Fall back to checking the
KPROP_PORT environment variable if the option is not set.

ticket: 8456 (new)

9 years agoAllow user to restrict KDC to specific addresses
Sarah Day [Wed, 23 Dec 2015 20:01:44 +0000 (15:01 -0500)] 
Allow user to restrict KDC to specific addresses

krb5kdc has always only supported binding to the wildcard addresses.
Add two configuration options to allow specifying the address/port
that krb5kdc listens on for UDP and TCP connections.

[ghudson@mit.edu: edited documentation; preserved kdc_ports = ""
behavior; made kdc_ports and kdc_tcp_ports continue to work in
kdcdefaults section]

ticket: 1093

9 years agoAllow user to restrict kadmind bind addresses
Sarah Day [Wed, 23 Dec 2015 17:11:34 +0000 (12:11 -0500)] 
Allow user to restrict kadmind bind addresses

kadmind has always only supported binding to the wildcard addresses.
Add three configuration options to allow specifying the address/port
that kadmind listens on for kpasswd, kadmin, and iprop connections.

[ghudson@mit.edu: edited documentation; minimized changes to
setup_loop(); added iprop_listen]

ticket: 1093

9 years agoAdd ability to bind addresses to the net-server
Sarah Day [Mon, 21 Dec 2015 19:07:49 +0000 (14:07 -0500)] 
Add ability to bind addresses to the net-server

The net-server.c logic can accept individual addresses to bind to
using the standard host:port string format, in a list with a comma
delimiter.

Since pktinfo support was removed, users with systems lacking
pktinfo that have multiple NICs may specify each of the local
addresses directly that kadmind or krb5kdc should listen on in
kdc.conf.

[ghudson@mit.edu: edited comments and variable names; simplified
setup_socket()]

ticket: 1093

9 years agoRemove workaround when pktinfo is unsupported
Sarah Day [Mon, 21 Mar 2016 20:35:15 +0000 (16:35 -0400)] 
Remove workaround when pktinfo is unsupported

Currently if the system doesn't support pktinfo and kadmind or
krb5kdc are binding to a UDP address, then the net server binds to
all the local addresses.  Currently most systems support pktinfo,
so the workaround isn't really required anymore.  Removing the
workaround will only affect systems that don't have pktinfo
support, have multiple NICs, and are listening on a wildcard
address.

ticket: 8348

9 years agoUpdate LDAP docs for password lockout 482/head
Greg Hudson [Thu, 7 Jul 2016 20:58:02 +0000 (16:58 -0400)] 
Update LDAP docs for password lockout

The KDC now needs write access to the LDAP KDB, unless password
lockout and tracking of the last successful authentication time are
disabled.  Update the example LDAP access control configuration in
conf_ldap.rst to reflect this, add a note that only read access is
required if lockout is disabled, and add a section to lockout.rst
calling out the need for write access.  Reported by Will Fiveash.

ticket: 8452 (new)
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

9 years agoAdd hints for -A flag to kdestroy
Matt Rogers [Tue, 26 Jan 2016 19:59:43 +0000 (14:59 -0500)] 
Add hints for -A flag to kdestroy

When using a collection ccache, a user accustomed to the FILE ccache
behavior may not be aware of all active caches, and the default
kdestroy command could make it seem like there is no active cache
left.  Print a warning to use -A after kdestroy if there are other
caches.

ticket: 8451 (new)

9 years agoFix profile_flush_to_file() state corruption 475/head
Greg Hudson [Thu, 23 Jun 2016 16:01:56 +0000 (12:01 -0400)] 
Fix profile_flush_to_file() state corruption

In write_data_to_file(), do not clear the profile data object's flags.
If the call to this function resulted from profile_flush_to_file(), we
do not want to clear the DIRTY flag, and we especially do not want to
clear the SHARED flag for a data object which is part of
g_shared_trees.  Instead, clear the DIRTY flag in
profile_flush_file_data().

Add a test case to prof_test1 to exercise the bug in unfixed code.
Also modify test1 to abandon the altered profile after flushing it to
a file, to preserve the external behavior of the script before this
fix.

ticket: 8431
target_version: 1.14-next
tags: pullup

9 years agoImprove kdb5 error when default realm is unset 479/head
Greg Hudson [Fri, 1 Jul 2016 15:10:19 +0000 (11:10 -0400)] 
Improve kdb5 error when default realm is unset

When the default realm name is unspecified, and none was set in the
krb5_context object, return KRB5_CONFIG_NODEFREALM from libkdb5
instead of the confusing KRB5_KDB_DBTYPE_NOTFOUND.  To accomplish
this, make kdb_get_library_name() return a krb5_error_code.

ticket: 8448
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

9 years agoClarify directions when a Python test fails 470/head
Greg Hudson [Tue, 21 Jun 2016 16:44:51 +0000 (12:44 -0400)] 
Clarify directions when a Python test fails

In _onexit() in k5test.py, output an absolute path to the testlog
file, and output explicit directions on re-running the script with the
-v flag.

9 years agoFix recent memory leak in locate_kdc.c 473/head
Greg Hudson [Tue, 21 Jun 2016 22:46:28 +0000 (18:46 -0400)] 
Fix recent memory leak in locate_kdc.c

Commit ce112dec844e4650b5ad174bd40f21c32aebe1d1 introduced a memory
leak in locate_srv_conf_1() by moving the free(realmstr) call to the
cleanup handler, because there was an early return after realmstr is
allocated.  Convert that early return to a goto.

9 years agoFix incorrect recv() size calculation in libkrad
Nathaniel McCallum [Tue, 21 Jun 2016 20:12:36 +0000 (16:12 -0400)] 
Fix incorrect recv() size calculation in libkrad

Before this patch libkrad would always subtract the existing buffer
length from pktlen before passing it to recv().  In the case of stream
sockets, this is incorrect since krad_packet_bytes_needed() already
performs this calculation.  Subtracting the buffer length twice could
cause integer underflow on the len parameter to recv().

ticket: 8430 (new)
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

9 years agoFix and simplify auth-indicator authdata module 472/head
Greg Hudson [Tue, 21 Jun 2016 22:29:00 +0000 (18:29 -0400)] 
Fix and simplify auth-indicator authdata module

Remove the authind_context count field.  The indicators list must be
null-terminated because it is freed with k5_free_data_ptr_list().
authind_internalize() didn't null-terminate the list, and the presence
of the count field made it appear that this wasn't a bug.  Use a
different scheme for setting *more in authind_get_attribute() to avoid
requiring an element count.

Also check more thoroughly for errors in authind_externalize() and
authind_internalize(), and remove some unnecessary pointer casts.

ticket: 8425

9 years agoFilter CAMMAC authdata by module->ad_type
Matt Rogers [Wed, 22 Jun 2016 14:29:43 +0000 (10:29 -0400)] 
Filter CAMMAC authdata by module->ad_type

Also, do not leak cammac_authdata.

[ghudson@mit.edu: also fix two sizeof() expressions]

ticket: 8425

9 years agoFix Makefile for paths containing '+' character
Dmitry Kalinkin [Fri, 17 Jun 2016 17:52:23 +0000 (13:52 -0400)] 
Fix Makefile for paths containing '+' character

include/Makefile uses a regex to perform variable substitution with '+'
as the sed delimiter.  Paths containing " are already invalid in this
approach, so it is better to use " as the delimiter instead of any
other rare symbol.

ticket: 8429 (new)

9 years agoFix argument order for kprop debug message
Matt Rogers [Mon, 20 Jun 2016 13:21:28 +0000 (09:21 -0400)] 
Fix argument order for kprop debug message

ticket: 8277

9 years agoAdd GSSAPI name attribute documentation
Matt Rogers [Fri, 13 May 2016 01:20:17 +0000 (21:20 -0400)] 
Add GSSAPI name attribute documentation

Also add a reference to the auth-indicator name attribute in
auth_indicator.rst.

[ghudson@mit.edu: edited for brevity and cross-referencing]

ticket: 8425

9 years agoShorten authdata module function table names
Matt Rogers [Fri, 13 May 2016 00:44:14 +0000 (20:44 -0400)] 
Shorten authdata module function table names

9 years agoAdd GSSAPI auth indicator name attribute tests
Matt Rogers [Fri, 13 May 2016 00:41:04 +0000 (20:41 -0400)] 
Add GSSAPI auth indicator name attribute tests

[ghudson@mit.edu: simplify test harness]

ticket: 8425

9 years agoFail on error when processing KDC-issued authdata
Matt Rogers [Fri, 13 May 2016 00:36:41 +0000 (20:36 -0400)] 
Fail on error when processing KDC-issued authdata

Have k5_get_kdc_issued_authdata() return 0 on a verification failure and
non-zero for other failures, rather than call assert().  Check the
return value when called in krb5int_authdata_verify().

ticket: 8425

9 years agoAdd auth indicator authdata module
Matt Rogers [Fri, 13 May 2016 00:06:42 +0000 (20:06 -0400)] 
Add auth indicator authdata module

This authdata module makes the 'auth-indicator' attribute available to
the GSSAPI name extension functions.  The auth indicator values are UTF8
strings imported during AP_REQ processing.

ticket: 8425

9 years agoAdd CAMMAC handling to the authdata framework
Matt Rogers [Fri, 13 May 2016 00:14:01 +0000 (20:14 -0400)] 
Add CAMMAC handling to the authdata framework

Handle CAMMAC contained authdata similarly to KDC-issued authdata, where
it is verified before passing to the import function.

[ghudson@mit.edu: fix memory leak and reduce copying in
extract_cammac()]

ticket: 8425

9 years agoAdd libkrb5 CAMMAC and auth-indicator functions
Matt Rogers [Thu, 12 May 2016 23:43:55 +0000 (19:43 -0400)] 
Add libkrb5 CAMMAC and auth-indicator functions

Add k5_unwrap_cammac_svc() and k5_authind_decode() internal functions
to libkrb5, for use by test programs and the forthcoming
auth-indicator authdata module.  Remove the unused
cammac_check_svcver() from the KDC code.  Modify tests/adata.c to use
the new functions, and add a test case to t_authdata.py for multiple
indicator values.

[ghudson@mit.edu: squash three commits; make k5_cammac_check_svcver()
a static helper]

ticket: 8425

9 years agoAdd kprop and iprop default_realm tests
Matt Rogers [Fri, 22 Apr 2016 16:23:37 +0000 (12:23 -0400)] 
Add kprop and iprop default_realm tests

Add tests to t_iprop.py and t_kprop.py that exercise cases where
default_realm and domain_realm maps differ, as well as overriding the
default realm with the -r argument.  This includes the testing of -r
with kadmind, and an update of expected ulog numbers for tests following
the addition of an incremental test.  Also refactor some common code in
t_kprop.py to use in the new tests.

ticket: 8277

9 years agoFix kprop and kpropd realm handling
Matt Rogers [Thu, 25 Feb 2016 15:38:07 +0000 (10:38 -0500)] 
Fix kprop and kpropd realm handling

Add the sn2princ_with_realm() helper function (currently duplicated in
kprop.c and kpropd.c) to simplify principal realm substitution.  Use
sn2princ_with_realm() in kprop.c and kpropd.c in place of
krb5_sname_to_principal(), with the default realm if -r is not provided.
If a realm is given to kpropd, set it as the default realm on the
kpropd_context, allowing a later call of ulog_replay() to open the
correct database.

Remove referral realm code in kprop.c and kpropd.c.  Pass the realm
(default or provided) to the kdb5_util and kprop commands called by
kadmind.

ticket: 8277

9 years agoFix use_master handling with KDC hook reply 465/head
Greg Hudson [Thu, 9 Jun 2016 17:23:48 +0000 (13:23 -0400)] 
Fix use_master handling with KDC hook reply

A post-receive KDC hook may synthesize a reply if k5_sendto() returns
an error.  If this happens, krb5_sendto_kdc() must not use server_used
to check if the reply came from a master KDC, as it does not have a
valid value.  Preemptively set *use_master to 1 in this case to bypass
the check.

ticket: 8386

9 years agoFix kadmin min_life check with nonexistent policy 464/head
Greg Hudson [Wed, 8 Jun 2016 04:00:55 +0000 (00:00 -0400)] 
Fix kadmin min_life check with nonexistent policy

In kadmind, self-service key changes require a check against the
policy's min_life field.  If the policy does not exist, this check
should succeed according to the semantics introduced by ticket #7385.
Fix check_min_life() to return 0 if kadm5_get_policy() returns
KADM5_UNK_POLICY.  Reported by John Devitofranceschi.

ticket: 8427
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

9 years agoFix test_check_allowed_to_delegate() leak for real 462/head
Greg Hudson [Thu, 2 Jun 2016 22:21:41 +0000 (18:21 -0400)] 
Fix test_check_allowed_to_delegate() leak for real

Remove the conditional return from so that sprinc and tprinc are
always freed.  Reported by Will Fiveash.

ticket: 8426

9 years agoFix bugs in recent locate_kdc.c change 461/head
Greg Hudson [Thu, 2 Jun 2016 15:58:35 +0000 (11:58 -0400)] 
Fix bugs in recent locate_kdc.c change

The most recent change to locate_srv_conf_1() introduced a possible
double-free bug (detected by Coverity), and also broke MS-KKDCP
support.  Separate the three uses of the "host" variable: the C string
copy of the realm name (now "realmstr"), the pointer to the hostname
or hostname:port specification in the profile values array (now
"hostspec"), and the hostname result of k5_parse_host_string() (still
"host").  Pass the correct pointer to k5_parse_host_string() if the
profile value is a URI.

9 years agoFix leak in test_check_allowed_to_delegate() 460/head
Greg Hudson [Thu, 2 Jun 2016 04:51:11 +0000 (00:51 -0400)] 
Fix leak in test_check_allowed_to_delegate()

sprinc and tprinc must be freed.  Reported by Will Fiveash.

ticket: 8426

9 years agoUse k5_parse_host_string() in locate_kdc.c 459/head
Sarah Day [Tue, 19 Jan 2016 14:47:10 +0000 (09:47 -0500)] 
Use k5_parse_host_string() in locate_kdc.c

[ghudson@mit.edu: made locate_srv_conf_1() error out on port string
with no hostname; split into two commits]

9 years agoAdd k5_parse_host_string()
Sarah Day [Tue, 19 Jan 2016 14:47:10 +0000 (09:47 -0500)] 
Add k5_parse_host_string()

Add a helper function k5_parse_host_string() containing the
hostname-and-port parsing logic currently inlined into
locate_srv_conf_1().  The new function will also accept a port number
without hostname, for parsing listener addresses.

[ghudson@mit.edu: simplified parsing code and better handle edge
cases; split into two commits]

9 years agoFix unlikely pointer error in get_in_tkt.c 450/head
Greg Hudson [Mon, 9 May 2016 17:45:06 +0000 (13:45 -0400)] 
Fix unlikely pointer error in get_in_tkt.c

In add_padata(), reset the caller's pointer and ensure the list is
terminated as soon as realloc() succeeds; otherwise, the old pointer
could be left behind if a later allocation fails.

ticket: 8413 (new)
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

9 years agoFix typo in doc/user/tkt_mgmt.rst 458/head
Tom Yu [Tue, 31 May 2016 19:01:21 +0000 (15:01 -0400)] 
Fix typo in doc/user/tkt_mgmt.rst

ticket: 8417
tags: pullup
target_version: 1.14-next
target_version: 1.13-next

9 years agoRelax t_sn2princ.py reverse resolution test 457/head
Tom Yu [Fri, 27 May 2016 19:19:43 +0000 (15:19 -0400)] 
Relax t_sn2princ.py reverse resolution test

Relax t_sn2princ.py check of the reverse resolution of the test
hostname.  The new requirement is that it be different from the
forward resolved hostname.  (There is also an existing implicit
requirement that it be in the mit.edu domain.)  This makes
t_sn2princ.py more robust against changes in the reverse resolution of
the test hostname.

ticket: 8422 (new)
tags: pullup
target_version: 1.14-next
target_version: 1.13-next

9 years agoFix memory leak in LDAP rename 454/head
Greg Hudson [Thu, 26 May 2016 15:18:24 +0000 (11:18 -0400)] 
Fix memory leak in LDAP rename

krb5_ldap_rename_principal() must free bersecretkey.

ticket: 8065

9 years agoAdd SPNEGO special case for NTLMSSP+MechListMIC
Simo Sorce [Wed, 30 Mar 2016 17:00:19 +0000 (13:00 -0400)] 
Add SPNEGO special case for NTLMSSP+MechListMIC

MS-SPNG section 3.3.5.1 documents an odd behavior the SPNEGO layer
needs to implement specifically for the NTLMSSP mechanism.  This is
required for compatibility with Windows services.

ticket: 8423 (new)

9 years agoAvoid setting AS key when OTP preauth fails
Nathaniel McCallum [Thu, 26 May 2016 20:54:29 +0000 (16:54 -0400)] 
Avoid setting AS key when OTP preauth fails

In otp_client_process(), call cb->set_as_key() later in the function
after the OTP request has been created.  The previous position of this
call caused the AS key to be replaced even when later code in the
function failed, preventing other preauth mechanisms from retrieving
the correct AS key.

ticket: 8421 (new)
target_version: 1.14-new
target_version: 1.13-new
tags: pullup

9 years agoClean t_sname_match in lib/krb5/krb 455/head
Tom Yu [Thu, 26 May 2016 20:10:49 +0000 (16:10 -0400)] 
Clean t_sname_match in lib/krb5/krb

Add a missing "$" to t_sname_match$(EXEEXT) in the clean rule in
lib/krb5/krb/Makefile.in.

ticket: 8415

9 years agoDo not indicate deprecated GSS mechanisms
Robbie Harwood [Fri, 20 May 2016 00:31:38 +0000 (20:31 -0400)] 
Do not indicate deprecated GSS mechanisms

The mechanisms themeselves will continue to work if requested, but will
not be included in the gss_indicate_mech() list.  This works around a
bug in some legacy applications that cannot cope with deprecated mechs
being returned.

ticket: 8419 (new)

9 years agoAdd tests for krb5_sname_match() 452/head
Greg Hudson [Thu, 12 May 2016 20:05:46 +0000 (16:05 -0400)] 
Add tests for krb5_sname_match()

ticket: 8415

9 years agoCheck princ length in krb5_sname_match()
Greg Hudson [Thu, 12 May 2016 20:03:06 +0000 (16:03 -0400)] 
Check princ length in krb5_sname_match()

krb5_sname_match() can read past the end of princ's component array in
some circumstances (typically when a keytab contains both "x" and
"x/y" principals).  Add a length check.  Reported by Spencer Jackson.

ticket: 8415
target_version: 1.14-next
target_version: 1.13-next
tags: pullup

9 years agoSimplify principal and policy manipulation code 453/head
Greg Hudson [Tue, 17 May 2016 23:28:25 +0000 (19:28 -0400)] 
Simplify principal and policy manipulation code

Now that principal entry and policy fields are allocated using the
malloc visible to the krb5 libraries, we don't need to use
krb5_db_alloc() and krb5_db_free() when modifying them within our
code.

ticket: 8414

9 years agoUse library malloc for principal, policy entries
Greg Hudson [Tue, 17 May 2016 02:54:06 +0000 (22:54 -0400)] 
Use library malloc for principal, policy entries

Alter the KDB module contract to require that KDB modules use an
allocator compatible with the malloc() seen by libkrb5 and libkdb5.
Change krb5_db_alloc() and krb5_db_free() to provide access to this
allocator.  Remove free_principal, free_policy, alloc, and free from
the KDB interface and from all in-tree KDB modules.

ticket: 8414 (new)

9 years agoImplement principal renaming in LDAP
Sarah Day [Fri, 29 Apr 2016 14:26:31 +0000 (10:26 -0400)] 
Implement principal renaming in LDAP

The generic method of renaming principals (by adding a new entry and
deleting the old one) does not work in LDAP.  Add an LDAP
implementation of rename that properly renames the DN and attributes
when necessary.

[ghudson@mit.edu: minor naming changes and code simplifications]

ticket: 8065

9 years agoAdd new DAL function for renaming principals
Sarah Day [Thu, 31 Mar 2016 21:49:55 +0000 (17:49 -0400)] 
Add new DAL function for renaming principals

Previously libkadm5srv renamed principals by getting the principal
entry, renaming the entry, putting it in the DB, then deleting the old
one.  This does not work in certain KDB modules such as LDAP.  A new
DAL function is necessary to support all KDB modules.  Add a new DAL
function to support custom renames in all KDB modules, with a default
implementation that performs the previous functionality of adding and
deleting the principal entry.

NOTE: if the default rename function isn't used and iprop logging is
enabled, iprop would fail since it doesn't formally support renaming.
In that case, the call to krb5_db_rename_principal() will fail with
the code KRB5_PLUGIN_OP_NOTSUPP.

ticket: 8065

9 years agoAdd libkdb function to specialize principal's salt
Sarah Day [Mon, 2 May 2016 21:06:35 +0000 (17:06 -0400)] 
Add libkdb function to specialize principal's salt

Add a function krb5_dbe_specialize_salt() to libkdb5 which transforms
a principal entry's salt to KRB5_KDB_SALTTYPE_SPECIAL.

ticket: 8418 (new)

9 years agoLink correct VS2015 C libraries for debug builds 449/head
Greg Hudson [Sun, 8 May 2016 15:11:22 +0000 (11:11 -0400)] 
Link correct VS2015 C libraries for debug builds

When building with VS2015 and NODEBUG is not set, link with the
debugging versions of ucrt.lib and vcruntime.lib.  Based on work by
Chris Kingsley.

ticket: 8412 (new)

9 years agoWork around python-ldap bug in kerberos.ldif
Shawn M. Emery [Wed, 27 Apr 2016 05:38:18 +0000 (23:38 -0600)] 
Work around python-ldap bug in kerberos.ldif

Current python-ldap does not correctly tokenize LDIF text if there is
no space before a close parenthesis.

[ghudson@mit.edu: rewrote commit message]

ticket: 8405 (new)

9 years agoRemove non-DFSG documentation 448/head
Tom Yu [Thu, 5 May 2016 00:34:39 +0000 (20:34 -0400)] 
Remove non-DFSG documentation

Also remove obsolete kadmin and kpasswd documentation.

ticket: 8404 (new)

9 years agoFix cstyle-file.py when emacs is not installed 445/head
Greg Hudson [Mon, 2 May 2016 16:51:03 +0000 (12:51 -0400)] 
Fix cstyle-file.py when emacs is not installed

emacs_reindent() is intended to fail gracefully when emacs is not
installed, but instead subprocess.call() throws an OSError.  Check for
this error and return normally.