From f66f21895f965ed6389daa1cc90f466f7fc1b155 Mon Sep 17 00:00:00 2001 From: Sean Bright <sean.bright@gmail.com> Date: Thu, 11 Apr 2019 12:03:07 -0400 Subject: [PATCH] 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 --- res/ael/pval.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/res/ael/pval.c b/res/ael/pval.c index bbfeb2d763..bcac63a3e3 100644 --- a/res/ael/pval.c +++ b/res/ael/pval.c @@ -760,10 +760,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; @@ -793,14 +793,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; } -- GitLab