Change _kdc_db_fetch() to return the database pointer too if needed by

the consumer.


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@17904 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2006-08-23 11:45:16 +00:00
parent 03f49a749f
commit 599d3cf216
6 changed files with 18 additions and 11 deletions

View File

@@ -66,7 +66,8 @@ fetch_server (krb5_context context,
krb5_get_err_text(context, ret)); krb5_get_err_text(context, ret));
return ret; return ret;
} }
ret = _kdc_db_fetch(context, config, sprinc, HDB_F_GET_SERVER, server); ret = _kdc_db_fetch(context, config, sprinc, HDB_F_GET_SERVER,
NULL, server);
krb5_free_principal(context, sprinc); krb5_free_principal(context, sprinc);
if (ret) { if (ret) {
kdc_log(context, config, 0, kdc_log(context, config, 0,

View File

@@ -465,7 +465,8 @@ do_authenticate (krb5_context context,
client_name, from, server_name); client_name, from, server_name);
ret = _kdc_db_fetch4 (context, config, name, instance, ret = _kdc_db_fetch4 (context, config, name, instance,
config->v4_realm, HDB_F_GET_CLIENT, &client_entry); config->v4_realm, HDB_F_GET_CLIENT,
&client_entry);
if (ret) { if (ret) {
kdc_log(context, config, 0, "Client not found in database: %s: %s", kdc_log(context, config, 0, "Client not found in database: %s: %s",
client_name, krb5_get_err_text(context, ret)); client_name, krb5_get_err_text(context, ret));

View File

@@ -80,7 +80,7 @@ valid_princ(krb5_context context,
ret = krb5_unparse_name(context, princ, &s); ret = krb5_unparse_name(context, princ, &s);
if (ret) if (ret)
return FALSE; return FALSE;
ret = _kdc_db_fetch(context, ctx->config, princ, ctx->flags, &ent); ret = _kdc_db_fetch(context, ctx->config, princ, ctx->flags, NULL, &ent);
if (ret) { if (ret) {
kdc_log(context, ctx->config, 7, "Lookup %s failed: %s", s, kdc_log(context, ctx->config, 7, "Lookup %s failed: %s", s,
krb5_get_err_text (context, ret)); krb5_get_err_text (context, ret));
@@ -111,7 +111,7 @@ _kdc_db_fetch4(krb5_context context,
valid_princ, &ctx, 0, &p); valid_princ, &ctx, 0, &p);
if(ret) if(ret)
return ret; return ret;
ret = _kdc_db_fetch(context, config, p, flags, ent); ret = _kdc_db_fetch(context, config, p, flags, NULL, ent);
krb5_free_principal(context, p); krb5_free_principal(context, p);
return ret; return ret;
} }
@@ -383,7 +383,7 @@ _kdc_do_version4(krb5_context context,
} }
ret = _kdc_db_fetch(context, config, tgt_princ, ret = _kdc_db_fetch(context, config, tgt_princ,
HDB_F_GET_KRBTGT, &tgt); HDB_F_GET_KRBTGT, NULL, &tgt);
if(ret){ if(ret){
char *s; char *s;
s = kdc_log_msg(context, config, 0, "Ticket-granting ticket not " s = kdc_log_msg(context, config, 0, "Ticket-granting ticket not "

View File

@@ -897,7 +897,7 @@ _kdc_as_rep(krb5_context context,
client_name, from, server_name); client_name, from, server_name);
ret = _kdc_db_fetch(context, config, client_princ, ret = _kdc_db_fetch(context, config, client_princ,
HDB_F_GET_CLIENT, &client); HDB_F_GET_CLIENT, NULL, &client);
if(ret){ if(ret){
kdc_log(context, config, 0, "UNKNOWN -- %s: %s", client_name, kdc_log(context, config, 0, "UNKNOWN -- %s: %s", client_name,
krb5_get_err_text(context, ret)); krb5_get_err_text(context, ret));
@@ -906,7 +906,8 @@ _kdc_as_rep(krb5_context context,
} }
ret = _kdc_db_fetch(context, config, server_princ, ret = _kdc_db_fetch(context, config, server_princ,
HDB_F_GET_SERVER|HDB_F_GET_KRBTGT, &server); HDB_F_GET_SERVER|HDB_F_GET_KRBTGT,
NULL, &server);
if(ret){ if(ret){
kdc_log(context, config, 0, "UNKNOWN -- %s: %s", server_name, kdc_log(context, config, 0, "UNKNOWN -- %s: %s", server_name,
krb5_get_err_text(context, ret)); krb5_get_err_text(context, ret));

View File

@@ -696,7 +696,7 @@ tgs_parse_request(krb5_context context,
ap_req.ticket.sname, ap_req.ticket.sname,
ap_req.ticket.realm); ap_req.ticket.realm);
ret = _kdc_db_fetch(context, config, princ, HDB_F_GET_KRBTGT, krbtgt); ret = _kdc_db_fetch(context, config, princ, HDB_F_GET_KRBTGT, NULL, krbtgt);
if(ret) { if(ret) {
char *p; char *p;
@@ -925,7 +925,8 @@ tgs_build_reply(krb5_context context,
} }
_krb5_principalname2krb5_principal(&p, t->sname, t->realm); _krb5_principalname2krb5_principal(&p, t->sname, t->realm);
ret = _kdc_db_fetch(context, config, p, ret = _kdc_db_fetch(context, config, p,
HDB_F_GET_CLIENT|HDB_F_GET_SERVER, &uu); HDB_F_GET_CLIENT|HDB_F_GET_SERVER,
NULL, &uu);
krb5_free_principal(context, p); krb5_free_principal(context, p);
if(ret){ if(ret){
if (ret == HDB_ERR_NOENTRY) if (ret == HDB_ERR_NOENTRY)
@@ -976,7 +977,7 @@ tgs_build_reply(krb5_context context,
*/ */
server_lookup: server_lookup:
ret = _kdc_db_fetch(context, config, sp, HDB_F_GET_SERVER, &server); ret = _kdc_db_fetch(context, config, sp, HDB_F_GET_SERVER, NULL, &server);
if(ret){ if(ret){
const char *new_rlm; const char *new_rlm;
@@ -1026,7 +1027,7 @@ server_lookup:
goto out; goto out;
} }
ret = _kdc_db_fetch(context, config, cp, HDB_F_GET_CLIENT, &client); ret = _kdc_db_fetch(context, config, cp, HDB_F_GET_CLIENT, NULL, &client);
if(ret) { if(ret) {
const char *krbtgt_realm; const char *krbtgt_realm;

View File

@@ -42,6 +42,7 @@ _kdc_db_fetch(krb5_context context,
krb5_kdc_configuration *config, krb5_kdc_configuration *config,
krb5_const_principal principal, krb5_const_principal principal,
unsigned flags, unsigned flags,
HDB **db,
hdb_entry_ex **h) hdb_entry_ex **h)
{ {
hdb_entry_ex *ent; hdb_entry_ex *ent;
@@ -66,6 +67,8 @@ _kdc_db_fetch(krb5_context context,
ent); ent);
config->db[i]->hdb_close(context, config->db[i]); config->db[i]->hdb_close(context, config->db[i]);
if(ret == 0) { if(ret == 0) {
if (db)
*db = config->db[i];
*h = ent; *h = ent;
return 0; return 0;
} }