diff options
Diffstat (limited to 'source4/kdc/hdb-samba4.c')
-rw-r--r-- | source4/kdc/hdb-samba4.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/source4/kdc/hdb-samba4.c b/source4/kdc/hdb-samba4.c index 53b1abee94..3956ce2b15 100644 --- a/source4/kdc/hdb-samba4.c +++ b/source4/kdc/hdb-samba4.c @@ -82,18 +82,33 @@ static krb5_error_code hdb_samba4_remove(krb5_context context, HDB *db, krb5_con return HDB_ERR_DB_INUSE; } +static krb5_error_code hdb_samba4_fetch_kvno(krb5_context context, HDB *db, + krb5_const_principal principal, + unsigned flags, + unsigned kvno, + hdb_entry_ex *entry_ex) +{ + struct samba_kdc_db_context *kdc_db_ctx; + + kdc_db_ctx = talloc_get_type_abort(db->hdb_db, + struct samba_kdc_db_context); + + return samba_kdc_fetch(context, kdc_db_ctx, principal, flags, kvno, entry_ex); +} + static krb5_error_code hdb_samba4_fetch(krb5_context context, HDB *db, krb5_const_principal principal, unsigned flags, - unsigned kvno, hdb_entry_ex *entry_ex) { struct samba_kdc_db_context *kdc_db_ctx; + flags &= ~HDB_F_KVNO_SPECIFIED; + kdc_db_ctx = talloc_get_type_abort(db->hdb_db, struct samba_kdc_db_context); - return samba_kdc_fetch(context, kdc_db_ctx, principal, flags, kvno, entry_ex); + return samba_kdc_fetch(context, kdc_db_ctx, principal, flags, 0, entry_ex); } static krb5_error_code hdb_samba4_firstkey(krb5_context context, HDB *db, unsigned flags, @@ -186,6 +201,7 @@ NTSTATUS hdb_samba4_create_kdc(struct samba_kdc_base_context *base_ctx, (*db)->hdb_open = hdb_samba4_open; (*db)->hdb_close = hdb_samba4_close; (*db)->hdb_fetch = hdb_samba4_fetch; + (*db)->hdb_fetch_kvno = hdb_samba4_fetch_kvno; (*db)->hdb_store = hdb_samba4_store; (*db)->hdb_remove = hdb_samba4_remove; (*db)->hdb_firstkey = hdb_samba4_firstkey; |