From 5397638a2fdc098a216353b007aafeff4b3df47f Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Thu, 4 Dec 2008 16:44:18 +0000 Subject: [PATCH] Fix a callerid parsing issue. If someone formatted callerid like the following: "name " (including the quotation marks), then the parts would be parsed as name: "name number: number This is because the closing quotation mark was not discovered since the number and everything after was parsed out of the string earlier. Now, there is a check to see if the closing quote occurs after the number, so that we can know if we should strip off the opening quote on the name. Closes AST-158 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@160943 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/callerid.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/main/callerid.c b/main/callerid.c index 860deae0ec..d446ecbb86 100644 --- a/main/callerid.c +++ b/main/callerid.c @@ -964,7 +964,6 @@ int ast_is_shrinkable_phonenumber(const char *exten) * input location name * " foo bar " <123> 123 ' foo bar ' (with spaces around) * " foo bar " NULL 'foo bar' (without spaces around) - * " foo bar <123>" 123 '" foo bar' * The parsing of leading and trailing space/quotes should be more consistent. */ int ast_callerid_parse(char *instr, char **name, char **location) @@ -978,6 +977,15 @@ int ast_callerid_parse(char *instr, char **name, char **location) if ((ns = strchr(instr, '"')) && (ne = strchr(ns + 1, '"'))) { *ns = *ne = '\0'; /* trim off the quotes */ *name = ns + 1; /* and this is the name */ + } else if (ns) { + /* An opening quote was found but no closing quote was. The closing + * quote may actually be after the end of the bracketed number + */ + if (strchr(le + 1, '\"')) { + *ns = '\0'; + *name = ns + 1; + ast_trim_blanks(*name); + } } else { /* no quotes, trim off leading and trailing spaces */ *name = ast_skip_blanks(instr); ast_trim_blanks(*name);