From bc5070d36f94acbe4b608b4e109f32838b5aab19 Mon Sep 17 00:00:00 2001 From: Nicolas Williams Date: Wed, 11 Mar 2020 13:40:02 -0500 Subject: [PATCH] krb5: Add krb5_set_config() for test_cc --- lib/krb5/context.c | 36 +++++++++++++++++++++++++++++++++ lib/krb5/libkrb5-exports.def.in | 1 + lib/krb5/version-script.map | 1 + 3 files changed, 38 insertions(+) diff --git a/lib/krb5/context.c b/lib/krb5/context.c index 733497b3c..7c0966826 100644 --- a/lib/krb5/context.c +++ b/lib/krb5/context.c @@ -764,6 +764,42 @@ krb5_set_config_files(krb5_context context, char **filenames) return ret; } +#ifndef HEIMDAL_SMALLER +/** + * Reinit the context from configuration file contents in a C string. + * This should only be used in tests. + * + * @param context context to add configuration too. + * @param config configuration. + * + * @return Returns 0 to indicate success. Otherwise an kerberos et + * error code is returned, see krb5_get_error_message(). + * + * @ingroup krb5 + */ + +KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL +krb5_set_config(krb5_context context, const char *config) +{ + krb5_error_code ret; + krb5_config_binding *tmp = NULL; + + if ((ret = krb5_config_parse_string_multi(context, config, &tmp))) + return ret; +#if 0 + /* with this enabled and if there are no config files, Kerberos is + considererd disabled */ + if(tmp == NULL) + return ENXIO; +#endif + + krb5_config_file_free(context, context->cf); + context->cf = tmp; + ret = init_context_from_config_file(context); + return ret; +} +#endif + static krb5_error_code add_file(char ***pfilenames, int *len, char *file) { diff --git a/lib/krb5/libkrb5-exports.def.in b/lib/krb5/libkrb5-exports.def.in index 341177550..db4a72e2a 100644 --- a/lib/krb5/libkrb5-exports.def.in +++ b/lib/krb5/libkrb5-exports.def.in @@ -601,6 +601,7 @@ EXPORTS krb5_sendto_ctx_set_type krb5_sendto_kdc krb5_sendto_kdc_flags + krb5_set_config krb5_set_config_files krb5_set_debug_dest krb5_set_default_in_tkt_etypes diff --git a/lib/krb5/version-script.map b/lib/krb5/version-script.map index 18d27dc8b..fcf1415cc 100644 --- a/lib/krb5/version-script.map +++ b/lib/krb5/version-script.map @@ -594,6 +594,7 @@ HEIMDAL_KRB5_2.0 { krb5_sendto_ctx_set_type; krb5_sendto_kdc; krb5_sendto_kdc_flags; + krb5_set_config; krb5_set_config_files; krb5_set_debug_dest; krb5_set_default_in_tkt_etypes;