]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: do NOT feed p_strconcat() with NULL
authorBaofeng <baofeng.wang@dovecot.com>
Mon, 11 Apr 2016 18:20:48 +0000 (21:20 +0300)
committerBaofeng Wang <baofeng.wang@dovecot.fi>
Fri, 3 Jun 2016 11:24:00 +0000 (14:24 +0300)
p_strconcat will never take NULL as an valid argument.
Check possible NULL string before calling it.

src/auth/auth.c

index 5598535a7bfe14b83af4d1a9aaedfc8db2aaefe7..3a591b14b42d69b54a8d5fc13f68486e2d9c396b 100644 (file)
@@ -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)