From: Baofeng Date: Mon, 11 Apr 2016 18:20:48 +0000 (+0300) Subject: auth: do NOT feed p_strconcat() with NULL X-Git-Tag: 2.3.0.rc1~3584 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a713bc6d09af82c7415ce773d3a187877037112e;p=thirdparty%2Fdovecot%2Fcore.git auth: do NOT feed p_strconcat() with NULL p_strconcat will never take NULL as an valid argument. Check possible NULL string before calling it. --- diff --git a/src/auth/auth.c b/src/auth/auth.c index 5598535a7b..3a591b14b4 100644 --- a/src/auth/auth.c +++ b/src/auth/auth.c @@ -95,9 +95,14 @@ auth_passdb_preinit(struct auth *auth, const struct auth_passdb_settings *set, auth_passdb->passdb = passdb_preinit(auth->pool, set); /* make sure any %variables in default_fields exist in cache_key */ - auth_passdb->cache_key = - p_strconcat(auth->pool, auth_passdb->passdb->default_cache_key, - set->default_fields, NULL); + if (auth_passdb->passdb->default_cache_key != NULL) { + auth_passdb->cache_key = + p_strconcat(auth->pool, auth_passdb->passdb->default_cache_key, + set->default_fields, NULL); + } + else { + auth_passdb->cache_key = NULL; + } } static void @@ -127,9 +132,14 @@ auth_userdb_preinit(struct auth *auth, const struct auth_userdb_settings *set) auth_userdb->userdb = userdb_preinit(auth->pool, set); /* make sure any %variables in default_fields exist in cache_key */ - auth_userdb->cache_key = - p_strconcat(auth->pool, auth_userdb->userdb->default_cache_key, - set->default_fields, NULL); + if (auth_userdb->userdb->default_cache_key != NULL) { + auth_userdb->cache_key = + p_strconcat(auth->pool, auth_userdb->userdb->default_cache_key, + set->default_fields, NULL); + } + else { + auth_userdb->cache_key = NULL; + } } static bool auth_passdb_list_have_verify_plain(const struct auth *auth)