From 6da033336e1b3f3749875d8e238adfcbebecf521 Mon Sep 17 00:00:00 2001 From: Taylor R Campbell Date: Tue, 20 Jun 2023 01:21:54 +0000 Subject: [PATCH] krb5/context: Sprinkle const and note strict aliasing violation. --- lib/krb5/context.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/lib/krb5/context.c b/lib/krb5/context.c index 57aba54df..cce88bd57 100644 --- a/lib/krb5/context.c +++ b/lib/krb5/context.c @@ -656,21 +656,24 @@ static void init_context_once(void *ctx) { krb5_context context = ctx; - char **dirs; + char **config_dirs = NULL; + const char *const *dirs; #ifdef _WIN32 - dirs = rk_UNCONST(sysplugin_dirs); + dirs = sysplugin_dirs; #else - dirs = krb5_config_get_strings(context, NULL, "libdefaults", - "plugin_dir", NULL); - if (dirs == NULL) - dirs = rk_UNCONST(sysplugin_dirs); + config_dirs = krb5_config_get_strings(context, NULL, "libdefaults", + "plugin_dir", NULL); + if (config_dirs != NULL) /* XXX strict aliasing violation */ + dirs = (const char *const *)config_dirs; + else + dirs = sysplugin_dirs; #endif - _krb5_load_plugins(context, "krb5", (const char **)dirs); + _krb5_load_plugins(context, "krb5", dirs); - if (dirs != rk_UNCONST(sysplugin_dirs)) - krb5_config_free_strings(dirs); + if (config_dirs) + krb5_config_free_strings(config_dirs); bindtextdomain(HEIMDAL_TEXTDOMAIN, HEIMDAL_LOCALEDIR); }