diff options
author | murf <murf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-12-09 18:13:39 +0000 |
---|---|---|
committer | murf <murf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-12-09 18:13:39 +0000 |
commit | da16f32ce784f7ad469714e646649cb6beb8ad4b (patch) | |
tree | bc1f41551cce3731934a9012631e31d98122f1ca /pbx | |
parent | acdaf89325e735dfa07e7911ad482d8b07c59662 (diff) |
Previous fix used ast_malloc and ast_copy_string and messed up the standalone stuff. Fixed.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@162136 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'pbx')
-rw-r--r-- | pbx/ael/ael.flex | 71 | ||||
-rw-r--r-- | pbx/ael/ael_lex.c | 113 |
2 files changed, 105 insertions, 79 deletions
diff --git a/pbx/ael/ael.flex b/pbx/ael/ael.flex index 6c9bf1827..f1c23d17b 100644 --- a/pbx/ael/ael.flex +++ b/pbx/ael/ael.flex @@ -302,8 +302,9 @@ includes { STORE_POS; return KW_INCLUDES;} /* a non-word constituent char, like a space, tab, curly, paren, etc */ char c = yytext[yyleng-1]; STORE_POS; - yylval->str = ast_malloc(yyleng); - ast_copy_string(yylval->str, yytext, yyleng); + yylval->str = malloc(yyleng); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng-1] = 0; unput(c); /* put this ending char back in the stream */ BEGIN(0); prev_word = yylval->str; @@ -314,8 +315,9 @@ includes { STORE_POS; return KW_INCLUDES;} STORE_LOC; ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Mismatched ')' in expression: %s !\n", my_file, my_lineno, my_col, yytext); BEGIN(0); - yylval->str = ast_malloc(yyleng+1); - ast_copy_string(yylval->str, yytext, yyleng+1); + yylval->str = malloc(yyleng+1); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng] = 0; return word; } parencount2--; @@ -342,8 +344,9 @@ includes { STORE_POS; return KW_INCLUDES;} ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Mismatched '%c' in expression!\n", my_file, my_lineno, my_col, c); BEGIN(0); - yylval->str = ast_malloc(yyleng+1); - ast_copy_string(yylval->str, yytext, yyleng+1); + yylval->str = malloc(yyleng+1); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng] = 0; return word; } yymore(); @@ -355,8 +358,9 @@ includes { STORE_POS; return KW_INCLUDES;} STORE_LOC; ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Mismatched ')' in expression: %s !\n", my_file, my_lineno, my_col, yytext); BEGIN(0); - yylval->str = ast_malloc(yyleng+1); - ast_copy_string(yylval->str, yytext, yyleng+1); + yylval->str = malloc(yyleng+1); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng] = 0; return word; } parencount3--; @@ -383,8 +387,9 @@ includes { STORE_POS; return KW_INCLUDES;} ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Mismatched '%c' in expression!\n", my_file, my_lineno, my_col, c); BEGIN(0); - yylval->str = ast_malloc(yyleng+1); - ast_copy_string(yylval->str, yytext, yyleng+1); + yylval->str = malloc(yyleng+1); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng] = 0; return word; } yymore(); @@ -403,8 +408,9 @@ includes { STORE_POS; return KW_INCLUDES;} STORE_LOC; ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Mismatched ')' in expression: %s !\n", my_file, my_lineno, my_col, yytext); BEGIN(0); - yylval->str = ast_malloc(yyleng+1); - ast_copy_string(yylval->str, yytext, yyleng+1); + yylval->str = malloc(yyleng+1); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng] = 0; prev_word = 0; return word; } @@ -413,8 +419,9 @@ includes { STORE_POS; return KW_INCLUDES;} yymore(); } else { STORE_LOC; - yylval->str = ast_malloc(yyleng); - ast_copy_string(yylval->str, yytext, yyleng); + yylval->str = malloc(yyleng); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng-1] = 0; unput(')'); BEGIN(0); return word; @@ -436,9 +443,10 @@ includes { STORE_POS; return KW_INCLUDES;} ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Mismatched '%c' in expression!\n", my_file, my_lineno, my_col, c); BEGIN(0); - yylval->str = ast_malloc(yyleng+1); - ast_copy_string(yylval->str, yytext, yyleng+1); - return word; + yylval->str = malloc(yyleng+1); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng] = 0; + return word; } yymore(); } @@ -465,8 +473,9 @@ includes { STORE_POS; return KW_INCLUDES;} STORE_LOC; ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Mismatched ')' in expression!\n", my_file, my_lineno, my_col); BEGIN(0); - yylval->str = ast_malloc(yyleng+1); - ast_copy_string(yylval->str, yytext, yyleng+1); + yylval->str = malloc(yyleng+1); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng] = 0; return word; } @@ -478,8 +487,8 @@ includes { STORE_POS; return KW_INCLUDES;} BEGIN(0); if ( !strcmp(yytext, ")") ) return RP; - yylval->str = ast_malloc(yyleng); - ast_copy_string(yylval->str, yytext, yyleng); + yylval->str = malloc(yyleng); + strncpy(yylval->str, yytext, yyleng); yylval->str[yyleng-1] = '\0'; /* trim trailing ')' */ unput(')'); return word; @@ -493,8 +502,9 @@ includes { STORE_POS; return KW_INCLUDES;} STORE_LOC; if( !strcmp(yytext,"," ) ) return COMMA; - yylval->str = ast_malloc(yyleng); - ast_copy_string(yylval->str, yytext, yyleng); + yylval->str = malloc(yyleng); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng-1] = '\0'; /* trim trailing ',' */ unput(','); return word; } @@ -506,8 +516,9 @@ includes { STORE_POS; return KW_INCLUDES;} STORE_LOC; ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Mismatched '%c' in expression!\n", my_file, my_lineno, my_col, c); BEGIN(0); - yylval->str = ast_malloc(yyleng+1); - ast_copy_string(yylval->str, yytext, yyleng+1); + yylval->str = malloc(yyleng+1); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng] = '\0'; return word; } yymore(); @@ -530,8 +541,9 @@ includes { STORE_POS; return KW_INCLUDES;} STORE_LOC; ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Mismatched '%c' in expression!\n", my_file, my_lineno, my_col, c); BEGIN(0); - yylval->str = ast_malloc(yyleng+1); - ast_copy_string(yylval->str, yytext, yyleng+1); + yylval->str = malloc(yyleng+1); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng] = '\0'; return word; } yymore(); @@ -539,8 +551,9 @@ includes { STORE_POS; return KW_INCLUDES;} <semic>{NOSEMIC}; { STORE_LOC; - yylval->str = ast_malloc(yyleng); - ast_copy_string(yylval->str, yytext, yyleng); + yylval->str = malloc(yyleng); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng-1] = '\0'; /* trim trailing ';' */ unput(';'); BEGIN(0); return word; diff --git a/pbx/ael/ael_lex.c b/pbx/ael/ael_lex.c index 9b880ea2b..172d2f5d2 100644 --- a/pbx/ael/ael_lex.c +++ b/pbx/ael/ael_lex.c @@ -1602,8 +1602,9 @@ YY_RULE_SETUP /* a non-word constituent char, like a space, tab, curly, paren, etc */ char c = yytext[yyleng-1]; STORE_POS; - yylval->str = ast_malloc(yyleng); - ast_copy_string(yylval->str, yytext, yyleng); + yylval->str = malloc(yyleng); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng-1] = 0; unput(c); /* put this ending char back in the stream */ BEGIN(0); prev_word = yylval->str; @@ -1613,14 +1614,15 @@ YY_RULE_SETUP case 56: /* rule 56 can match eol */ YY_RULE_SETUP -#line 312 "ael.flex" +#line 313 "ael.flex" { if ( pbcpop2('}') ) { /* error */ STORE_LOC; ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Mismatched ')' in expression: %s !\n", my_file, my_lineno, my_col, yytext); BEGIN(0); - yylval->str = ast_malloc(yyleng+1); - ast_copy_string(yylval->str, yytext, yyleng+1); + yylval->str = malloc(yyleng+1); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng] = 0; return word; } parencount2--; @@ -1635,7 +1637,7 @@ YY_RULE_SETUP case 57: /* rule 57 can match eol */ YY_RULE_SETUP -#line 330 "ael.flex" +#line 332 "ael.flex" { char c = yytext[yyleng-1]; if (c == '{') @@ -1647,7 +1649,7 @@ YY_RULE_SETUP case 58: /* rule 58 can match eol */ YY_RULE_SETUP -#line 338 "ael.flex" +#line 340 "ael.flex" { char c = yytext[yyleng-1]; if ( pbcpop2(c)) { /* error */ @@ -1655,8 +1657,9 @@ YY_RULE_SETUP ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Mismatched '%c' in expression!\n", my_file, my_lineno, my_col, c); BEGIN(0); - yylval->str = ast_malloc(yyleng+1); - ast_copy_string(yylval->str, yytext, yyleng+1); + yylval->str = malloc(yyleng+1); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng] = 0; return word; } yymore(); @@ -1665,14 +1668,15 @@ YY_RULE_SETUP case 59: /* rule 59 can match eol */ YY_RULE_SETUP -#line 353 "ael.flex" +#line 356 "ael.flex" { if ( pbcpop3(']') ) { /* error */ STORE_LOC; ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Mismatched ')' in expression: %s !\n", my_file, my_lineno, my_col, yytext); BEGIN(0); - yylval->str = ast_malloc(yyleng+1); - ast_copy_string(yylval->str, yytext, yyleng+1); + yylval->str = malloc(yyleng+1); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng] = 0; return word; } parencount3--; @@ -1687,7 +1691,7 @@ YY_RULE_SETUP case 60: /* rule 60 can match eol */ YY_RULE_SETUP -#line 371 "ael.flex" +#line 375 "ael.flex" { char c = yytext[yyleng-1]; if (c == '[') @@ -1699,7 +1703,7 @@ YY_RULE_SETUP case 61: /* rule 61 can match eol */ YY_RULE_SETUP -#line 379 "ael.flex" +#line 383 "ael.flex" { char c = yytext[yyleng-1]; if ( pbcpop3(c)) { /* error */ @@ -1707,8 +1711,9 @@ YY_RULE_SETUP ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Mismatched '%c' in expression!\n", my_file, my_lineno, my_col, c); BEGIN(0); - yylval->str = ast_malloc(yyleng+1); - ast_copy_string(yylval->str, yytext, yyleng+1); + yylval->str = malloc(yyleng+1); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng] = 0; return word; } yymore(); @@ -1724,14 +1729,15 @@ YY_RULE_SETUP case 62: /* rule 62 can match eol */ YY_RULE_SETUP -#line 401 "ael.flex" +#line 406 "ael.flex" { if ( pbcpop(')') ) { /* error */ STORE_LOC; ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Mismatched ')' in expression: %s !\n", my_file, my_lineno, my_col, yytext); BEGIN(0); - yylval->str = ast_malloc(yyleng+1); - ast_copy_string(yylval->str, yytext, yyleng+1); + yylval->str = malloc(yyleng+1); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng] = 0; prev_word = 0; return word; } @@ -1740,8 +1746,9 @@ YY_RULE_SETUP yymore(); } else { STORE_LOC; - yylval->str = ast_malloc(yyleng); - ast_copy_string(yylval->str, yytext, yyleng); + yylval->str = malloc(yyleng); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng-1] = 0; unput(')'); BEGIN(0); return word; @@ -1751,7 +1758,7 @@ YY_RULE_SETUP case 63: /* rule 63 can match eol */ YY_RULE_SETUP -#line 424 "ael.flex" +#line 431 "ael.flex" { char c = yytext[yyleng-1]; if (c == '(') @@ -1763,7 +1770,7 @@ YY_RULE_SETUP case 64: /* rule 64 can match eol */ YY_RULE_SETUP -#line 432 "ael.flex" +#line 439 "ael.flex" { char c = yytext[yyleng-1]; if ( pbcpop(c)) { /* error */ @@ -1771,9 +1778,10 @@ YY_RULE_SETUP ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Mismatched '%c' in expression!\n", my_file, my_lineno, my_col, c); BEGIN(0); - yylval->str = ast_malloc(yyleng+1); - ast_copy_string(yylval->str, yytext, yyleng+1); - return word; + yylval->str = malloc(yyleng+1); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng] = 0; + return word; } yymore(); } @@ -1789,7 +1797,7 @@ YY_RULE_SETUP case 65: /* rule 65 can match eol */ YY_RULE_SETUP -#line 455 "ael.flex" +#line 463 "ael.flex" { char c = yytext[yyleng-1]; if (c == '(') @@ -1801,14 +1809,15 @@ YY_RULE_SETUP case 66: /* rule 66 can match eol */ YY_RULE_SETUP -#line 463 "ael.flex" +#line 471 "ael.flex" { if ( pbcpop(')') ) { /* error */ STORE_LOC; ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Mismatched ')' in expression!\n", my_file, my_lineno, my_col); BEGIN(0); - yylval->str = ast_malloc(yyleng+1); - ast_copy_string(yylval->str, yytext, yyleng+1); + yylval->str = malloc(yyleng+1); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng] = 0; return word; } @@ -1820,8 +1829,8 @@ YY_RULE_SETUP BEGIN(0); if ( !strcmp(yytext, ")") ) return RP; - yylval->str = ast_malloc(yyleng); - ast_copy_string(yylval->str, yytext, yyleng); + yylval->str = malloc(yyleng); + strncpy(yylval->str, yytext, yyleng); yylval->str[yyleng-1] = '\0'; /* trim trailing ')' */ unput(')'); return word; @@ -1831,7 +1840,7 @@ YY_RULE_SETUP case 67: /* rule 67 can match eol */ YY_RULE_SETUP -#line 489 "ael.flex" +#line 498 "ael.flex" { if( parencount != 0) { /* ast_log(LOG_NOTICE,"Folding in a comma!\n"); */ yymore(); @@ -1839,8 +1848,9 @@ YY_RULE_SETUP STORE_LOC; if( !strcmp(yytext,"," ) ) return COMMA; - yylval->str = ast_malloc(yyleng); - ast_copy_string(yylval->str, yytext, yyleng); + yylval->str = malloc(yyleng); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng-1] = '\0'; /* trim trailing ',' */ unput(','); return word; } @@ -1849,15 +1859,16 @@ YY_RULE_SETUP case 68: /* rule 68 can match eol */ YY_RULE_SETUP -#line 503 "ael.flex" +#line 513 "ael.flex" { char c = yytext[yyleng-1]; if ( pbcpop(c) ) { /* error */ STORE_LOC; ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Mismatched '%c' in expression!\n", my_file, my_lineno, my_col, c); BEGIN(0); - yylval->str = ast_malloc(yyleng+1); - ast_copy_string(yylval->str, yytext, yyleng+1); + yylval->str = malloc(yyleng+1); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng] = '\0'; return word; } yymore(); @@ -1871,7 +1882,7 @@ YY_RULE_SETUP case 69: /* rule 69 can match eol */ YY_RULE_SETUP -#line 521 "ael.flex" +#line 532 "ael.flex" { char c = yytext[yyleng-1]; yymore(); @@ -1881,15 +1892,16 @@ YY_RULE_SETUP case 70: /* rule 70 can match eol */ YY_RULE_SETUP -#line 527 "ael.flex" +#line 538 "ael.flex" { char c = yytext[yyleng-1]; if ( pbcpop(c) ) { /* error */ STORE_LOC; ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Mismatched '%c' in expression!\n", my_file, my_lineno, my_col, c); BEGIN(0); - yylval->str = ast_malloc(yyleng+1); - ast_copy_string(yylval->str, yytext, yyleng+1); + yylval->str = malloc(yyleng+1); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng] = '\0'; return word; } yymore(); @@ -1898,11 +1910,12 @@ YY_RULE_SETUP case 71: /* rule 71 can match eol */ YY_RULE_SETUP -#line 540 "ael.flex" +#line 552 "ael.flex" { STORE_LOC; - yylval->str = ast_malloc(yyleng); - ast_copy_string(yylval->str, yytext, yyleng); + yylval->str = malloc(yyleng); + strncpy(yylval->str, yytext, yyleng); + yylval->str[yyleng-1] = '\0'; /* trim trailing ';' */ unput(';'); BEGIN(0); return word; @@ -1911,7 +1924,7 @@ YY_RULE_SETUP case 72: /* rule 72 can match eol */ YY_RULE_SETUP -#line 549 "ael.flex" +#line 562 "ael.flex" { char fnamebuf[1024],*p1,*p2; int glob_ret; @@ -1960,7 +1973,7 @@ case YY_STATE_EOF(comment): case YY_STATE_EOF(curlystate): case YY_STATE_EOF(wordstate): case YY_STATE_EOF(brackstate): -#line 590 "ael.flex" +#line 603 "ael.flex" { char fnamebuf[2048]; if (include_stack_index > 0 && include_stack[include_stack_index-1].globbuf_pos < include_stack[include_stack_index-1].globbuf.gl_pathc-1) { @@ -1995,10 +2008,10 @@ case YY_STATE_EOF(brackstate): YY_BREAK case 73: YY_RULE_SETUP -#line 622 "ael.flex" +#line 635 "ael.flex" ECHO; YY_BREAK -#line 2001 "ael_lex.c" +#line 2014 "ael_lex.c" case YY_END_OF_BUFFER: { @@ -3171,7 +3184,7 @@ void *ael_yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 622 "ael.flex" +#line 635 "ael.flex" |