aboutsummaryrefslogtreecommitdiffstats
path: root/pbx.c
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2006-01-21 20:20:06 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2006-01-21 20:20:06 +0000
commitb79bdab5ccbca07d025ef91df90959997f23f4b2 (patch)
tree9d40c6f14cd1fe15a10ee44dc26019c903d70ff6 /pbx.c
parent3ac4f666756277f3afb3c7c018a70558ddbff80b (diff)
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
Diffstat (limited to 'pbx.c')
-rw-r--r--pbx.c46
1 files changed, 34 insertions, 12 deletions
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) {