summaryrefslogtreecommitdiffstats
path: root/src/lib/kdb
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2014-02-10 15:26:34 -0500
committerGreg Hudson <ghudson@mit.edu>2014-02-11 20:06:16 -0500
commit6625843761468d79b0121a97d16fb2ca1db7542e (patch)
tree23277bfa1619e83e5275ba074425b76f97035758 /src/lib/kdb
parent1e4bdcfed2c7bda94d5c135cc32a5993ca032501 (diff)
downloadkrb5-6625843761468d79b0121a97d16fb2ca1db7542e.tar.gz
krb5-6625843761468d79b0121a97d16fb2ca1db7542e.tar.xz
krb5-6625843761468d79b0121a97d16fb2ca1db7542e.zip
Correctly get default realm in kdb5.c
Call krb5_get_default_realm instead of directly accessing context->default_realm, to remove the requirement that krb5_get_default_realm or krb5_set_default_realm be used before krb5_db_open.
Diffstat (limited to 'src/lib/kdb')
-rw-r--r--src/lib/kdb/kdb5.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/lib/kdb/kdb5.c b/src/lib/kdb/kdb5.c
index ca2040d3bc..0af6a75f2f 100644
--- a/src/lib/kdb/kdb5.c
+++ b/src/lib/kdb/kdb5.c
@@ -212,12 +212,12 @@ static krb5_error_code
get_conf_section(krb5_context context, char **section)
{
krb5_error_code status;
- char *result = NULL;
- char *value = NULL;
+ char *result = NULL, *value = NULL, *defrealm;
*section = NULL;
- if (context->default_realm == NULL) {
+ status = krb5_get_default_realm(context, &defrealm);
+ if (status) {
krb5_set_error_message(context, KRB5_KDB_SERVER_INTERNAL_ERR,
_("No default realm set; cannot initialize "
"KDB"));
@@ -226,12 +226,13 @@ get_conf_section(krb5_context context, char **section)
status = profile_get_string(context->profile,
/* realms */
KDB_REALM_SECTION,
- context->default_realm,
+ defrealm,
/* under the realm name, database_module */
KDB_MODULE_POINTER,
/* default value is the realm name itself */
- context->default_realm,
+ defrealm,
&value);
+ krb5_free_default_realm(context, defrealm);
if (status)
return status;
result = strdup(value);
@@ -246,18 +247,19 @@ static char *
kdb_get_library_name(krb5_context kcontext)
{
krb5_error_code status = 0;
- char *result = NULL;
- char *value = NULL;
- char *lib = NULL;
+ char *result = NULL, *value = NULL, *lib = NULL, *defrealm = NULL;
+ status = krb5_get_default_realm(kcontext, &defrealm);
+ if (status)
+ goto clean_n_exit;
status = profile_get_string(kcontext->profile,
/* realms */
KDB_REALM_SECTION,
- kcontext->default_realm,
+ defrealm,
/* under the realm name, database_module */
KDB_MODULE_POINTER,
/* default value is the realm name itself */
- kcontext->default_realm,
+ defrealm,
&value);
if (status)
goto clean_n_exit;
@@ -276,6 +278,7 @@ kdb_get_library_name(krb5_context kcontext)
result = strdup(lib);
clean_n_exit:
+ krb5_free_default_realm(kcontext, defrealm);
profile_release_string(value);
profile_release_string(lib);
return result;