]> git.ipfire.org Git - thirdparty/krb5.git/log
thirdparty/krb5.git
10 years agoBump DAL major version for iterate change 249/head
Greg Hudson [Wed, 4 Feb 2015 18:03:20 +0000 (13:03 -0500)] 
Bump DAL major version for iterate change

Commit ab009b8568d9b64b7e992ecdb98114e895b4a7ff for issue #7977
changed the signature of krb5_db_iterate() and properly bumped
KRB5_KDB_API_VERSION from 7 to 8.  It also changed the signature of
the DAL iterate() function, but did not bump
KRB5_KDB_DAL_MAJOR_VERSION.  Bump that version from 4 to 5 now.

ticket: 8066 (new)
target_version: 1.13.1
tags: pullup

10 years agoAdd test program for gss_process_context_token
Greg Hudson [Wed, 5 Nov 2014 16:58:52 +0000 (11:58 -0500)] 
Add test program for gss_process_context_token

Add a new test program t_pcontok to exercise
gss_process_context_token, and run it from t_gssapi.py.

ticket: 8055

10 years agoFix gssrpc data leakage [CVE-2014-9423]
Greg Hudson [Mon, 29 Dec 2014 18:17:56 +0000 (13:17 -0500)] 
Fix gssrpc data leakage [CVE-2014-9423]

[MITKRB5-SA-2015-001] In svcauth_gss_accept_sec_context(), do not copy
bytes from the union context into the handle field we send to the
client.  We do not use this handle field, so just supply a fixed
string of "xxxx".

In gss_union_ctx_id_struct, remove the unused "interposer" field which
was causing part of the union context to remain uninitialized.

ticket: 8058 (new)
target_version: 1.13.1
tags: pullup

10 years agoFix kadmind server validation [CVE-2014-9422]
Greg Hudson [Mon, 29 Dec 2014 18:27:42 +0000 (13:27 -0500)] 
Fix kadmind server validation [CVE-2014-9422]

[MITKRB5-SA-2015-001] In kadmind's check_rpcsec_auth(), use
data_eq_string() instead of strncmp() to check components of the
server principal, so that we don't erroneously match left substrings
of "kadmin", "history", or the realm.

ticket: 8057 (new)
target_version: 1.13.1
tags: pullup

10 years agoFix kadm5/gssrpc XDR double free [CVE-2014-9421]
Greg Hudson [Sat, 27 Dec 2014 19:16:13 +0000 (14:16 -0500)] 
Fix kadm5/gssrpc XDR double free [CVE-2014-9421]

[MITKRB5-SA-2015-001] In auth_gssapi_unwrap_data(), do not free
partial deserialization results upon failure to deserialize.  This
responsibility belongs to the callers, svctcp_getargs() and
svcudp_getargs(); doing it in the unwrap function results in freeing
the results twice.

In xdr_krb5_tl_data() and xdr_krb5_principal(), null out the pointers
we are freeing, as other XDR functions such as xdr_bytes() and
xdr_string().

ticket: 8056 (new)
target_version: 1.13.1
tags: pullup

10 years agoFix gss_process_context_token() [CVE-2014-5352]
Greg Hudson [Wed, 5 Nov 2014 16:58:04 +0000 (11:58 -0500)] 
Fix gss_process_context_token() [CVE-2014-5352]

[MITKRB5-SA-2015-001] The krb5 gss_process_context_token() should not
actually delete the context; that leaves the caller with a dangling
pointer and no way to know that it is invalid.  Instead, mark the
context as terminated, and check for terminated contexts in the GSS
functions which expect established contexts.  Also add checks in
export_sec_context and pseudo_random, and adjust t_prf.c for the
pseudo_random check.

ticket: 8055 (new)
target_version: 1.13.1
tags: pullup

10 years agoUpdate copyright years
Tom Yu [Tue, 3 Feb 2015 19:25:09 +0000 (14:25 -0500)] 
Update copyright years

10 years agoRemove starttime hack in EncTicketPart decoder 247/head
Greg Hudson [Mon, 26 Jan 2015 23:38:16 +0000 (18:38 -0500)] 
Remove starttime hack in EncTicketPart decoder

The EncTicketPart decoder sets starttime to authtime if it wasn't
included in the ASN.1 value.  This is problematic for upcoming CAMMAC
work, as we will need to re-encode a received EncTicketPart to check
the KDC verifier.  Remove that behavior and just use opt_kerberos_time
for the starttime field.  Adjust krb5_decode_test.c to match the new
decoder behavior.

Similarly, remove the process_tgs_req() code which sets starttime in
the header ticket if it isn't set.  Add a comment explaining the
unrelated code adjacent to it.

check_tgs_times() used the ticket starttime without checking if it was
present.  Add a fallback to times->authtime, and narrow the function
contract to make the implementation more concise.

There is a similar hack in the EncKDCRepPart decoder; leave that alone
for now.

10 years agoRemove special case for multi-hop SAM-2
Greg Hudson [Tue, 27 Jan 2015 03:34:49 +0000 (22:34 -0500)] 
Remove special case for multi-hop SAM-2

Revert f20a77e879d203cdcb1bdbf9dc8e604a5187c88f (issue #7571).  The
special case is no longer needed, as we are now resetting the tried
list for each KDC_ERR_PREAUTH_REQUIRED message.

10 years agoSupport KDC_ERR_MORE_PREAUTH_DATA_REQUIRED
Nathaniel McCallum [Sun, 25 Jan 2015 21:53:49 +0000 (16:53 -0500)] 
Support KDC_ERR_MORE_PREAUTH_DATA_REQUIRED

Add support for multi-hop preauth mechs.

In the KDC, allow kdcpreauth modules to return
KDC_ERR_MORE_PREAUTH_DATA_REQUIRED as defined in RFC 6113.

In libkrb5, treat this code like KDC_ERR_PREAUTH_REQUIRED.  clpreauth
modules can use the modreq parameter to distinguish between the first
and subsequent KDC messages.  We assume that the error padata will
include an element of the preauth mech's type, or at least of a type
recognized by the clpreauth module.

Also reset the list of previously attempted preauth types for both
kinds of errors.  That list is really only appropriate for retrying
after a failed preauth attempt, which we don't currently do.  Add an
intermediate variable for the reply code to avoid a long conditional
expression.

[ghudson@mit.edu: adjust get_in_tkt.c logic to avoid needing a helper
function; clarify commit message]

ticket: 8063 (new)

10 years agoFix const correctness on krb5_c_fx_cf2_simple()
Nathaniel McCallum [Mon, 26 Jan 2015 18:59:54 +0000 (13:59 -0500)] 
Fix const correctness on krb5_c_fx_cf2_simple()

libk5crypto functions generally use "const krb5_keyblock *" for input
keyblocks.  Do this in krb5_c_fx_cf2_simple() for caller convenience.

[ghudson@mit.edu: expanded commit message]

ticket: 8062 (new)

10 years agoAdd test for kinit -C WRONG_REALM response 243/head
Greg Hudson [Fri, 23 Jan 2015 17:52:31 +0000 (12:52 -0500)] 
Add test for kinit -C WRONG_REALM response

ticket: 8060

10 years agoDo not loop on principal unknown errors
Simo Sorce [Tue, 20 Jan 2015 18:48:34 +0000 (13:48 -0500)] 
Do not loop on principal unknown errors

If the canonicalize flag is set, the MIT KDC always return the client
principal when KRB5_KDC_ERR_C_PRICIPAL_UNKNOWN is returned.

Check that this is really a referral by testing that the returned
client realm differs from the requested one.

[ghudson@mit.edu: simplified and narrowed is_referral() contract.
Note that a WRONG_REALM response with e-data or FAST error padata
could now be passed through k5_preauth_tryagain() if it has an empty
crealm or a crealm equal to the requested client realm.  Such a
response is unexpected in practice and there is nothing dangerous
about handling it this way.]

ticket: 8060
target_version: 1.13.1
tags: pullup

10 years agoClean up PKINIT tests 240/head
Greg Hudson [Sun, 4 Jan 2015 22:30:45 +0000 (17:30 -0500)] 
Clean up PKINIT tests

Use realm.user_princ where appropriate.  Re-wrap some overwrapped
function calls.  De-indent the PKCS11 tests using skip_rest.

10 years agoNote skipped tests
Greg Hudson [Sun, 4 Jan 2015 01:14:31 +0000 (20:14 -0500)] 
Note skipped tests

In Python test scripts, use skipped() or skip_rest() as appropriate
when skipping tests.  For Makefile-conditionalized tests, append to
$(SKIPTESTS) when skipping.

10 years agoAdd framework for tracking skipped tests
Greg Hudson [Sun, 4 Jan 2015 01:09:11 +0000 (20:09 -0500)] 
Add framework for tracking skipped tests

In k5test.py, add functions skipped() and skip_rest() which output a
message about skipping tests (even without the verbose flag) and also
add a note to the "skiptests" file at the top of the build tree.  In
the top-level make check, empty out skiptests at the beginning and
display it at the end.  Add a subsitution for the skiptests file to
pre.in so that other makefiles can append to it.

10 years agoExport function gss_add_cred_with_password
Robbie Harwood (frozencemetery) [Tue, 20 Jan 2015 20:43:40 +0000 (15:43 -0500)] 
Export function gss_add_cred_with_password

This function is already present in gssapi_ext.h, but without
exporting it, a link error will be produced every time it is used.

ticket: 8061 (new)
target_version: 1.13.1
tags: pullup

10 years agoFix bugs in previous cc_file.c changes 238/head
Greg Hudson [Tue, 16 Dec 2014 17:57:56 +0000 (12:57 -0500)] 
Fix bugs in previous cc_file.c changes

In fcc_destroy and krb5int_fcc_new_unique, call set_errmsg_filename
before deleting the cache handle, or else the reference to
data->filename is a use after free.

In set_errmsg_filename, do nothing if the code is 0, as we don't have
an error to annotate.

ticket: 8052

10 years agoCheck for null *iter_p in profile_iterator() 242/head
Greg Hudson [Wed, 14 Jan 2015 18:10:39 +0000 (13:10 -0500)] 
Check for null *iter_p in profile_iterator()

In profile_iterator(), return PROF_MAGIC_ITERATOR if *iter_p is NULL,
instead of dereferencing a null pointer, as we did prior to 1.10.
Correct calling code will not trigger this case, but incorrect code
has been reported in the field.

ticket: 8059 (new)
target_version: 1.13.1
tags: pullup

10 years agoFix OTP tests with pyrad 2.x 239/head
Greg Hudson [Mon, 22 Dec 2014 23:37:36 +0000 (18:37 -0500)] 
Fix OTP tests with pyrad 2.x

Declare User-Password as having type "octets" instead of "string" or
pyrad 2.x will throw a decoding error when retrieving it.

ticket: 8053 (new)
target_version: 1.13.1
tags: pullup

10 years agoInclude file ccache name in error messages
Nicolas Williams [Thu, 30 Oct 2014 00:42:49 +0000 (19:42 -0500)] 
Include file ccache name in error messages

When a FILE ccache method returns an error, append the filename to the
standard message for the code.  Remove code to set extended messages
in helper functions as they would just be overwritten.

Also change the interpretation of errno values.  Treat ENAMETOOLONG as
KRB5_FCC_NOFILE instead of KRB5_FCC_INTERNAL, since it has an external
cause and a name that long can't be opened by normal means.  Treat
EROFS as KRB5_FCC_PERM.  Treat ENOTDIR and ELOOP as KRB5_FCC_NOFILE
instead of KRB5_FCC_PERM as both errors imply that the full pathname
doesn't exist.  Treat EBUSY and ETXTBSY as KRB5_CC_IO instead of
KRB5_FCC_PERM as they indicate a conflict rather than a permission
issue.

[ghudson@mit.edu: renamed set_error to set_errmsg_filename; removed
now-inoperative code to set extended messages in helper functions;
trimmed changes to interpret_errno; clarified and shortened commit
message]

ticket: 8052 (new)

10 years agoUse OFD locks where available 216/head
Greg Hudson [Tue, 7 Oct 2014 16:12:11 +0000 (12:12 -0400)] 
Use OFD locks where available

Linux 3.15 has added OFD locks, which contend with POSIX file locks
but are owned by the open file description instead of the process.
Use these in krb5_lock_file where available, for safer concurrency
behavior.

ticket: 8023 (new)

10 years agoCorrect spelling
Ben Kaduk [Mon, 8 Dec 2014 21:43:36 +0000 (16:43 -0500)] 
Correct spelling

Remove extra 'i' from "create_standalone_prinicipal".  While here,
pick a slightly shorter name for the variable.

10 years agoAdd helper for freeing arrays of berval pointers
Ben Kaduk [Sat, 6 Dec 2014 02:18:38 +0000 (21:18 -0500)] 
Add helper for freeing arrays of berval pointers

This eliminates a potential leak of the bv_val members from
krb5_encode_krbsecretkey().

10 years agoRemove some dead code
Ben Kaduk [Wed, 19 Nov 2014 17:09:55 +0000 (12:09 -0500)] 
Remove some dead code

The secretkey variable is initialized to NULL and compared against
NULL, but never actually set to anything after initialization.

Remove the variable and all code that would have executed if it
was non-NULL.

10 years agoRegression tests for keyless principals
Ben Kaduk [Fri, 21 Nov 2014 19:00:20 +0000 (14:00 -0500)] 
Regression tests for keyless principals

Confirm that kadmind does not crash when creating/modifying a principal
to have no keys, and confirm that no keys are present after a
purgekeys -all.

10 years agoSupport keyless principals in LDAP [CVE-2014-5354]
Ben Kaduk [Wed, 19 Nov 2014 17:04:46 +0000 (12:04 -0500)] 
Support keyless principals in LDAP [CVE-2014-5354]

Operations like "kadmin -q 'addprinc -nokey foo'" or
"kadmin -q 'purgekeys -all foo'" result in principal entries with
no keys present, so krb5_encode_krbsecretkey() would just return
NULL, which then got unconditionally dereferenced in
krb5_add_ber_mem_ldap_mod().

Apply some fixes to krb5_encode_krbsecretkey() to handle zero-key
principals better, correct the test for an allocation failure, and
slightly restructure the cleanup handler to be shorter and more
appropriate for the usage.  Once it no longer short-circuits when
n_key_data is zero, it will produce an array of length two with both
entries NULL, which is treated as an empty list by the LDAP library,
the correct behavior for a keyless principal.

However, attributes with empty values are only handled by the LDAP
library for Modify operations, not Add operations (which only get
a sequence of Attribute, with no operation field).  Therefore, only
add an empty krbprincipalkey to the modlist when we will be performing a
Modify, and not when we will be performing an Add, which is conditional
on the (misspelled) create_standalone_prinicipal boolean.

CVE-2014-5354:

In MIT krb5, when kadmind is configured to use LDAP for the KDC
database, an authenticated remote attacker can cause a NULL
dereference by inserting into the database a principal entry which
contains no long-term keys.

In order for the LDAP KDC backend to translate a principal entry
from the database abstraction layer into the form expected by the
LDAP schema, the principal's keys are encoded into a
NULL-terminated array of length-value entries to be stored in the
LDAP database.  However, the subroutine which produced this array
did not correctly handle the case where no keys were present,
returning NULL instead of an empty array, and the array was
unconditionally dereferenced while adding to the list of LDAP
operations to perform.

Versions of MIT krb5 prior to 1.12 did not expose a way for
principal entries to have no long-term key material, and
therefore are not vulnerable.

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

ticket: 8041 (new)
tags: pullup
target_version: 1.13.1
subject: kadmind with ldap backend crashes when putting keyless entries

10 years agoAdd tests for LDAP ticket/policy name misuse
Greg Hudson [Fri, 5 Dec 2014 19:02:04 +0000 (14:02 -0500)] 
Add tests for LDAP ticket/policy name misuse

ticket: 8051

10 years agoFix LDAP misused policy name crash [CVE-2014-5353]
Greg Hudson [Fri, 5 Dec 2014 19:01:39 +0000 (14:01 -0500)] 
Fix LDAP misused policy name crash [CVE-2014-5353]

In krb5_ldap_get_password_policy_from_dn, if LDAP_SEARCH returns
successfully with no results, return KRB5_KDB_NOENTRY instead of
returning success with a zeroed-out policy object.  This fixes a null
dereference when an admin attempts to use an LDAP ticket policy name
as a password policy name.

CVE-2014-5353:

In MIT krb5, when kadmind is configured to use LDAP for the KDC
database, an authenticated remote attacker can cause a NULL dereference
by attempting to use a named ticket policy object as a password policy
for a principal.  The attacker needs to be authenticated as a user who
has the elevated privilege for setting password policy by adding or
modifying principals.

Queries to LDAP scoped to the krbPwdPolicy object class will correctly
not return entries of other classes, such as ticket policy objects, but
may return success with no returned elements if an object with the
requested DN exists in a different object class.  In this case, the
routine to retrieve a password policy returned success with a password
policy object that consisted entirely of zeroed memory.  In particular,
accesses to the policy name will dereference a NULL pointer.  KDC
operation does not access the policy name field, but most kadmin
operations involving the principal with incorrect password policy
will trigger the crash.

Thanks to Patrik Kis for reporting this problem.

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

[kaduk@mit.edu: CVE description and CVSS score]

ticket: 8051 (new)
target_version: 1.13.1
tags: pullup

10 years agoFix LDAP tests when sasl.h not found 237/head
Greg Hudson [Mon, 8 Dec 2014 20:30:25 +0000 (15:30 -0500)] 
Fix LDAP tests when sasl.h not found

Do not try to run the SASL EXTERNAL auth test if we could not define a
useful interact function.  With current libraries the interact
function is asked for an authorization name, and the bind fails if it
gets an unsuccessful result or if no interaction function is defined.

ticket: 8049 (new)
target_version: 1.13.1
tags: pullup

10 years agoTest err_fmt
Nicolas Williams [Tue, 11 Nov 2014 02:43:12 +0000 (20:43 -0600)] 
Test err_fmt

[ghudson@mit.edu: move tests to new file; stop messing with
KRB5CCNAME; use K5Realm.special_env instead of multiple K5Realm
objects]

ticket: 8047

10 years agoAdd err_fmt profile parameter
Nicolas Williams [Wed, 12 Nov 2014 21:50:53 +0000 (15:50 -0600)] 
Add err_fmt profile parameter

Support the err_fmt relation in [libdefaults] which allows custom
error message formatting.

[ghudson@mit.edu: maintain alphabetical order in documentation and
reword docs; simplify err_fmt_fmt; expand commit message]

ticket: 8047 (new)

10 years agoUse new error message wrapping APIs
Nicolas Williams [Wed, 12 Nov 2014 21:49:37 +0000 (15:49 -0600)] 
Use new error message wrapping APIs

Define internal names k5_prendmsg and k5_wrapmsg and use them where we
amend error messages.  This slightly changes the error message when we
fail to construct FAST AP-REQ armor, decrypt a FAST reply, or store
credentials in a gic_opts output ccache.  Adjust the test suite for
the latter of those changes.

[ghudson@mit.edu: define and use internal names for brevity; pull in
test fix from later commit; expand commit message; fix redundant
separators in LDAP messages]

ticket: 8046

10 years agoAdd new error message wrapping APIs
Nicolas Williams [Wed, 12 Nov 2014 21:47:53 +0000 (15:47 -0600)] 
Add new error message wrapping APIs

Add four new public APIs for wrapping error messages:
krb5_prepend_error_message, krb5_vprepend_error_message,
krb5_wrap_error_message, and krb5_vwrap_error_message.  The first two
functions are from Heimdal and allow a prefix to be added to the
existing message for a code.  The latter two functions also allow the
code to be changed.

[ghudson@mit.edu: rename krb5_prepend_error_message2 to
krb5_wrap_error_message; clarify doxygen comments and put them in the
proper form; implement krb5_prepend_error_message in terms of
krb5_wrap_error_message; fix leak and null context handling in
krb5_wrap_error_message; rewrite commit message]

ticket: 8046 (new)

10 years agoRemove ksu -D flag documentation
Remi Ferrand [Sat, 15 Nov 2014 10:40:11 +0000 (11:40 +0100)] 
Remove ksu -D flag documentation

ksu -D does not work in the default build, so we should not document
it.  Remove any mention of it from the usage message and from ksu.rst.

[ghudson@mit.edu: edited commit message; omit change to generated man
page]

ticket: 8048 (new)

10 years agoDon't fdopen() in append mode in cc_file.c 236/head
Ben Kaduk [Mon, 24 Nov 2014 23:23:32 +0000 (18:23 -0500)] 
Don't fdopen() in append mode in cc_file.c

Implementations of fdopen() are inconsistent about the state of
the file offset after fdopen(., "a+") -- some position the stream
at the end of the file immediately (e.g., Solaris), for both reading
and writing, but others let reads occur from the beginning of the
file (e.g., glibc).

As it turns out, we only ever write to the file descriptor, not
through stdio, so opening the file with O_APPEND and using fdopen()
with "r+b" should give us sufficient append semantics, while
more portably letting the stream read from the beginning of the file.

This fixes the test suite on Solaris, a regression introduced
by commit 6979ead5e5c24ca0ec3569eb4bef48c2e5d8a726.

ticket: 8026

10 years agoAdd tests for duplicate detection 234/head
Ben Kaduk [Thu, 20 Nov 2014 21:41:13 +0000 (16:41 -0500)] 
Add tests for duplicate detection

There's not an easy way to test for infinite loops other than
making the test suite hang, unfortunately.

10 years agoAvoid infinite loop on duplicate keysalts
Ben Kaduk [Thu, 20 Nov 2014 20:44:04 +0000 (15:44 -0500)] 
Avoid infinite loop on duplicate keysalts

When duplicate suppression was requested, we would enter an
infinite loop upon encountering a duplicate entry, a bug
introduced in commit 0918990bf1d8560d74473fc0e41d08d433da1a15
and thus present in release 1.13.

Rework the conditional to avoid the loop, at the expense of
additional indentation for some of the code.

Ticket: 8038
tags: pullup
target_version: 1.13.1

10 years agoUpdate example enctypes in kdc_conf.rst 232/head
Tom Yu [Wed, 5 Nov 2014 20:57:51 +0000 (15:57 -0500)] 
Update example enctypes in kdc_conf.rst

Use modern enctypes for values of master_key_type and
supported_enctypes in the example kdc.conf in kdc_conf.rst.

ticket: 8035 (new)
target_version: 1.13.1
tags: pullup

10 years agoRemove des3 and arcfour from supported_enctypes
Tom Yu [Wed, 5 Nov 2014 19:10:35 +0000 (14:10 -0500)] 
Remove des3 and arcfour from supported_enctypes

The des3 and arcfour (rc4) enctypes use weak string-to-key algorithms,
and should not be used for producing password-derived keys.

ticket: 7903

10 years agoFix minor cleanup issue in file ccache
Greg Hudson [Tue, 4 Nov 2014 15:13:11 +0000 (10:13 -0500)] 
Fix minor cleanup issue in file ccache

If we fail to open the cache file in fcc_initialize, we could wind up
calling close(-1) which is harmless but incorrect.  Avoid this by
initializing fd and conditionalizing its cleanup.

ticket: 8026

10 years agoFix input race condition in t_skew.py
Greg Hudson [Wed, 5 Nov 2014 19:12:35 +0000 (14:12 -0500)] 
Fix input race condition in t_skew.py

In two of the kinit tests run by t_skew.py, we expect kinit to exit
before reading the password.  If we supply a password input for those
commands, we can fail with a broken pipe exception if the master
process tries to write the password after the slave process exits.

Also correctly check the output of the last kinit invocation.

ticket: 8034 (new)
target_version: 1.13.1
tags: pullup

10 years agoFix spurious gcc warning in cc_file.c
Greg Hudson [Mon, 3 Nov 2014 22:27:00 +0000 (17:27 -0500)] 
Fix spurious gcc warning in cc_file.c

gcc 4.6.3 (present in Ubuntu 12.04) is smart enough to look at
get_size and see that it does not always assign to *size_out, but not
smart enough to figure out that it always assigns to *size_out when it
returns 0.  As a result, it outputs two warnings which we treat as
errors.  Add an initial assignment to *size_out at the beginning of
get_size to work around this.

ticket: 8026

10 years agoUse stdio reads, O_APPEND writes in FILE ccache 218/head
Greg Hudson [Sun, 12 Oct 2014 22:46:17 +0000 (18:46 -0400)] 
Use stdio reads, O_APPEND writes in FILE ccache

Remove open file state from the cache handle, use stdio for reading,
use single O_APPEND writes for writing, and use O_CLOEXEC when
opening.  Keep the file handle open during iteration.  These changes
simplify the code, fix some concurrency issues, and reduce the
dependency on POSIX file locks.  We still acquire file locks for
compatibility with older code, and in case O_APPEND writes aren't
concurrency-atomic.

Helper functions change as follows:
* open_cache_file yields a stdio handle, and only opens and locks.
* close_cache_file takes a stdio handle.
* read_header (new) reads the file header and yields a version.
* invalidate_cache and fcc_lseek are no longer needed.
* get_size, read_bytes, and load_bytes operate on a stdio handle.
* read32, read16, load_data, load_principal, and load_cred operate on
  a stdio handle and version.
* write_bytes, store32, store16, and store_principal are no longer
  needed.

fcc_initialize now takes responsibility for writing the header and
default client principal, using a single write.

ticket: 8026 (new)

10 years agoRemove cc_file.c global lookup table
Greg Hudson [Tue, 7 Oct 2014 00:09:27 +0000 (20:09 -0400)] 
Remove cc_file.c global lookup table

The FILE ccache type maintains a global reference-counted table of
handles, which is perhaps an imperfect workaround for POSIX
per-process file locks.  Remove this table, since we plan to maintain
read fds in cursors and use O_APPEND writes to render locking less
important.

10 years agoStop using KRB5_TC_OPENCLOSE
Greg Hudson [Mon, 6 Oct 2014 14:05:41 +0000 (10:05 -0400)] 
Stop using KRB5_TC_OPENCLOSE

Since KRB5_TC_OPENCLOSE no longer does anything, stop setting it when
we iterate over ccaches.

ticket: 7804

10 years agoRemove KRB5_TC_OPENCLOSE handling in FILE ccache
Greg Hudson [Mon, 6 Oct 2014 13:47:10 +0000 (09:47 -0400)] 
Remove KRB5_TC_OPENCLOSE handling in FILE ccache

Stop processing the KRB5_TC_OPENCLOSE flag in cc_file.c; always reopen
the file instead.  This will be replaced with more efficient cursor
handling.  Also remove some unused KRB5_TC_OPENCLOSE macros in scc.h.

10 years agoAdjust asn1c test vector code for new asn1c 228/head
Greg Hudson [Tue, 28 Oct 2014 18:31:19 +0000 (14:31 -0400)] 
Adjust asn1c test vector code for new asn1c

asn1c 0.9.22 added support for representing integers using unsigned
types if they have appropriate constraints.  This changes the
representation of RFC4120's UInt32 type from Integer_t to unsigned
long.  In make-vectors.c, this means we can use a static initializer
for kvno, and that the old method of calling asn_long2INTEGER doesn't
work.  Adjust make-vectors.c to assume the newer version of asn1c.

10 years agoRemove length limit on PKINIT PKCS#12 prompt 229/head
Greg Hudson [Wed, 29 Oct 2014 16:16:40 +0000 (12:16 -0400)] 
Remove length limit on PKINIT PKCS#12 prompt

Long pathnames can trigger the 128-byte prompt length limit in
pkinit_get_certs_pkcs12.  Use asprintf instead of snprintf.  Also
check the result of the prompter invocation.

ticket: 8011
target_version: 1.13.1
tags: pullup

10 years agoMake it easier to find ASN.1 codec functions
Greg Hudson [Tue, 9 Sep 2014 17:34:39 +0000 (13:34 -0400)] 
Make it easier to find ASN.1 codec functions

Expand out MAKE_CODEC macro invocations into MAKE_ENCODER and
MAKE_DECODER invocations, so that the defined function names appear in
the macro calls.  This makes it easier to find the function
definitions using grep, although one still has to look up the macro to
see what it does.

10 years agoRemove unused variables from kprop.c 227/head
Ben Kaduk [Wed, 22 Oct 2014 18:53:52 +0000 (14:53 -0400)] 
Remove unused variables from kprop.c

Commit 29dee7d2cece615bec4616fa9b727e77210051db removed the
need for a ccache to hold the credentials used by the process,
but did not remove the ccname and ccache variables which became
unused as a result.

10 years agoFix cursor leak in krb5_verify_init_creds 224/head
Greg Hudson [Mon, 20 Oct 2014 17:19:26 +0000 (13:19 -0400)] 
Fix cursor leak in krb5_verify_init_creds

In copy_creds_except, call krb5_cc_end_seq_get so we don't leak the
ccache cursor.

ticket: 8029 (new)
target_version: 1.13.1
tags: pullup

10 years agoAdd test for kinit output ccache error 223/head
Greg Hudson [Mon, 20 Oct 2014 16:53:16 +0000 (12:53 -0400)] 
Add test for kinit output ccache error

ticket: 8028

10 years agoReport output ccache errors getting initial creds
Greg Hudson [Mon, 20 Oct 2014 16:52:45 +0000 (12:52 -0400)] 
Report output ccache errors getting initial creds

In init_creds_step_reply, if we get an error storing output
credentials, do set ctx->complete (since retrieving creds or times
will work at this point) but don't suppress the error code.

ticket: 8028 (new)
target_version: 1.13.1
tags: pullup

10 years agoParse "ktadd -norandkey" in remote kadmin client 222/head
Tom Yu [Thu, 16 Oct 2014 19:40:33 +0000 (15:40 -0400)] 
Parse "ktadd -norandkey" in remote kadmin client

The remote kadmin client would not parse the "-norandkey" option to
the ktadd subcommand, terminating option parsing and possibly causing
options to be interpreted as principal names.

ticket: 7962
target_version: 1.13.1
tags: pullup

10 years agoUpdate mitK5features.rst for 1.13
Tom Yu [Wed, 15 Oct 2014 21:16:12 +0000 (17:16 -0400)] 
Update mitK5features.rst for 1.13

10 years agoFix typo in doc for krb5_get_init_creds_keytab() 220/head
Tom Yu [Tue, 14 Oct 2014 18:40:34 +0000 (14:40 -0400)] 
Fix typo in doc for krb5_get_init_creds_keytab()

ticket: 7880
target_version: 1.13.1
tags: pullup

10 years agoBetter document how to verify PGP signature
Tom Yu [Tue, 14 Oct 2014 18:31:09 +0000 (14:31 -0400)] 
Better document how to verify PGP signature

Add text clarifying our unusual packaging of the PGP signature inside
a tar file.

ticket: 7927
target_version: 1.13
tags: pullup

10 years agoAdd tests for klist -s 213/head
Greg Hudson [Thu, 9 Oct 2014 16:03:36 +0000 (12:03 -0400)] 
Add tests for klist -s

10 years agoFix klist -A -s output
Greg Hudson [Sun, 5 Oct 2014 02:49:54 +0000 (22:49 -0400)] 
Fix klist -A -s output

In show_all_ccaches, don't output newlines if status_only is set.

10 years agoImprove klist check for expired cache
Greg Hudson [Sun, 5 Oct 2014 00:39:14 +0000 (20:39 -0400)] 
Improve klist check for expired cache

Make klist -s succeed for a cache which contains a non-expired
credential and no TGT cred.

ticket: 8022

10 years agoSeparate ccache display and checking in klist
Greg Hudson [Sun, 5 Oct 2014 00:32:19 +0000 (20:32 -0400)] 
Separate ccache display and checking in klist

In klist, use separate functions to display a ccache and check its
status.  Also use a helper function to check if a credential's server
principal is the local krbtgt principal for the realm.

10 years agoDocument that newer AFS supports stronger crypto 215/head
Tom Yu [Mon, 6 Oct 2014 18:32:21 +0000 (14:32 -0400)] 
Document that newer AFS supports stronger crypto

Modern OpenAFS releases support using encryption stronger than single
DES with Kerberos.  Update the documentation accordingly.

ticket: 7761
target_version: 1.13
tags: pullup

10 years agoUse gssalloc_malloc for GSS error tokens 217/head
Greg Hudson [Wed, 8 Oct 2014 00:22:52 +0000 (20:22 -0400)] 
Use gssalloc_malloc for GSS error tokens

In kg_accept_krb5, use gssalloc_malloc when allocating space for the
error token, since it will be freed with gssalloc_free.  Using malloc
can cause heap corruption on Windows.  This bug was masked by #1445
before 1.12.

ticket: 8024 (new)
target_version: 1.13.1
tags: pullup

10 years agoFix minor memory leak in klist (again) 197/head
Greg Hudson [Wed, 27 Aug 2014 20:15:46 +0000 (16:15 -0400)] 
Fix minor memory leak in klist (again)

Commit 6e51f9cc3152c8e419fe7f459bcf521d60358434 attempted to fix two
minor memory leaks in klist, but one of the fixes was dead code.  In
do_ccache, free princ before we look at the code which terminated the
loop, not after we have returned on either branch.

10 years agoReturn only new keys in randkey [CVE-2014-5351]
Greg Hudson [Thu, 21 Aug 2014 17:52:07 +0000 (13:52 -0400)] 
Return only new keys in randkey [CVE-2014-5351]

In kadmind's randkey operation, if a client specifies the keepold
flag, do not include the preserved old keys in the response.

CVE-2014-5351:

An authenticated remote attacker can retrieve the current keys for a
service principal when generating a new set of keys for that
principal.  The attacker needs to be authenticated as a user who has
the elevated privilege for randomizing the keys of other principals.

Normally, when a Kerberos administrator randomizes the keys of a
service principal, kadmind returns only the new keys.  This prevents
an administrator who lacks legitimate privileged access to a service
from forging tickets to authenticate to that service.  If the
"keepold" flag to the kadmin randkey RPC operation is true, kadmind
retains the old keys in the KDC database as intended, but also
unexpectedly returns the old keys to the client, which exposes the
service to ticket forgery attacks from the administrator.

A mitigating factor is that legitimate clients of the affected service
will start failing to authenticate to the service once they begin to
receive service tickets encrypted in the new keys.  The affected
service will be unable to decrypt the newly issued tickets, possibly
alerting the legitimate administrator of the affected service.

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

[tlyu@mit.edu: CVE description and CVSS score]

ticket: 8018 (new)
target_version: 1.13
tags: pullup

10 years agoFix krb5 gss_acquire_cred_impersonate_name crash
Greg Hudson [Fri, 19 Sep 2014 15:35:10 +0000 (11:35 -0400)] 
Fix krb5 gss_acquire_cred_impersonate_name crash

If gss_acquire_cred_impersonate_name is called using an
impersonator_cred_handle acquired with GSS_C_ACCEPT, we could
dereference null fields of the cred handle and crash.  Fix this by
checking the impersonator_cred_handle usage and returning
GSS_S_NO_CRED if it isn't what we expect, just as we do in
init_sec_context.

Based on a patch from Solly Ross <sross@redhat.com>.

ticket: 8017 (new)
target_version: 1.13
tags: pullup

10 years agoWork around replay cache creation race
Greg Hudson [Wed, 17 Sep 2014 14:45:28 +0000 (10:45 -0400)] 
Work around replay cache creation race

If two processes try to initialize the same replay cache at the same
time, krb5_rc_io_creat can race between unlink and open, leading to a
KRB5_RC_IO_PERM error.  When this happens, make the losing process
retry so that it can continue.

This does not solve the replay cache creation race, nor is that the
only replay cache race issue.  It simply prevents the race from
causing a spurious failure.

ticket: 3498
target_version: 1.13
tags: pullup

10 years agoRestore providing password TGTs for the ksu target
Nalin Dahyabhai [Thu, 18 Sep 2014 12:37:29 +0000 (08:37 -0400)] 
Restore providing password TGTs for the ksu target

The use of "stored" was originally for marking whether or not creds
had been found in the source cache and copied to the target. If it was
false, the obtain-a-TGT-using-a-password path would be triggered and
it would populate the target ccache directly.

When the intermediate cache was introduced (in commit dccc80a), the
variable started marking whether or not creds had been copied to the
intermediate cache, and this was then used to decide whether or not to
copy creds to the target cache.

The obtain-a-TGT-using-a-password path began storing its creds in the
temporary cache as well, but neglected to set the flag so that the
creds would be copied to the target cache later, so the target ccache
would never be created and populated with the newly-obtained TGT.

ticket: 8016 (new)
target_version: 1.13
tags: pullup

10 years agoFix ksu crash in cases where it obtains the TGT
Nalin Dahyabhai [Tue, 16 Sep 2014 17:50:05 +0000 (13:50 -0400)] 
Fix ksu crash in cases where it obtains the TGT

In order to allow ksu to use any locally-present service key for
verifying creds, the previous change to ksu switched from using a
retrieved or obtained TGT to fetch creds for the local "host" service,
and then passing those creds to krb5_verify_init_creds(), to passing the
retrieved TGT directly to krb5_verify_init_creds().

It did not take care to retrieve the TGT from the temporary ccache if it
had obtained them, and in those cases it would attempt to verify NULL
creds.

Modify the krb5_get_tkt_via_passwd() function to call
krb5_get_init_creds_password(), to pass back the freshly-obtained creds,
to take a "krb5_get_init_creds_opt" pointer instead of a locally-defined
options structure, and rename it to ksu_get_tgt_via_passwd().

ticket: 8015 (new)
target_version: 1.13
tags: pullup

10 years agoDocument KDC TCP listener change 209/head
Tom Yu [Tue, 16 Sep 2014 18:18:17 +0000 (14:18 -0400)] 
Document KDC TCP listener change

Update documentation to reflect the change in the default KDC TCP
listener behavior, new in 1.13.

ticket: 6731
target_version: 1.13
tags: pullup

10 years agoEnable KDC TCP listener by default
Tom Yu [Tue, 16 Sep 2014 18:15:47 +0000 (14:15 -0400)] 
Enable KDC TCP listener by default

Make the KDC default to listening on TCP.

ticket: 6731
target_version: 1.13
tags: pullup

10 years agoAvoid unneeded GetMSTGT() calls in cc_mslsa.c 194/head
Ben Kaduk [Thu, 14 Aug 2014 17:57:48 +0000 (13:57 -0400)] 
Avoid unneeded GetMSTGT() calls in cc_mslsa.c

Both lcc_resolve() and lcc_get_principal() were using GetMSTGT()
to fetch a ticket from which to obtain the client principal name
of the credentials cache.  However, that name is contained in
the results of the the cache information query; there is no need
to retrieve a full ticket of any sort to get it.  Since there
may sometimes be difficulties obtaining a TGT when UAC is enabled,
avoid these unneeded calls.

ticket: 7989

10 years agoMove realm conversion into helper in cc_mslsa.c
Ben Kaduk [Thu, 14 Aug 2014 17:51:22 +0000 (13:51 -0400)] 
Move realm conversion into helper in cc_mslsa.c

All the callers of UnicodeStringToMITPrinc() were already converting
a UnicodeString into a wchar* just to pass it in as the realm.

Simplify everyone's life by making the helper do the conversion.

ticket: 7989

10 years agoRename cc_mslsa.c routines to avoid OS versions
Ben Kaduk [Wed, 13 Aug 2014 21:48:08 +0000 (17:48 -0400)] 
Rename cc_mslsa.c routines to avoid OS versions

We don't care about XP versus non-XP; just indicate which
revision of the data type is being used.

Standardize on the lowercase 'x' in "Ex", for both the "Ex" and
"Ex2" forms.

While here, adjust the function definition prototypes to match
current style.

ticket: 7989

10 years agoRemove unused code from cc_mslsa.c
Ben Kaduk [Wed, 13 Aug 2014 20:28:57 +0000 (16:28 -0400)] 
Remove unused code from cc_mslsa.c

Remove PreserveInitialTicketIdentity() and IsKerberosLogon(), as well
as the preprocessor conditionals ENABLE_PURGING and PURGE_ALL, which
have not been used in a very long time, if ever.

There was one potential callsite of IsKerberosLogon(), in
lcc_resolve(), which was disabled.  It is perfectly reasonable to want
to use the MSLSA cache on a non-domain-joined workstation, as it is
now a read-write cache type, so we need not concern ourselves whether
the logon was performed or may have been performed using kerberos.

ticket: 7989

10 years agocomment some future cleanup for cc_mslsa.c
Ben Kaduk [Wed, 13 Aug 2014 20:31:49 +0000 (16:31 -0400)] 
comment some future cleanup for cc_mslsa.c

The function does_query_ticket_cache_ex2() will not be needed once
Windows Server 2003 drops out of support in approximately one year's
time.  Note the doom timer at its definition, to facilitate future
cleanup.

ticket: 7989

10 years agoRemove old Windows support from cc_mslsa.c
Ben Kaduk [Wed, 13 Aug 2014 16:54:37 +0000 (12:54 -0400)] 
Remove old Windows support from cc_mslsa.c

It is safe to remove is_windows_2000(), is_windows_xp(), and
is_windows_vista(), since the former two only check for very old
versions of windows which are no longer supported, and
is_windows_vista() was unused.  Note that the check being implemented
was whether the running OS was the named version or higher, not an
exact match.  The current Microsoft documentation recommends against
the sort of OS version checks that were employed here, in favor of
explicit feature tests.

Remove is_broken_wow64() as the problem it works around (Microsoft
Article ID 960077) is believed to have been fixed in subsequent
updates to Windows Server 2003 and XP.

Remove does_retrieve_ticket_cache_ticket() since support for the
KERB_RETRIEVE_TICKET_CACHE_TICKET flag in the
KERB_RETRIEVE_TKT_REQUEST structure was added in service packs for
Windows Server 2003 and XP.  Also remove buildtime fallbacks that
are no longer needed.

Remove the conditionals TRUST_ATTRIBUTE_TRUST_USES_AES_KEYS,
HAVE_CACHE_INFO_EX2, and KERB_SUBMIT_TICKET as all current SDK
versions have the relevant functionality.

In all cases, de-indent chunks that are no longer conditional.
Where indentation levels changed, update the style of the reindented
code to current practices.

ticket: 7989

10 years agoLet libgssapi see TGTs in the MSLSA cache
Ben Kaduk [Thu, 21 Aug 2014 22:56:24 +0000 (18:56 -0400)] 
Let libgssapi see TGTs in the MSLSA cache

When the current user is a local administrator of a windows machine
where User Account Control (UAC) is enabled, the Windows LSA will
return a block of zeros as the session key for any TGT entry in the
MSLSA: cache.  The lcc_retrieve() implementation checks for such
"null" session keys and prevents them from escaping to callers (as
attempts to use them would encounger strange errors).  However,
when the TGT is the only entry in the cache, this filtering prevents
scan_ccache() from detecting that the cache contains non-expired
credentials (and that there is a TGT present).

Since scan_ccache() is only looking at metadata in the cache entries,
and does not need to actually use any tickets or session keys, set
the KRB5_TC_NOTICKET flag on the ccache before scanning it.  This
will allow the MSLSA implementation to return a cred for the TGT
entry and cause the GSSAPI credential selection algorithm to function
properly.

ticket: 8000 (new)
tags: pullup
target_version: 1.12.3
subject: gssapi.dll fails to detect TGTs in the MSLSA cache when UAC is enabled

10 years agoAdd some KDC entries to the registry via WiX
Ben Kaduk [Thu, 21 Aug 2014 21:33:11 +0000 (17:33 -0400)] 
Add some KDC entries to the registry via WiX

Though our library happily uses DNS, I can't get Windows to
successfully contact KDCs found through the SRV records.
So, we do need to stay in the business of shipping around
KDC entries, after all.

ticket: 7999 (new)
queue: kfw
tags: pullup
target_version: 1.12.3

10 years agoTry to scan_ccache() after leash picks a cache
Ben Kaduk [Thu, 21 Aug 2014 16:48:39 +0000 (12:48 -0400)] 
Try to scan_ccache() after leash picks a cache

We need to call scan_ccache() in order to notice that there
are credentials and read their expire time.

The call to scan_ccache() in the Leash case was inadvertently
removed as part of commit 8651f3339ccc5a623172a8edfb9cf522883acacd.

ticket: 7998 (new)
tags: pullup
target_version: 1.12.3
subject: gssapi.dll tries to get initial creds even when some are present

10 years agoDocument clock skew tolerance for ticket times
Brett Randall [Fri, 5 Sep 2014 01:21:35 +0000 (11:21 +1000)] 
Document clock skew tolerance for ticket times

KDC and application server checks on ticket start and expiration times
are subject to clock skew tolerance.  Document this grace period.

[tlyu@mit.edu: edit commit message, adjust wording to conform to
existing style, document start time clock skew]

ticket: 8008 (new)
target_version: 1.13
tags: pullup

10 years agoIn ksu, handle typeless default_ccache_name values
Nalin Dahyabhai [Mon, 8 Sep 2014 17:15:40 +0000 (13:15 -0400)] 
In ksu, handle typeless default_ccache_name values

When a configured or compiled-in default ccache name doesn't contain a
cache type and ':' as a prefix, add one to the writeable value that we
construct when we go to look it up.  This lets the rest of the
application always assume that it'll be there.

[ghudson@mit.edu: minor style changes]

ticket: 8007 (new)
target_version: 1.13
tags: pullup

10 years agoFix uninitialized variable bug in kdb_cpw.c 205/head
Greg Hudson [Fri, 5 Sep 2014 19:36:11 +0000 (15:36 -0400)] 
Fix uninitialized variable bug in kdb_cpw.c

Now that add_key_rnd isn't looking up the TGT principal entry, it
could use retval before initializing it if the loop runs for zero
iterations.  Get rid of the add_key_rnd label (as it no longer does
anything) and just return 0 after the loop ends.

10 years agoSimplify kdb_cpw.c
Greg Hudson [Mon, 25 Aug 2014 23:14:50 +0000 (19:14 -0400)] 
Simplify kdb_cpw.c

In add_key_rnd, stop looking up the krbtgt DB entry; we have not used
it since 1.1.

Use copy_key_data in add_key_rnd and add_key_pwd.

krb5_dbe_crk, krb5_dbe_ark, krb5_dbe_def_cpw, and krb5_dbe_apw all
contained similar logic.  Consolidate all of them into a static helper
function which does the work of all four.  The ark/apw variants had
slightly different behavior then crk/cpw with keepold=true, so
introduce a three-value enum to express all three behaviors.

10 years agoAdd test case for -keepold mkey re-encryption
Greg Hudson [Mon, 25 Aug 2014 17:02:03 +0000 (13:02 -0400)] 
Add test case for -keepold mkey re-encryption

ticket: 7995

10 years agoRe-encrypt preserved key data in new master key
Greg Hudson [Mon, 25 Aug 2014 16:48:14 +0000 (12:48 -0400)] 
Re-encrypt preserved key data in new master key

When we are preserving old key data in kdb_cpw.c, ensure that it is
encrypted with the same master key as the new key data.  This ensures
that the KRB5_TL_MKVNO tl-data on the principal entry applies to all
of the key data, not just some of it.

ticket: 7995
target_version: 1.13
tags: pullup

10 years agoUpdate NOTICE with new changes for 1.13 203/head
Benjamin Kaduk [Wed, 3 Sep 2014 02:16:51 +0000 (22:16 -0400)] 
Update NOTICE with new changes for 1.13

The KCM RPC definitions are copyright KTH/Apple, since it is present
for interoperability with OS X.

Add MS-KKDCP client copyright; alas, it does not match the existing
Red Hat copyrights, since the new code is a 2-clause BSD license, and
there was only a 3-clause Red Hat copyright block present already.

The actual Sphinx output for NOTICE would adjust the wrapping and
indentation of some existing content, but those changes were removed
by hand, so this commit only reflects new added content.

ticket: 8006
tags: pullup
target_version: 1.13

10 years agoFix unlikely memory leak in KCM client
Greg Hudson [Tue, 2 Sep 2014 18:02:26 +0000 (14:02 -0400)] 
Fix unlikely memory leak in KCM client

Commit 956cbd24e645609c94fbc836840ce0f87ba3ce79 created a memory leak
if the KCM_OP_GET_DEFAULT_CACHE call fails inside kcm_ptcursor_new
after the KCM_OP_GET_CACHE_UUID_LIST call succeeds.  Fix it.

ticket: 8002

10 years agoFix KCM ccache per-type cursor
Greg Hudson [Thu, 28 Aug 2014 22:43:56 +0000 (18:43 -0400)] 
Fix KCM ccache per-type cursor

The KCM per-type cursor was too simplistic and did not obey the
conventions of the other ccache types.  Fix it to return a singleton
cursor when the default cache is a subsidiary and to return the
primary cache first.

For internal convenience, make_cache now accepts a context parameter
and creates a kcmio if necessary.

ticket: 8002 (new)
target_version: 1.13

10 years agoAllow logger.c to work with redirected stderr 196/head
Tom Yu [Tue, 26 Aug 2014 22:18:02 +0000 (18:18 -0400)] 
Allow logger.c to work with redirected stderr

In lib/kadm5/logger.c:krb5_klog_init(), if the configuration requests
STDERR logging, call fdopen() using mode "w" instead of "a+", to avoid
errors when stderr happens to be opened for write only.

ticket: 8001 (new)
target_version: 1.13
tags: pullup

10 years agoInitialize iterflags in update_princ_encryption
Ben Kaduk [Fri, 29 Aug 2014 17:14:07 +0000 (13:14 -0400)] 
Initialize iterflags in update_princ_encryption

It is only assigned to in the non-dry-run case, which clang detects
and aborts the build (when maintainer mode is enabled).

ticket: 8005 (new)
tags: pullup
target_version: 1.13

10 years agoMap .hin files to the C language for doxygen 198/head
Ben Kaduk [Thu, 28 Aug 2014 21:54:39 +0000 (17:54 -0400)] 
Map .hin files to the C language for doxygen

In Debian unstable, the current version of doxygen is unhappy with
our generated Doxyfile, and does not handle krb5.hin in the expected
fashion (as a C header).  Work around this issue by explicitly
specifying that files with the .hin extension are to be treated
as C language files.

ticket: 8004 (new)
tags: pullup
target_version: 1.13

10 years agoExport gssrpc_bindresvport_sa 199/head
Ben Kaduk [Fri, 29 Aug 2014 02:58:49 +0000 (22:58 -0400)] 
Export gssrpc_bindresvport_sa

It was added in commit 0d04b60d159ab83b943e43802b1449a3b074bc83, but
was not added to the library export symbol list, and thus was unusable
on systems that enforced library export lists.

ticket: 8003 (new)
tags: pullup
target_version: 1.13

10 years agoAdd test case for randkey mkvno update
Greg Hudson [Mon, 18 Aug 2014 19:10:00 +0000 (15:10 -0400)] 
Add test case for randkey mkvno update

ticket: 7994

10 years agoMake randkey update principal mkvno
Greg Hudson [Mon, 18 Aug 2014 19:09:41 +0000 (15:09 -0400)] 
Make randkey update principal mkvno

In kadm5_randkey_principal_3, after updating the principal's keys,
update its mkvno tl-data to indicate the master key version we
encrypted the new keys with.

ticket: 7994
target_version: 1.13
tags: pullup

10 years agokadm5_randkey_principal interop with Solaris KDC
Tomas Kuthan [Wed, 28 May 2014 13:24:20 +0000 (15:24 +0200)] 
kadm5_randkey_principal interop with Solaris KDC

When kadm5_randkey_principal is called on Solaris kadmind (as opposed
to kadm5_randkey_principal_3), the KDC assumes the peer is a Solaris 9
system, and only creates DES keys.

For better interoperability, always call kadm5_randkey_principal_3
first.  If this procedure is not present on the remote server, fall
back to calling kadm5_randkey_principal if possible.

[ghudson@mit.edu: adjusted comments, argument wrapping, commit
message]

ticket: 7997 (new)
target_version: 1.13
tags: pullup

10 years agoSimplify and improve ksu cred verification
Nalin Dahyabhai [Tue, 19 Aug 2014 18:07:26 +0000 (14:07 -0400)] 
Simplify and improve ksu cred verification

When verifying the user's initial credentials, don't compute a server
name and preemptively obtain creds for it.  This change allows
krb5_verify_init_creds to use any host key in the keytab, and not just
the one for the canonicalized local hostname.

[ghudson@mit.edu: rewrote commit message]

ticket: 7996 (new)
target_version: 1.13
tags: pullup

10 years agoAutodetect OpenSSL CMS for LibreSSL compatibility
maurerpe [Thu, 14 Aug 2014 21:43:55 +0000 (17:43 -0400)] 
Autodetect OpenSSL CMS for LibreSSL compatibility

LibreSSL currently does not support CMS, so checking for CMS via
OPENSSL_VERSION_NUMBER isn't reliable.  Detect CMS support via
autoconf instead.

[ghudson@mit.edu: clarified commit message; minor style changes]

ticket: 7993 (new)
target_version: 1.13
tags: pullup

10 years agoFix test syntax in configure.in
Michael Osipov [Fri, 15 Aug 2014 12:20:10 +0000 (14:20 +0200)] 
Fix test syntax in configure.in

Commits 1e4bdcfe and 8df1965d used the wrong test equality operator.
Some versions of test allow == for equality, but others (such as the
HP-UX version) do not.  Use a single = for correctness.

[ghudson@mit.edu: clarified commit message]

ticket: 7992 (new)
target_version: 1.13
tags: pullup