From: Sean Bright Date: Thu, 11 Apr 2019 16:03:07 +0000 (-0400) Subject: res_ael: Fix pattern matching against literal '+' X-Git-Tag: 16.4.0-rc1~30^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=71c7864d1d7e7aafda12cb4cb4ed8a2f02d8f4a1;p=thirdparty%2Fasterisk.git res_ael: Fix pattern matching against literal '+' When generating the regular expression that matches against existing extensions, we need to escape literal characters that can also be regular expression metacharacters. This was already being done for '*' but we need to do the same for '+'. In passing, remove some unreachable code - strcmp() is already run immediately when entering extension_matches(). ASTERISK-14939 #close Reported by: klaus3000 Change-Id: I8d2cccb3479168fba1b0a6704c52198b396468f1 --- diff --git a/res/ael/pval.c b/res/ael/pval.c index f927077a83..37d53ad57c 100644 --- a/res/ael/pval.c +++ b/res/ael/pval.c @@ -759,10 +759,10 @@ static int extension_matches(pval *here, const char *exten, const char *pattern) *r++ = '.'; *r++ = '*'; break; - case '*': + case '*': /* regex metacharacter */ + case '+': /* regex metacharacter */ *r++ = '\\'; - *r++ = '*'; - break; + /* fall through */ default: *r++ = *p; break; @@ -792,14 +792,9 @@ static int extension_matches(pval *here, const char *exten, const char *pattern) exten, pattern); */ return 1; } - - - } else { - if ( strcmp(exten,pattern) == 0 ) { - return 1; - } else - return 0; } + + return 0; }