Ben Kaduk [Wed, 17 Oct 2012 15:37:01 +0000 (11:37 -0400)]
Remove install-oldman
The old man pages are gone, so we can't install them anymore.
Also clean up install and install-unix targets that were installing
the old man pages by hand.
Nalin Dahyabhai [Mon, 1 Oct 2012 22:51:06 +0000 (18:51 -0400)]
Test in_ccache and pa_types functionality
* Add a krb5int_build_conf_principals() function to allow our get/set
code to directly prune out duplicate config entries.
* Verify that when we specify a pa_type, it affects whether or not we
will use a particular preauth plugin.
* Verify that we correctly save the KDC's preauth type number, that we
tried to answer, to the out_ccache.
* When producing preauth data, keep track of the type of padata in the
KDC's list of acceptable types which prompted the module to produce
padata.
* After obtaining credentials, store that value as a "pa_type"
configuration item in the out_ccache.
* Read that allowed preauth type from an in_ccache, if possible.
* If we have an allowed preauth type, only call "real" modules that
handle that value when filling in responder items and producing a
client request.
Add a krb5_get_init_creds_opt_set_in_ccache() function. An input
ccache may hold configuration data which the client libraries can
use to influence their decisions.
Greg Hudson [Tue, 16 Oct 2012 20:23:49 +0000 (16:23 -0400)]
Avoid bit shifting in krb5.h constants
Our traditional practice is to use hex integer literals for flag bits.
Bit shifting can be dangerous because shifting into the sign bit is
undefined. Convert existing bit shift expressions to hex literals.
Tom Yu [Sat, 22 Sep 2012 00:49:29 +0000 (20:49 -0400)]
Clean up domain->realm referrals
Clean up domain->realm referrals by breaking prep_reprocess_tgs_req()
into smaller functions. Give the resulting functions more descriptive
names. Also delete an unnecessary and almost exact copy of
krb5_get_host_realm().
Tom Yu [Fri, 21 Sep 2012 19:32:20 +0000 (15:32 -0400)]
Refactor process_tgs_req() service princ search
The service principal database entry search logic in process_tgs_req()
was excessively complex, containing questionable uses of "goto", along
with deeply nested control flow. Refactor it into smaller functions.
Tom Yu [Fri, 14 Sep 2012 00:19:59 +0000 (20:19 -0400)]
Refactor validate_tgs_request()
Break validate_tgs_request() into smaller functions. Collect related
checks into helper functions. As a result, some invalid requests with
multiple problems can produce different error messages. This is
probably not a problem for most situations.
Tom Yu [Wed, 12 Sep 2012 21:19:24 +0000 (17:19 -0400)]
Move add_to_transited to a separate file
add_to_transited() is fairly large, and also fairly independent of the
other contents of kdc_util.c. Move it into kdc_transit.c. Also
simplifies the building of rtest by removing dependencies that
kdc_util.c previously needed to satisfy undefined symbols.
Tom Yu [Sat, 8 Sep 2012 00:18:41 +0000 (20:18 -0400)]
Eliminate some KDC globals
Make kdc_active_realm a local variable in every function that needs
it. Pass it around in various state structures as needed. Keep the
macros that reference its members remain for now.
Tom Yu [Wed, 18 Jul 2012 18:54:29 +0000 (14:54 -0400)]
Don't use kdc_active_realm in kdc/rtest.c
Too many parts of the KDC rely on the global variable
kdc_active_realm. rtest.c doesn't actually need any of the
KDC-specific information that's avaiable through kdc_active_realm, so
delete references to it.
Tom Yu [Thu, 20 Sep 2012 19:35:56 +0000 (15:35 -0400)]
Enforce TGS principals having 2 components
RFC 4120 section 7.3 says that TGS principal names have two
components. Make krb5_is_tgs_principal() and is_cross_tgs_principal()
enforce this constraint. Code elsewhere in the KDC already checks for
two components anyway.
Ben Kaduk [Mon, 15 Oct 2012 17:50:58 +0000 (13:50 -0400)]
Remove stale implement document
As with the texinfo implementor's guide, it is sufficiently stale
so as to be untrustworthy without verification.
Content of this nature should live on k5wiki.kerberos.org.
Ben Kaduk [Mon, 15 Oct 2012 17:38:05 +0000 (13:38 -0400)]
Remove the last vestiges of the texinfo docs
We needed these last stragglers to build the NOTICE file at the
root of the tree, but we now generate a notice.txt from reST.
Man pages have been generated from reST for some time now, we no
longer need scripts to turn them into HTML and ps, as those can
be generated directly from the reST source.
The Makefile only existed to serve the texinfo builds, so it goes
away, too. (The tgz target appears to have been broken since 1996.)
Ben Kaduk [Mon, 15 Oct 2012 21:47:33 +0000 (17:47 -0400)]
Make rules for building NOTICE from RST
Sphinx-build wants to scan over all the sources in the source dir,
and its text output engine does not handle the spanning row cells
used in some of our fancy tables, so it will crash if we attempt
to generate text output from our full suite of documents.
We could work around this by attempting to just compile the one
source file as an additional argument to sphinx-build, but this
seems to insist on producing an index.txt as well as a notice.txt.
Furthermore, we cannot use the same conf.py as in rst_composite because
the paths substitutions are not available with just the minimal
contents of rst_notice. Make a copy and remove the irrelevant parts,
for now, changing only the master_doc field as appropriate.
For the HTML build, we use the standard |copy| macro from isonum.txt
to get the unicode copyright symbol glyph, but for ASCII output we
prefer to just use the literal "(C)".
Ben Kaduk [Fri, 12 Oct 2012 21:12:55 +0000 (17:12 -0400)]
Add notice.rst
To replace the texinfo sources previously used to generate NOTICE.
When compiled to HTML, compares well against the original NOTICE;
use notice.rst in mitK5license.rst instead of using a literal
include of the old NOTICE file.
Ben Kaduk [Fri, 12 Oct 2012 16:42:10 +0000 (12:42 -0400)]
Remove texinfo implementors guide
It is sufficiently old and unloved that nothing in it should be
taken as truth without independent verification.
Content of this nature should live on k5wiki.kerberos.org
in the future.
Ben Kaduk [Fri, 12 Oct 2012 15:36:38 +0000 (11:36 -0400)]
Disconnect the texinfo users guide from the build
Its content has been migrated to or superseded by the krb_users
reST documentation.
The texinfo document attempted to have a general introduction to
Kerberos, but it is not quite suitable for the target audience
of the user's guide and will be rewritten.
A few portions of the texinfo document are simply no longer relevant
and do not need to be migrated. In particular:
The krb5-appl utilities are out of scope for this document, as they
have been moved to a separate repository. Coverage of ksu may be
brought back at a later time, though.
The Kerberos Glossary will be expanded and handled separately.
Greg Hudson [Mon, 15 Oct 2012 18:07:09 +0000 (14:07 -0400)]
Bump libkdb5 API and DAL versions
We made two sets of incompatible changes to the DAL and libkdb5 API
during development for 1.11 (master key list simplification and policy
extensions), so increment the appropriate version numbers.
Greg Hudson [Mon, 15 Oct 2012 17:11:18 +0000 (13:11 -0400)]
Wait for correct message in t_iprop.py
The message "Got incremental updates from the master" precedes
actually replaying the updates on the slave. Instead look for
"Incremental updates:" (the statistics message), which happens just
after the updates are replayed.
Also, we don't need to import time now that we're not sleeping.
When adding {str}, {lenstr}, or {data} to trace output, scan for
bytes which might be non-printable, and add them as hex-escaped
versions of themselves if any are found.
Greg Hudson [Sat, 13 Oct 2012 15:40:51 +0000 (11:40 -0400)]
Eliminate races in t_iprop.py
After we start kpropd, read about the initial full dump before making
changes on the master. Avoid prodding kpropd for this read (by
shifting responsibility for the initial prod to the caller) since
kpropd doesn't sleep before its first request.
When waiting for sync, note whether we got a full propagation and
match that up with our expectations.
Use a long polling interval so kpropd doesn't wake up on its own and
confuse the test script with an extra incremental update.
Greg Hudson [Fri, 12 Oct 2012 20:12:48 +0000 (16:12 -0400)]
Make t_iprop.py faster and more robust
Catch SIGUSR1 in iprop-mode kpropd so that we can use it to interrupt
sleeps and make kpropd do an iprop request immediately.
In k5test.py, add prod_kpropd and read_from_kpropd methods to allow
test scripts to send a SIGUSR1 to kpropd and to read its stdout/stderr
output; also allow the test script to specify additional arguments
when starting kpropd.
In t_iprop.py, start kpropd with -d and, instead of sleeping, read
kpropd output until we see an indication that kpropd is in sync with
the master. To avoid delays, prod kpropd before waiting for sync and
after a completed full prop.
Ben Kaduk [Thu, 11 Oct 2012 16:42:05 +0000 (12:42 -0400)]
Disconnect the texinfo admin guide from the build
Its content has been migrated to or superseded by the reST documentation,
essentially entirely in krb_admins.
A few portions of the texinfo document are simply no longer relevant
and do not need to be migrated. In particular:
Information about reporting bugs lives on k5wiki.kerberos.org.
General Kerberos concepts/introduction will be elsewhere in the tree.
We do not need to document the time zones accepted by kadmin.
We do not need a table of the various error codes and strings in our
formal documentation.
A complete description of the layout of our source tree is not useful
or relevant to most Kerberos administrators.
Greg Hudson [Thu, 11 Oct 2012 17:22:29 +0000 (13:22 -0400)]
Fix cast regexp in C style checker
In check_cast, we want to match cast operators with or without spaces
after the closing paren, and then check for spaces after we match.
Also, per the comment, we want to match potential cast operators
followed by an open paren.
Ben Kaduk [Tue, 9 Oct 2012 20:00:53 +0000 (16:00 -0400)]
Improve the ktadd and ktremove synopses
Mention the options on the synopsis line, and do not imply that
the principal argument(s) for ktadd are optional.
reST line blocks are needed to keep the two forms of ktadd on
separate lines.
Ben Kaduk [Fri, 5 Oct 2012 20:44:40 +0000 (16:44 -0400)]
Fix ordered list style
Sphynx outputs class information that corresponds to its generated
basic.css, which we do not include. This results in all lists,
even nested lists, using arabic numerals.
Import the class properties into kerb.css for now.
Ben Kaduk [Fri, 5 Oct 2012 18:35:45 +0000 (14:35 -0400)]
Fix copy/paste errors in dbadmin
We should include the stashsrvpw content in that section, not
the list content. Likewise, the list_policy content instead
of the destroy_policy content.
Ben Kaduk [Fri, 5 Oct 2012 17:04:16 +0000 (13:04 -0400)]
Update kdb5_util example output
This text has not caught up with changes to the utility itself.
As a side effect, our output text box is narrower and does not have
to scroll on as many browser windows.
Ben Kaduk [Fri, 5 Oct 2012 16:44:52 +0000 (12:44 -0400)]
Wordsmith kdb5_util stash -f
The keyfile worth overriding is the one in kdc.conf. Though using
stash -f would override kdb5_util's -sf argument, there is no reason to
pass both flags to the same invocation.
In any case, the "at startup" language is not really correct.
Ben Kaduk [Thu, 4 Oct 2012 22:04:41 +0000 (18:04 -0400)]
Correct kadm5.acl synopsis
The target principal and restrictions arguments are not orthogonal;
a target principal argument must be given in order for a restriction
list to be supplied.
Ben Kaduk [Thu, 4 Oct 2012 22:00:07 +0000 (18:00 -0400)]
Make the kadm5.acl example sane
It is an eggregious security violation to give all admin principals
admin rights and then give all null instances permission to change
the password of the associated admin instance.
While here, don't assume that admin and root are the only non-null
instances, and correct the formatting of an entry with restrictions.
Greg Hudson [Wed, 10 Oct 2012 17:11:46 +0000 (13:11 -0400)]
Fix slow kprop dejagnu test
Fix kpropd -S -t to actually exit after processing one connection (it
was breaking out of the switch statement, not the while loop). Use
the -t when invoking kpropd from the dejagnu test framework;
previously it was unnecessary because kpropd -S -d exited after one
connection. Clear up some confusion in the kprop.exp comments about
whether kpropd is expected to exit.
Ben Kaduk [Thu, 4 Oct 2012 17:42:13 +0000 (13:42 -0400)]
Document TXT records for realm lookup
Even though they are subject to vulnerabilities via DNS spoofing
and we accordingly don't recommend their use, we do have the code
to use them. Just as we document dns_lookup_realm in krb5.conf(5),
document them here.
Ben Kaduk [Wed, 3 Oct 2012 20:44:28 +0000 (16:44 -0400)]
Remove unused texinfo sources
Now that the install guide make rules are removed, nothing references
build.texinfo or install.texinfo any more (other than the tgz target,
which is updated accordingly).
Ben Kaduk [Wed, 3 Oct 2012 20:16:26 +0000 (16:16 -0400)]
Disconnect texinfo install guide from the build
Its content has been migrated to or superseded by the RST documentation,
split amongst krb_build and various sections of krb_admins.
A few portions of the texinfo document are simply no longer relevant
and do not need to be migrated. In particular:
It's 2012; we don't need to specify that we require a C89 compiler.
It's 2012; it will be easy to get enough disk to build krb5.
The KADM5 tests are part of 'make check' and don't need separate
documentation.
Shared library support is not limited to "a few operating systems".
We do not need to document incompatibilities with ancient/dead OSes.
kadmind4 and v5passwdd are no longer relevant.
Ben Kaduk [Wed, 3 Oct 2012 19:56:46 +0000 (15:56 -0400)]
Add section on updating from single-DES
There are, unfortunately, still some single-DES deployments out
there. Try to help them along by documenting a procedure for
migrating to stronger crypto.
The texinfo install guide had a section on "upgrading", but it was
not really suitable for direct import into a RST document. For one,
it gave a high profile to the on-disk incompatibilities in upgrades
to 1.1 and 1.2. It also was driven at upgrading *to* triple-des (or RC4),
which are something of a dead-end. This new text attempts to be more
general and applicable to today's environment.
Ben Kaduk [Wed, 3 Oct 2012 16:29:20 +0000 (12:29 -0400)]
Add a kdb5_util examples for old KDC upgrades
It's a slightly less-contrived use case of the utility than the
other example, which reads more like a usage statement.
Give a motivating sentence before each example, and note that this
new example is not needed in the general upgrade case.
The need to dump/load for upgrades prior to 1.2 was documented in
the texinfo install guide, but not in any RST sources until now.
Greg Hudson [Tue, 9 Oct 2012 18:27:04 +0000 (14:27 -0400)]
De-conditionalize Camellia code
The Camellia enctypes and cksumtypes have received IANA assignments.
Add #defines using those assignments to krb5.h, remove the CAMELLIA
conditional, and enable testing code as appropriate.
The Camellia draft has not received an RFC number yet, so there is no
Doxygen markup for the enctype and cksumtype #defines. That can be
added once the RFC number is known.
Greg Hudson [Mon, 8 Oct 2012 16:18:35 +0000 (12:18 -0400)]
Remove iprop dejagnu test
Both the Python and dejagnu iprop tests are slow since they use sleeps
to give kpropd time to do its work (although we can fix this with some
work). Since the Python tests cover the same ground as the dejagnu
tests, we don't need both.
Nicolas Williams [Mon, 24 Sep 2012 23:04:50 +0000 (18:04 -0500)]
Remove an old, incorrect comment in kpropd.c
We absolutely do not want a parking brake on the kprop protocol as
described in the comment being removed. Instead the kprop command
should be fixed so it doesn't die on error (assuming it even still does
or ever did, neither of which I've checked).
If a kdb5_util load gets killed between rename()ing the new KDB file
into place and resetting the iprop ulog then the ulog can reflect the
pre-load state, which will almost certainly be incorrect.
This matters because we want to impose a timeout on full resyncs in
kpropd when iprop dictates that a full resync is needed, and the
simplest timeout scheme involves signaling the kdb5_util load process.
But also, we want no such races in general.
The fix is simple: re-initialize the ulog before renaming the new KDB
file into place, then proceed as usual. If the ulog is not properly
updated at the end of the load it will at least always result in
subsequent iprop get updates operations always indicating that a full
resync is required.