From b79bdab5ccbca07d025ef91df90959997f23f4b2 Mon Sep 17 00:00:00 2001 From: russell Date: Sat, 21 Jan 2006 20:20:06 +0000 Subject: finish reverting my pass through the tree to remove checks of the result of ast_strdupa, this one is revision 8362 git-svn-id: http://svn.digium.com/svn/asterisk/trunk@8401 f38db490-d61c-443f-a65b-d21fe96a405b --- pbx.c | 46 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 12 deletions(-) (limited to 'pbx.c') diff --git a/pbx.c b/pbx.c index 79a2f6d3f..99840addf 100644 --- a/pbx.c +++ b/pbx.c @@ -1220,6 +1220,10 @@ char *ast_func_read(struct ast_channel *chan, const char *in, char *workspace, s struct ast_custom_function *acfptr; function = ast_strdupa(in); + if (!function) { + ast_log(LOG_ERROR, "Out of memory\n"); + return ret; + } if ((args = strchr(function, '('))) { *args = '\0'; args++; @@ -1251,6 +1255,10 @@ void ast_func_write(struct ast_channel *chan, const char *in, const char *value) struct ast_custom_function *acfptr; function = ast_strdupa(in); + if (!function) { + ast_log(LOG_ERROR, "Out of memory\n"); + return; + } if ((args = strchr(function, '('))) { *args = '\0'; args++; @@ -3341,7 +3349,7 @@ static int handle_show_dialplan(int fd, int argc, char *argv[]) if (argc == 3) { char *splitter = ast_strdupa(argv[2]); /* is there a '@' character? */ - if (strchr(argv[2], '@')) { + if (splitter && strchr(argv[2], '@')) { /* yes, split into exten & context ... */ exten = strsep(&splitter, "@"); context = splitter; @@ -5138,6 +5146,10 @@ static int pbx_builtin_resetcdr(struct ast_channel *chan, void *data) if (!ast_strlen_zero(data)) { args = ast_strdupa(data); + if (!args) { + ast_log(LOG_ERROR, "Out of memory!\n"); + return -1; + } ast_app_parse_options(resetcdr_opts, &flags, NULL, args); } @@ -5175,7 +5187,7 @@ static int pbx_builtin_hangup(struct ast_channel *chan, void *data) */ static int pbx_builtin_gotoiftime(struct ast_channel *chan, void *data) { - int res = 0; + int res=0; char *s, *ts; struct ast_timing timing; @@ -5184,15 +5196,18 @@ static int pbx_builtin_gotoiftime(struct ast_channel *chan, void *data) return -1; } - ts = s = ast_strdupa(data); + if ((s = ast_strdupa(data))) { + ts = s; - /* Separate the Goto path */ - strsep(&ts,"?"); + /* Separate the Goto path */ + strsep(&ts,"?"); - /* struct ast_include include contained garbage here, fixed by zeroing it on get_timerange */ - if (ast_build_timing(&timing, s) && ast_check_timing(&timing)) - res = pbx_builtin_goto(chan, (void *)ts); - + /* struct ast_include include contained garbage here, fixed by zeroing it on get_timerange */ + if (ast_build_timing(&timing, s) && ast_check_timing(&timing)) + res = pbx_builtin_goto(chan, (void *)ts); + } else { + ast_log(LOG_ERROR, "Memory Error!\n"); + } return res; } @@ -5212,11 +5227,17 @@ static int pbx_builtin_execiftime(struct ast_channel *chan, void *data) return -1; } - ptr2 = ptr1 = ast_strdupa(data); + ptr1 = ast_strdupa(data); + + if (!ptr1) { + ast_log(LOG_ERROR, "Out of Memory!\n"); + return -1; + } + ptr2 = ptr1; /* Separate the Application data ptr1 is the time spec ptr2 is the app|data */ strsep(&ptr2,"?"); - if (!ast_build_timing(&timing, ptr1)) { + if(!ast_build_timing(&timing, ptr1)) { ast_log(LOG_WARNING, "Invalid Time Spec: %s\nCorrect usage: %s\n", ptr1, usage); res = -1; } @@ -5983,7 +6004,8 @@ int ast_parseable_goto(struct ast_channel *chan, const char *goto_string) ast_log(LOG_WARNING, "Goto requires an argument (optional context|optional extension|priority)\n"); return -1; } - stringp = s = ast_strdupa(goto_string); + s = ast_strdupa(goto_string); + stringp=s; context = strsep(&stringp, "|"); exten = strsep(&stringp, "|"); if (!exten) { -- cgit v1.2.3