From: Greg Hudson Date: Fri, 1 Jul 2016 15:10:19 +0000 (-0400) Subject: Improve kdb5 error when default realm is unset X-Git-Tag: krb5-1.15-beta1~159 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4131988dec0199287765e1875fe0bbd375656a62;p=thirdparty%2Fkrb5.git Improve kdb5 error when default realm is unset When the default realm name is unspecified, and none was set in the krb5_context object, return KRB5_CONFIG_NODEFREALM from libkdb5 instead of the confusing KRB5_KDB_DBTYPE_NOTFOUND. To accomplish this, make kdb_get_library_name() return a krb5_error_code. ticket: 8448 target_version: 1.14-next target_version: 1.13-next tags: pullup --- diff --git a/src/lib/kdb/kdb5.c b/src/lib/kdb/kdb5.c index 2886d057fc..713b39d5c3 100644 --- a/src/lib/kdb/kdb5.c +++ b/src/lib/kdb/kdb5.c @@ -236,11 +236,13 @@ get_conf_section(krb5_context context, char **section) return 0; } -static char * -kdb_get_library_name(krb5_context kcontext) +static krb5_error_code +kdb_get_library_name(krb5_context kcontext, char **libname_out) { krb5_error_code status = 0; - char *result = NULL, *value = NULL, *lib = NULL, *defrealm = NULL; + char *value = NULL, *lib = NULL, *defrealm = NULL; + + *libname_out = NULL; status = krb5_get_default_realm(kcontext, &defrealm); if (status) @@ -269,12 +271,15 @@ kdb_get_library_name(krb5_context kcontext) goto clean_n_exit; } - result = strdup(lib); + *libname_out = strdup(lib); + if (*libname_out == NULL) + status = ENOMEM; + clean_n_exit: krb5_free_default_realm(kcontext, defrealm); profile_release_string(value); profile_release_string(lib); - return result; + return status; } static void @@ -553,9 +558,10 @@ krb5_db_setup_lib_handle(krb5_context kcontext) goto clean_n_exit; } - library = kdb_get_library_name(kcontext); + status = kdb_get_library_name(kcontext, &library); if (library == NULL) { - status = KRB5_KDB_DBTYPE_NOTFOUND; + k5_prependmsg(kcontext, status, + _("Cannot initialize database library")); goto clean_n_exit; }