res_pjsip: Fail global load if debug or default_from_user are empty
authorGeorge Joseph <gjoseph@digium.com>
Thu, 11 Aug 2016 17:18:15 +0000 (11:18 -0600)
committerGeorge Joseph <gjoseph@digium.com>
Thu, 11 Aug 2016 17:33:14 +0000 (12:33 -0500)
If debug was specified in the global configuration but left blank,
the logger would treat it as a wildcard and log all hosts.  If
default_from_user was empty, a crash would result.

The global apply handler now checks for empty strings.

ASTERISK-26239 #close
ASTERISK-26238 #close

Change-Id: Ie75727f5cd5808845d92cc81f5713842fb203336

res/res_pjsip/config_global.c

index 8a1b0d4..975c5ee 100644 (file)
@@ -118,6 +118,18 @@ static int global_apply(const struct ast_sorcery *sorcery, void *obj)
        struct global_config *cfg = obj;
        char max_forwards[10];
 
+       if (ast_strlen_zero(cfg->debug)) {
+               ast_log(LOG_ERROR,
+                       "Global option 'debug' can't be empty.  Set it to a valid value or remove the entry to accept 'no' as the default\n");
+               return -1;
+       }
+
+       if (ast_strlen_zero(cfg->default_from_user)) {
+               ast_log(LOG_ERROR,
+                       "Global option 'default_from_user' can't be empty.  Set it to a valid value or remove the entry to accept 'asterisk' as the default\n");
+               return -1;
+       }
+
        snprintf(max_forwards, sizeof(max_forwards), "%u", cfg->max_forwards);
 
        ast_sip_add_global_request_header("Max-Forwards", max_forwards, 1);