Handle migration from pre-1.7 databases with master key kvno != 1
authorGreg Hudson <ghudson@mit.edu>
Thu, 28 Jan 2010 21:39:31 +0000 (21:39 +0000)
committerGreg Hudson <ghudson@mit.edu>
Thu, 28 Jan 2010 21:39:31 +0000 (21:39 +0000)
commitf0e084261aec6be2d508b33f960d38d19f0d0345
tree6317db1b8cab2e9e99ce4d3f0a8f8d3cb259b239
parent0b929b1f34ea96096f1fbb3736bc33ff3375afa1
Handle migration from pre-1.7 databases with master key kvno != 1

krb5_dbe_lookup_mkvno assumes an mkvno of 1 for entries with no
explicit tl_data.  We've seen at least one pre-1.7 KDB with a master
kvno of 0, violating this assumption.  Fix this as follows:

* krb5_dbe_lookup_mkvno outputs 0 instead of 1 if no tl_data exists.
* A new function krb5_dbe_get_mkvno translates this 0 value to the
  minimum version number in the mkey_list.  (krb5_dbe_lookup_mkvno
  cannot do this as it doesn't take the mkey_list as a parameter.)
* Call sites to krb5_dbe_lookup_mkvno are converted to
  krb5_dbe_get_mkvno, except for an LDAP case where it is acceptable
  to store 0 if the mkvno is unknown.

ticket: 6650
target_version: 1.7.1
tags: pullup

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@23676 dc483132-0cff-0310-8789-dd5450dbe970
src/include/kdb.h
src/kadmin/dbutil/kdb5_mkey.c
src/lib/kadm5/srv/svr_principal.c
src/lib/kdb/kdb5.c
src/lib/kdb/libkdb5.exports