Merged revisions 244331 via svnmerge from

https://origsvn.digium.com/svn/asterisk/trunk

........
  r244331 | tilghman | 2010-02-02 12:54:33 -0600 (Tue, 02 Feb 2010) | 9 lines
  
  Correct some off-by-one errors, especially when expressions don't contain expected spaces.
  
  Also include the tests provided by the reporter, as regression tests.
  
  (closes issue #16667)
   Reported by: wdoekes
   Patches: 
         astsvn-func_match-off-by-one.diff uploaded by wdoekes (license 717)
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@244334 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.2
Tilghman Lesher 15 years ago
parent 8cc41858e7
commit 29bbb76c71

@ -143,47 +143,47 @@ static int math(struct ast_channel *chan, const char *cmd, char *parse,
*op = '\0';
} else if ((op = strstr(mvalue1, "AND"))) {
iaction = BITWISEANDFUNCTION;
op += 3;
*op = '\0';
op += 2;
} else if ((op = strstr(mvalue1, "XOR"))) {
iaction = BITWISEXORFUNCTION;
op += 3;
*op = '\0';
op += 2;
} else if ((op = strstr(mvalue1, "OR"))) {
iaction = BITWISEORFUNCTION;
op += 2;
*op = '\0';
++op;
} else if ((op = strchr(mvalue1, '>'))) {
iaction = GTFUNCTION;
*op = '\0';
if (*(op + 1) == '=') {
*++op = '\0';
iaction = GTEFUNCTION;
++op;
} else if (*(op + 1) == '>') {
*++op = '\0';
iaction = SHRIGHTFUNCTION;
++op;
}
} else if ((op = strchr(mvalue1, '<'))) {
iaction = LTFUNCTION;
*op = '\0';
if (*(op + 1) == '=') {
*++op = '\0';
iaction = LTEFUNCTION;
++op;
} else if (*(op + 1) == '<') {
*++op = '\0';
iaction = SHLEFTFUNCTION;
++op;
}
} else if ((op = strchr(mvalue1, '='))) {
*op = '\0';
if (*(op + 1) == '=') {
*++op = '\0';
iaction = EQFUNCTION;
++op;
} else
op = NULL;
} else if ((op = strchr(mvalue1, '+'))) {
iaction = ADDFUNCTION;
*op = '\0';
} else if ((op = strchr(mvalue1, '-'))) { /* subtraction MUST always be last, in case we have a negative first number */
} else if ((op = strchr(mvalue1, '-'))) { /* subtraction MUST always be last, in case we have a negative second number */
iaction = SUBTRACTFUNCTION;
*op = '\0';
}

Loading…
Cancel
Save