diff options
author | George Joseph <george.joseph@fairview5.com> | 2016-03-06 13:38:41 -0700 |
---|---|---|
committer | George Joseph <george.joseph@fairview5.com> | 2016-03-07 13:16:41 -0600 |
commit | d2eb65f71e9347c15d469579bbb20c47501d924b (patch) | |
tree | 7146e406d5ab4a30eebbf6b62161a9d219f98cca /res/res_pjsip_endpoint_identifier_ip.c | |
parent | ee5a9442a295eedf05b998ef1b5c101832d6673f (diff) |
res_pjsip: Strip spaces from items parsed from comma-separated lists
Configurations like "aors = a, b, c" were either ignoring everything after "a"
or trying to look up " b". Same for mailboxes, ciphers, contacts and a few
others.
To fix, all the strsep(©, ",") calls have been wrapped in ast_strip. To
facilitate this, ast_strip, ast_skip_blanks and ast_skip_nonblanks were
updated to handle null pointers.
In some cases, an ast_strlen_zero() test was added to skip consecutive commas.
There was also an attempt to ast_free an ast_strdupa'd string in
ast_sip_for_each_aor which was causing a SEGV. I removed it.
Although this issue was reported for realtime, the issue was in the res_pjsip
modules so all config mechanisms were affected.
ASTERISK-25829 #close
Reported-by: Mateusz Kowalski
Change-Id: I0b22a2cf22a7c1c50d4ecacbfa540155bec0e7a2
Diffstat (limited to 'res/res_pjsip_endpoint_identifier_ip.c')
-rw-r--r-- | res/res_pjsip_endpoint_identifier_ip.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/res/res_pjsip_endpoint_identifier_ip.c b/res/res_pjsip_endpoint_identifier_ip.c index f73bdae7e..016e0b4ad 100644 --- a/res/res_pjsip_endpoint_identifier_ip.c +++ b/res/res_pjsip_endpoint_identifier_ip.c @@ -164,11 +164,15 @@ static int ip_identify_match_handler(const struct aco_option *opt, struct ast_va return 0; } - while ((current_string = strsep(&input_string, ","))) { + while ((current_string = ast_strip(strsep(&input_string, ",")))) { struct ast_sockaddr *addrs; int num_addrs = 0, error = 0, i; char *mask = strrchr(current_string, '/'); + if (ast_strlen_zero(current_string)) { + continue; + } + if (mask) { identify->matches = ast_append_ha("d", current_string, identify->matches, &error); |