diff options
author | murf <murf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-10-01 20:27:52 +0000 |
---|---|---|
committer | murf <murf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-10-01 20:27:52 +0000 |
commit | 662cae0c397d15d9d4f5ec30099fb07e711a7f26 (patch) | |
tree | 0a24f58db229ef47a1dee590a204f28aff967d14 /pbx | |
parent | 894a29908b919b808a4cffe77bc63db8cc50323b (diff) |
closes issue #10777 -- by returning a null for the parse tree when there's really nothing there, and making sure we don't try to do checking on a null tree.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@84239 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'pbx')
-rw-r--r-- | pbx/ael/ael.tab.c | 2 | ||||
-rw-r--r-- | pbx/ael/ael.y | 2 | ||||
-rw-r--r-- | pbx/pbx_ael.c | 8 |
3 files changed, 7 insertions, 5 deletions
diff --git a/pbx/ael/ael.tab.c b/pbx/ael/ael.tab.c index ba66f196f..53527ffe8 100644 --- a/pbx/ael/ael.tab.c +++ b/pbx/ael/ael.tab.c @@ -2123,8 +2123,8 @@ yyreduce: if (!(yyvsp[(5) - (6)].pval)) { ast_log(LOG_WARNING, "==== File: %s, Line %d, Cols: %d-%d: Warning! The empty context %s will be IGNORED!\n", my_file, (yylsp[(4) - (6)]).first_line, (yylsp[(4) - (6)]).first_column, (yylsp[(4) - (6)]).last_column, (yyvsp[(3) - (6)].str) ); + (yyval.pval) = 0; free((yyvsp[(3) - (6)].str)); - } else { (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[(1) - (6)]), &(yylsp[(6) - (6)])); (yyval.pval)->u1.str = (yyvsp[(3) - (6)].str); diff --git a/pbx/ael/ael.y b/pbx/ael/ael.y index 7cc758d7c..657e97067 100644 --- a/pbx/ael/ael.y +++ b/pbx/ael/ael.y @@ -204,8 +204,8 @@ context : opt_abstract KW_CONTEXT context_name LC elements RC { if (!$5) { ast_log(LOG_WARNING, "==== File: %s, Line %d, Cols: %d-%d: Warning! The empty context %s will be IGNORED!\n", my_file, @4.first_line, @4.first_column, @4.last_column, $3 ); + $$ = 0; free($3); - } else { $$ = npval2(PV_CONTEXT, &@1, &@6); $$->u1.str = $3; diff --git a/pbx/pbx_ael.c b/pbx/pbx_ael.c index ff9b95edb..af55c9315 100644 --- a/pbx/pbx_ael.c +++ b/pbx/pbx_ael.c @@ -109,9 +109,9 @@ void destroy_pval_item(pval *item); int is_float(char *arg ); int is_int(char *arg ); int is_empty(char *arg); -static pval *current_db; -static pval *current_context; -static pval *current_extension; +static pval *current_db=0; +static pval *current_context=0; +static pval *current_extension=0; static const char *match_context; static const char *match_exten; @@ -2733,6 +2733,8 @@ static void ael2_semantic_check(pval *item, int *arg_errs, int *arg_warns, int * #endif struct argapp *apps=0; + if (!item) + return; /* don't check an empty tree */ #ifdef AAL_ARGCHECK rfilename = alloca(10 + strlen(ast_config_AST_VAR_DIR)); sprintf(rfilename, "%s/applist", ast_config_AST_VAR_DIR); |