diff options
Diffstat (limited to 'src/lib/kdb')
-rw-r--r-- | src/lib/kdb/Makefile.in | 2 | ||||
-rw-r--r-- | src/lib/kdb/deps | 3 | ||||
-rw-r--r-- | src/lib/kdb/kdb5.c | 25 | ||||
-rw-r--r-- | src/lib/kdb/kdb_convert.c | 4 | ||||
-rw-r--r-- | src/lib/kdb/kdb_default.c | 2 | ||||
-rw-r--r-- | src/lib/kdb/t_sort_key_data.c | 5 |
6 files changed, 19 insertions, 22 deletions
diff --git a/src/lib/kdb/Makefile.in b/src/lib/kdb/Makefile.in index 5da22dfd51c1..b77bf496d6a2 100644 --- a/src/lib/kdb/Makefile.in +++ b/src/lib/kdb/Makefile.in @@ -5,7 +5,7 @@ LOCALINCLUDES= -I. # Keep LIBMAJOR in sync with KRB5_KDB_API_VERSION in include/kdb.h. LIBBASE=kdb5 -LIBMAJOR=8 +LIBMAJOR=9 LIBMINOR=0 LIBINITFUNC=kdb_init_lock_list LIBFINIFUNC=kdb_fini_lock_list diff --git a/src/lib/kdb/deps b/src/lib/kdb/deps index c2ce27ff7cd8..152ef7fceee2 100644 --- a/src/lib/kdb/deps +++ b/src/lib/kdb/deps @@ -153,5 +153,6 @@ t_ulog.so t_ulog.po $(OUTPRE)t_ulog.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \ $(top_srcdir)/include/krb5/plugin.h $(top_srcdir)/include/port-sockets.h \ $(top_srcdir)/include/socket-utils.h t_ulog.c t_sort_key_data.so t_sort_key_data.po $(OUTPRE)t_sort_key_data.$(OBJEXT): \ - $(BUILDTOP)/include/krb5/krb5.h $(COM_ERR_DEPS) $(top_srcdir)/include/kdb.h \ + $(BUILDTOP)/include/autoconf.h $(BUILDTOP)/include/krb5/krb5.h \ + $(COM_ERR_DEPS) $(top_srcdir)/include/k5-cmocka.h $(top_srcdir)/include/kdb.h \ $(top_srcdir)/include/krb5.h t_sort_key_data.c diff --git a/src/lib/kdb/kdb5.c b/src/lib/kdb/kdb5.c index 4adf0fcbb201..da5332217fef 100644 --- a/src/lib/kdb/kdb5.c +++ b/src/lib/kdb/kdb5.c @@ -322,12 +322,7 @@ copy_vtable(const kdb_vftabl *in, kdb_vftabl *out) out->audit_as_req = in->audit_as_req; out->refresh_config = in->refresh_config; out->check_allowed_to_delegate = in->check_allowed_to_delegate; - - /* Copy fields for minor version 1 (major version 6). */ - assert(KRB5_KDB_DAL_MAJOR_VERSION == 6); - out->free_principal_e_data = NULL; - if (in->min_ver >= 1) - out->free_principal_e_data = in->free_principal_e_data; + out->free_principal_e_data = in->free_principal_e_data; /* Set defaults for optional fields. */ if (out->fetch_master_key == NULL) @@ -1220,11 +1215,12 @@ krb5_db_fetch_mkey(krb5_context context, krb5_principal mname, krb5_db_entry *master_entry; rc = krb5_db_get_principal(context, mname, 0, &master_entry); - if (rc == 0) { + if (rc == 0 && master_entry->n_key_data > 0) *kvno = (krb5_kvno) master_entry->key_data->key_data_kvno; - krb5_db_free_principal(context, master_entry); - } else + else *kvno = 1; + if (rc == 0) + krb5_db_free_principal(context, master_entry); } if (!salt) @@ -1296,7 +1292,7 @@ find_actkvno(krb5_actkvno_node *list, krb5_timestamp now) * are in the future, we will return the first node; if all are in the * past, we will return the last node. */ - while (list->next != NULL && list->next->act_time <= now) + while (list->next != NULL && !ts_after(list->next->act_time, now)) list = list->next; return list->act_kvno; } @@ -2677,8 +2673,10 @@ krb5_db_check_policy_tgs(krb5_context kcontext, krb5_kdc_req *request, void krb5_db_audit_as_req(krb5_context kcontext, krb5_kdc_req *request, - krb5_db_entry *client, krb5_db_entry *server, - krb5_timestamp authtime, krb5_error_code error_code) + const krb5_address *local_addr, + const krb5_address *remote_addr, krb5_db_entry *client, + krb5_db_entry *server, krb5_timestamp authtime, + krb5_error_code error_code) { krb5_error_code status; kdb_vftabl *v; @@ -2686,7 +2684,8 @@ krb5_db_audit_as_req(krb5_context kcontext, krb5_kdc_req *request, status = get_vftabl(kcontext, &v); if (status || v->audit_as_req == NULL) return; - v->audit_as_req(kcontext, request, client, server, authtime, error_code); + v->audit_as_req(kcontext, request, local_addr, remote_addr, + client, server, authtime, error_code); } void diff --git a/src/lib/kdb/kdb_convert.c b/src/lib/kdb/kdb_convert.c index 8172e9d6ba16..691635ec752b 100644 --- a/src/lib/kdb/kdb_convert.c +++ b/src/lib/kdb/kdb_convert.c @@ -228,7 +228,7 @@ conv_princ_2ulog(krb5_principal princ, kdb_incr_update_t *upd, static void set_from_utf8str(krb5_data *d, utf8str_t u) { - if (u.utf8str_t_len > INT_MAX-1 || u.utf8str_t_len >= SIZE_MAX-1) { + if (u.utf8str_t_len > INT_MAX - 1) { d->data = NULL; return; } @@ -419,7 +419,7 @@ ulog_conv_2logentry(krb5_context context, krb5_db_entry *entry, break; case AT_FAIL_AUTH_COUNT: - if (!exclude_nra && entry->fail_auth_count >= (krb5_kvno)0) { + if (!exclude_nra) { ULOG_ENTRY_TYPE(update, ++final).av_type = AT_FAIL_AUTH_COUNT; ULOG_ENTRY(update, final).av_fail_auth_count = diff --git a/src/lib/kdb/kdb_default.c b/src/lib/kdb/kdb_default.c index 7a751487ce27..a1021f13a493 100644 --- a/src/lib/kdb/kdb_default.c +++ b/src/lib/kdb/kdb_default.c @@ -282,7 +282,7 @@ krb5_db_def_fetch_mkey_stash(krb5_context context, key->length = keylength; #endif - if (!key->length || ((int) key->length) < 0) { + if (!key->length || key->length > 1024) { retval = KRB5_KDB_BADSTORED_MKEY; goto errout; } diff --git a/src/lib/kdb/t_sort_key_data.c b/src/lib/kdb/t_sort_key_data.c index d03d507a1c33..ffd1a156ac3d 100644 --- a/src/lib/kdb/t_sort_key_data.c +++ b/src/lib/kdb/t_sort_key_data.c @@ -30,10 +30,7 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include <stdarg.h> -#include <stddef.h> -#include <setjmp.h> -#include <cmocka.h> +#include "k5-cmocka.h" #include "kdb.h" #define KEY(kvno) { \ |