}
argcopy = ast_strdupa(data);
+ if (!argcopy) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
AST_STANDARD_APP_ARGS(arglist,argcopy);
struct ast_flags flags;
signed char zero_volume = 0;
- args = ast_strdupa(data);
+ if (!(args = ast_strdupa((char *)data))) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ return -1;
+ }
LOCAL_USER_ADD(u);
LOCAL_USER_ACF_ADD(u);
info = ast_strdupa(data);
+ if (!info) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ LOCAL_USER_REMOVE(u);
+ return buf;
+ }
AST_STANDARD_APP_ARGS(args, info);
LOCAL_USER_ADD(u);
argv = ast_strdupa(data);
+ if (!argv) {
+ ast_log(LOG_ERROR, "Memory allocation failed\n");
+ LOCAL_USER_REMOVE(u);
+ return 0;
+ }
if (strchr(argv, '/')) {
family = strsep(&argv, "/");
LOCAL_USER_ADD(u);
argv = ast_strdupa(data);
+ if (!argv) {
+ ast_log (LOG_ERROR, "Memory allocation failed\n");
+ LOCAL_USER_REMOVE(u);
+ return 0;
+ }
if (strchr(argv, '/')) {
family = strsep(&argv, "/");
LOCAL_USER_ADD(u);
- parse = ast_strdupa(data);
+ if (!(parse = ast_strdupa(data))) {
+ ast_log(LOG_WARNING, "Memory allocation failure\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
AST_STANDARD_APP_ARGS(args, parse);
LOCAL_USER_ADD(u);
announce = ast_strdupa(data);
+ if (!announce) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
memset(&peerflags, 0, sizeof(peerflags));
snprintf(dftbase, sizeof(dftbase), "%s/dictate", ast_config_AST_SPOOL_DIR);
if (!ast_strlen_zero(data)) {
parse = ast_strdupa(data);
+ if (!parse) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ return -1;
+ }
AST_STANDARD_APP_ARGS(args, parse);
} else
args.argc = 0;
parse = ast_strdupa(data);
+ if (!parse) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
+
AST_STANDARD_APP_ARGS(args, parse);
if (args.options) {
ast_log(LOG_DEBUG, "Responsetimeout: %d\n", firstdigittimeout);
tmp = ast_strdupa(data);
+ if (!tmp) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
AST_STANDARD_APP_ARGS(args, tmp);
/* Check and parse arguments */
if (data) {
- s = ast_strdupa(data);
- appname = strsep(&s, "(");
+ s = ast_strdupa((char *)data);
if (s) {
- endargs = strrchr(s, ')');
- if (endargs)
- *endargs = '\0';
- pbx_substitute_variables_helper(chan, s, args, MAXRESULT - 1);
- }
- if (appname) {
- app = pbx_findapp(appname);
- if (app) {
- res = pbx_exec(chan, app, args, 1);
- } else {
- ast_log(LOG_WARNING, "Could not find application (%s)\n", appname);
- res = -1;
+ appname = strsep(&s, "(");
+ if (s) {
+ endargs = strrchr(s, ')');
+ if (endargs)
+ *endargs = '\0';
+ pbx_substitute_variables_helper(chan, s, args, MAXRESULT - 1);
+ }
+ if (appname) {
+ app = pbx_findapp(appname);
+ if (app) {
+ res = pbx_exec(chan, app, args, 1);
+ } else {
+ ast_log(LOG_WARNING, "Could not find application (%s)\n", appname);
+ res = -1;
+ }
}
+ } else {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ res = -1;
}
}
}
buf = ast_strdupa(data);
+ if (!buf) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
argc = ast_app_separate_args(buf, '|', argv, sizeof(argv) / sizeof(argv[0]));
}
data = ast_strdupa(vdata);
+ if (!data) {
+ ast_log(LOG_ERROR, "Out of memery\n");
+ ast_config_destroy(cfg);
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
intstr = strchr(data, '|');
if (intstr) {
LOCAL_USER_ADD(u);
input = ast_strdupa((char *)data);
+ if (! input) {
+ ast_log(LOG_ERROR, "Out of memory error\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
AST_STANDARD_APP_ARGS(args, input);
buf[0] = '\0';
argsstr = ast_strdupa(data);
+ if (!argsstr) {
+ ast_log(LOG_ERROR, "Out of memory");
+ LOCAL_USER_REMOVE(u);
+ return buf;
+ }
AST_STANDARD_APP_ARGS(args, argsstr);
LOCAL_USER_ADD(u);
- parse = ast_strdupa(data);
+ if (!(parse = ast_strdupa(data))) {
+ ast_log(LOG_WARNING, "Memory Error!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
AST_STANDARD_APP_ARGS(args, parse);
LOCAL_USER_ADD(u);
expr = ast_strdupa(data);
+ if (!expr) {
+ ast_log(LOG_ERROR, "Out of Memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
if ((label_a = strchr(expr, '?'))) {
*label_a = '\0';
continue;
parse = ast_strdupa(var->value);
+ if (!parse) {
+ ast_log(LOG_ERROR, "Out of Memory!\n");
+ return NULL;
+ }
AST_STANDARD_APP_ARGS(args, parse);
if (!strcasecmp(args.confno, confno)) {
LOCAL_USER_ADD(u);
localdata = ast_strdupa(data);
+ if (!localdata) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
AST_STANDARD_APP_ARGS(args, localdata);
LOCAL_USER_ADD(u);
- parse = ast_strdupa(data);
+ if (!(parse = ast_strdupa(data))) {
+ ast_log(LOG_WARNING, "Memory Error!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
AST_STANDARD_APP_ARGS(args, parse);
LOCAL_USER_ADD(u);
temp = ast_strdupa(data);
+ if (!temp) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
AST_STANDARD_APP_ARGS(args, temp);
LOCAL_USER_ADD(u);
temp = ast_strdupa(data);
+ if (!temp) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
AST_STANDARD_APP_ARGS(args, temp);
LOCAL_USER_ADD(u);
temp = ast_strdupa(data);
+ if (!temp) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
AST_STANDARD_APP_ARGS(args, temp);
};
options = ast_strdupa(data);
+ if (!options) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
tmp = strsep(&options, "|");
if (options)
}
tmp = ast_strdupa(data);
+ if (!tmp) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ return -1;
+ }
LOCAL_USER_ADD(u);
AST_STANDARD_APP_ARGS(args, tmp);
if (!ast_strlen_zero((char *)data))
{
parse = ast_strdupa(data);
+ if (!parse) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
AST_STANDARD_APP_ARGS(args, parse);
LOCAL_USER_ADD(u);
- parse = ast_strdupa(data);
+ if (!(parse = ast_strdupa(data))) {
+ ast_log(LOG_WARNING, "Memory Error!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
AST_STANDARD_APP_ARGS(args, parse);
LOCAL_USER_ADD(u);
- parse = ast_strdupa(data);
+ if (!(parse = ast_strdupa(data))) {
+ ast_log(LOG_WARNING, "Memory Error!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
AST_STANDARD_APP_ARGS(args, parse);
LOCAL_USER_ADD(u);
- parse = ast_strdupa(data);
+ if (!(parse = ast_strdupa(data))) {
+ ast_log(LOG_WARNING, "Memory Error!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
AST_STANDARD_APP_ARGS(args, parse);
LOCAL_USER_ADD(u);
- if (!(parse = ast_strdupa(data))) {
- ast_log(LOG_WARNING, "Memory Error!\n");
- LOCAL_USER_REMOVE(u);
- return -1;
- }
+ parse = ast_strdupa(data);
AST_STANDARD_APP_ARGS(args, parse);
LOCAL_USER_ADD(u);
s = ast_strdupa(data);
+ if (!s) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
prob = strsep(&s,":");
if ((!prob) || (sscanf(prob, "%d", &probint) != 1))
LOCAL_USER_ADD(u);
argcopy = ast_strdupa(data);
+ if (!argcopy) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
AST_STANDARD_APP_ARGS(arglist, argcopy);
LOCAL_USER_ADD(u);
s = ast_strdupa(data);
+ if (!s) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
varname = strsep(&s, "=");
file = strsep(&s, "|");
LOCAL_USER_ADD(u);
- family = ast_strdupa(data);
- if ((colmatch = strchr(family,'|'))) {
- crop_data(colmatch);
- if ((value = strchr(colmatch,'|'))) {
- crop_data(value);
- if ((newcol = strchr(value,'|'))) {
- crop_data(newcol);
- if ((newval = strchr(newcol,'|')))
- crop_data(newval);
+ if ((family = ast_strdupa(data))) {
+ if ((colmatch = strchr(family,'|'))) {
+ crop_data(colmatch);
+ if ((value = strchr(colmatch,'|'))) {
+ crop_data(value);
+ if ((newcol = strchr(value,'|'))) {
+ crop_data(newcol);
+ if ((newval = strchr(newcol,'|')))
+ crop_data(newval);
+ }
}
}
}
- if (!newval) {
+ if (! (family && value && colmatch && newcol && newval) ) {
ast_log(LOG_ERROR,"Invalid input: usage %s\n",UUSAGE);
res = -1;
} else {
LOCAL_USER_ADD(u);
- family = ast_strdupa(data);
- if ((colmatch = strchr(family,'|'))) {
- crop_data(colmatch);
- if ((value = strchr(colmatch,'|'))) {
- crop_data(value);
- if ((prefix = strchr(value,'|')))
- crop_data(prefix);
+ if ((family = ast_strdupa(data))) {
+ if ((colmatch = strchr(family,'|'))) {
+ crop_data(colmatch);
+ if ((value = strchr(colmatch,'|'))) {
+ crop_data(value);
+ if ((prefix = strchr(value,'|')))
+ crop_data(prefix);
+ }
}
}
- if (!value) {
+ if (! (family && value && colmatch) ) {
ast_log(LOG_ERROR,"Invalid input: usage %s\n",USAGE);
res = -1;
} else {
/* Yay for strsep being easy */
vdata = ast_strdupa(data);
+ if (!vdata) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
p = vdata;
filename = strsep(&p, "|");
}
if (data) {
- s = ast_strdupa(data);
- timec = strsep(&s,"|");
- if ((timec) && (*timec != '\0')) {
- long timein;
- if (sscanf(timec,"%ld",&timein) == 1) {
- unixtime = (time_t)timein;
- }
- }
+ s = data;
+ s = ast_strdupa(s);
if (s) {
- zone = strsep(&s,"|");
- if (zone && (*zone == '\0'))
- zone = NULL;
+ timec = strsep(&s,"|");
+ if ((timec) && (*timec != '\0')) {
+ long timein;
+ if (sscanf(timec,"%ld",&timein) == 1) {
+ unixtime = (time_t)timein;
+ }
+ }
if (s) {
- format = s;
+ zone = strsep(&s,"|");
+ if (zone && (*zone == '\0'))
+ zone = NULL;
+ if (s) {
+ format = s;
+ }
}
+ } else {
+ ast_log(LOG_ERROR, "Out of memory error\n");
}
}
LOCAL_USER_ADD(u);
digits = ast_strdupa(data);
+ if (!digits) {
+ ast_log(LOG_ERROR, "Out of Memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
if ((to = strchr(digits,'|'))) {
*to = '\0';
ast_log(LOG_WARNING, "SendText requires an argument (text[|options])\n");
LOCAL_USER_REMOVE(u);
return -1;
- } else
+ } else {
parse = ast_strdupa(data);
+ if (!parse) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
+ }
AST_STANDARD_APP_ARGS(args, parse);
LOCAL_USER_ADD(u);
tmp = ast_strdupa(data);
+ if (!tmp) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
opt = strchr(tmp, '|');
if (opt) {
/* We need to make a copy of the input string if we are going to modify it! */
args = ast_strdupa(data);
+ if (!args) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
if ((argc = ast_app_separate_args(args, '|', argv, sizeof(argv) / sizeof(argv[0])))) {
dummy = argv[0];
}
args = ast_strdupa((char *)data);
+ if (!args) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ return -1;
+ }
LOCAL_USER_ADD(u);
LOCAL_USER_ADD(u);
tmp = ast_strdupa(data);
+ if (!tmp) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
stringp=tmp;
strsep(&stringp, "|");
LOCAL_USER_ADD(u);
- if (ast_strlen_zero(data)) {
+ if (ast_strlen_zero((char *)data)) {
ast_log(LOG_WARNING, "Transfer requires an argument ([Tech/]destination[|options])\n");
LOCAL_USER_REMOVE(u);
pbx_builtin_setvar_helper(chan, "TRANSFERSTATUS", "FAILURE");
return 0;
+ } else {
+ parse = ast_strdupa(data);
+ if (!parse) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
}
-
- parse = ast_strdupa(data);
AST_STANDARD_APP_ARGS(args, parse);
LOCAL_USER_ADD(u);
- stringp = tmp = ast_strdupa(data);
+ tmp = ast_strdupa(data);
+ if (!tmp) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
+ stringp=tmp;
strsep(&stringp, "|");
options = strsep(&stringp, "|");
if (options && !strcasecmp(options, "wait"))
LOCAL_USER_ADD(u);
info = ast_strdupa(data);
+ if (!info) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
snprintf(eventname, sizeof(eventname), "UserEvent%s", info);
eventbody = strchr(eventname, '|');
LOCAL_USER_ADD(u);
if (data) {
- vtext = ast_strdupa(data);
- char *tmp = strsep(&vtext, "|,");
+ vtext = ast_strdupa((char *)data);
if (vtext) {
- if (sscanf(tmp, "%d", &vsize) != 1) {
+ char *tmp = strsep(&vtext, "|,");
+ if (vtext) {
+ if (sscanf(tmp, "%d", &vsize) != 1) {
+ vsize = 0;
+ ast_log(LOG_WARNING, "'%s' is not a verboser number\n", vtext);
+ }
+ } else {
+ vtext = tmp;
vsize = 0;
- ast_log(LOG_WARNING, "'%s' is not a verboser number\n", vtext);
}
- } else {
- vtext = tmp;
- vsize = 0;
- }
- if (option_verbose >= vsize) {
- switch (vsize) {
- case 0:
- ast_verbose("%s\n", vtext);
- break;
- case 1:
- ast_verbose(VERBOSE_PREFIX_1 "%s\n", vtext);
- break;
- case 2:
- ast_verbose(VERBOSE_PREFIX_2 "%s\n", vtext);
- break;
- case 3:
- ast_verbose(VERBOSE_PREFIX_3 "%s\n", vtext);
- break;
- default:
- ast_verbose(VERBOSE_PREFIX_4 "%s\n", vtext);
+ if (option_verbose >= vsize) {
+ switch (vsize) {
+ case 0:
+ ast_verbose("%s\n", vtext);
+ break;
+ case 1:
+ ast_verbose(VERBOSE_PREFIX_1 "%s\n", vtext);
+ break;
+ case 2:
+ ast_verbose(VERBOSE_PREFIX_2 "%s\n", vtext);
+ break;
+ case 3:
+ ast_verbose(VERBOSE_PREFIX_3 "%s\n", vtext);
+ break;
+ default:
+ ast_verbose(VERBOSE_PREFIX_4 "%s\n", vtext);
+ }
}
+ } else {
+ ast_log(LOG_ERROR, "Out of memory\n");
}
}
}
ltext = ast_strdupa(data);
+ if (!ltext) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ LOCAL_USER_REMOVE(u);
+ return 0;
+ }
level = strsep(<ext, "|");
snprintf(ext_context, sizeof(ext_context), "%s@%s", vmu->mailbox, vmu->context);
/* Attach only the first format */
- stringp = fmt = ast_strdupa(fmt);
- strsep(&stringp, "|");
-
- if (!ast_strlen_zero(vmu->email)) {
- int attach_user_voicemail = ast_test_flag((&globalflags), VM_ATTACH);
- char *myserveremail = serveremail;
- attach_user_voicemail = ast_test_flag(vmu, VM_ATTACH);
- if (!ast_strlen_zero(vmu->serveremail))
- myserveremail = vmu->serveremail;
- sendmail(myserveremail, vmu, msgnum, vmu->context, vmu->mailbox, cidnum, cidname, fn, fmt, duration, attach_user_voicemail, category);
- }
-
- if (!ast_strlen_zero(vmu->pager)) {
- char *myserveremail = serveremail;
- if (!ast_strlen_zero(vmu->serveremail))
- myserveremail = vmu->serveremail;
- sendpage(myserveremail, vmu->pager, msgnum, vmu->context, vmu->mailbox, cidnum, cidname, duration, vmu, category);
+ fmt = ast_strdupa(fmt);
+ if (fmt) {
+ stringp = fmt;
+ strsep(&stringp, "|");
+
+ if (!ast_strlen_zero(vmu->email)) {
+ int attach_user_voicemail = ast_test_flag((&globalflags), VM_ATTACH);
+ char *myserveremail = serveremail;
+ attach_user_voicemail = ast_test_flag(vmu, VM_ATTACH);
+ if (!ast_strlen_zero(vmu->serveremail))
+ myserveremail = vmu->serveremail;
+ sendmail(myserveremail, vmu, msgnum, vmu->context, vmu->mailbox, cidnum, cidname, fn, fmt, duration, attach_user_voicemail, category);
+ }
+
+ if (!ast_strlen_zero(vmu->pager)) {
+ char *myserveremail = serveremail;
+ if (!ast_strlen_zero(vmu->serveremail))
+ myserveremail = vmu->serveremail;
+ sendpage(myserveremail, vmu->pager, msgnum, vmu->context, vmu->mailbox, cidnum, cidname, duration, vmu, category);
+ }
+ } else {
+ ast_log(LOG_ERROR, "Out of memory\n");
}
if (ast_test_flag(vmu, VM_DELETE)) {
);
parse = ast_strdupa(data);
+ if (!parse) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
AST_STANDARD_APP_ARGS(args, parse);
LOCAL_USER_ADD(u);
box = ast_strdupa(data);
+ if (!box) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
AST_STANDARD_APP_ARGS(args, box);
if (s) {
s = ast_strdupa(s);
+ if (!s) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ return -1;
+ }
user = strsep(&s, "|");
options = strsep(&s, "|");
if (user) {
if ((z = ast_malloc(sizeof(*z)))) {
char *msg_format, *timezone;
msg_format = ast_strdupa(var->value);
- timezone = strsep(&msg_format, "|");
- if (msg_format) {
- ast_copy_string(z->name, var->name, sizeof(z->name));
- ast_copy_string(z->timezone, timezone, sizeof(z->timezone));
- ast_copy_string(z->msg_format, msg_format, sizeof(z->msg_format));
- z->next = NULL;
- if (zones) {
- zonesl->next = z;
- zonesl = z;
+ if (msg_format != NULL) {
+ timezone = strsep(&msg_format, "|");
+ if (msg_format) {
+ ast_copy_string(z->name, var->name, sizeof(z->name));
+ ast_copy_string(z->timezone, timezone, sizeof(z->timezone));
+ ast_copy_string(z->msg_format, msg_format, sizeof(z->msg_format));
+ z->next = NULL;
+ if (zones) {
+ zonesl->next = z;
+ zonesl = z;
+ } else {
+ zones = z;
+ zonesl = z;
+ }
} else {
- zones = z;
- zonesl = z;
+ ast_log(LOG_WARNING, "Invalid timezone definition at line %d\n", var->lineno);
+ free(z);
}
} else {
- ast_log(LOG_WARNING, "Invalid timezone definition at line %d\n", var->lineno);
+ ast_log(LOG_WARNING, "Out of memory while reading voicemail config\n");
free(z);
+ return -1;
}
} else {
return -1;
LOCAL_USER_ADD(u);
expr = ast_strdupa(data);
+ if (!expr) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
if ((myapp = strchr(expr,'|'))) {
*myapp = '\0';
snprintf(used_index, VAR_SIZE, "%d", used_index_i);
snprintf(new_index, VAR_SIZE, "%d", used_index_i + 1);
- if (!end)
- condition = ast_strdupa(data);
+ if (!end) {
+ condition = ast_strdupa((char *) data);
+ }
size = strlen(chan->context) + strlen(chan->exten) + 32;
my_name = alloca(size);
LOCAL_USER_ADD(u);
args = ast_strdupa(data);
+ if (!args) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
/* Answer the channel if it's not up */
if (chan->_state != AST_STATE_UP)
struct agent_pvt *p, *prev;
parse = ast_strdupa(agent);
+ if (!parse) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ return NULL;
+ }
/* Extract username (agt), password and name from agent (args). */
AST_NONSTANDARD_APP_ARGS(args, parse, ',');
LOCAL_USER_ADD(u);
- parse = ast_strdupa(data);
+ if (!(parse = ast_strdupa(data))) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
AST_STANDARD_APP_ARGS(args, parse);
}
item = ast_strdupa(data);
+ if (!item) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ return buf;
+ }
agentid = strsep(&item, ":");
if (!item)
char *key = NULL;
family = ast_strdupa(peer->dbsecret);
- key = strchr(family, '/');
- if (key)
- *key++ = '\0';
- if (!key || ast_db_get(family, key, cai->secret, sizeof(cai->secret))) {
+ if (family) {
+ key = strchr(family, '/');
+ if (key)
+ *key++ = '\0';
+ }
+ if (!family || !key || ast_db_get(family, key, cai->secret, sizeof(cai->secret))) {
ast_log(LOG_WARNING, "Unable to retrieve database password for family/key '%s'!\n", peer->dbsecret);
if (ast_test_flag(peer, IAX_TEMPONLY))
destroy_peer(peer);
unsigned char digest[16];
char *tmppw, *stringp;
- stringp = ast_strdupa(iaxs[callno]->secret);
- while ((tmppw = strsep(&stringp, ";"))) {
+ tmppw = ast_strdupa(iaxs[callno]->secret);
+ stringp = tmppw;
+ while((tmppw = strsep(&stringp, ";"))) {
MD5Init(&md5);
MD5Update(&md5, (unsigned char *)iaxs[callno]->challenge, strlen(iaxs[callno]->challenge));
MD5Update(&md5, (unsigned char *)tmppw, strlen(tmppw));
if (!ast_strlen_zero(user->dbsecret)) {
char *family, *key=NULL;
family = ast_strdupa(user->dbsecret);
- key = strchr(family, '/');
- if (key)
- *key++ = '\0';
- if (!key || ast_db_get(family, key, iaxs[callno]->secret, sizeof(iaxs[callno]->secret))) {
+ if (family) {
+ key = strchr(family, '/');
+ if (key) {
+ *key = '\0';
+ key++;
+ }
+ }
+ if (!family || !key || ast_db_get(family, key, iaxs[callno]->secret, sizeof(iaxs[callno]->secret))) {
ast_log(LOG_WARNING, "Unable to retrieve database password for family/key '%s'!\n", user->dbsecret);
if (ast_test_flag(user, IAX_TEMPONLY)) {
destroy_user(user);
unsigned char digest[16];
char *tmppw, *stringp;
- stringp = ast_strdupa(p->secret);
- while ((tmppw = strsep(&stringp, ";"))) {
+ tmppw = ast_strdupa(p->secret);
+ stringp = tmppw;
+ while((tmppw = strsep(&stringp, ";"))) {
MD5Init(&md5);
MD5Update(&md5, (unsigned char *)p->challenge, strlen(p->challenge));
MD5Update(&md5, (unsigned char *)tmppw, strlen(tmppw));
unsigned char digest[16];
char *tmppw, *stringp;
- stringp = ast_strdupa(p->secret);
- while ((tmppw = strsep(&stringp, ";"))) {
+ tmppw = ast_strdupa(p->secret);
+ stringp = tmppw;
+ while((tmppw = strsep(&stringp, ";"))) {
MD5Init(&md5);
MD5Update(&md5, (unsigned char *)iaxs[callno]->challenge, strlen(iaxs[callno]->challenge));
MD5Update(&md5, (unsigned char *)tmppw, strlen(tmppw));
char *portstr;
tmp = ast_strdupa(srcaddr);
+ if (!tmp) {
+ ast_log(LOG_WARNING, "Out of memory!\n");
+ return -1;
+ }
addr = strsep(&tmp, ":");
portstr = tmp;
user->ha = ast_append_ha(v->name, v->value, user->ha);
} else if (!strcasecmp(v->name, "setvar")) {
varname = ast_strdupa(v->value);
- if ((varval = strchr(varname,'='))) {
+ if (varname && (varval = strchr(varname,'='))) {
*varval = '\0';
varval++;
if((tmpvar = ast_variable_new(varname, varval))) {
char *peername, *colname;
char iabuf[INET_ADDRSTRLEN];
- peername = ast_strdupa(data);
+ if (!(peername = ast_strdupa(data))) {
+ ast_log(LOG_ERROR, "Memory Error!\n");
+ return ret;
+ }
/* if our channel, return the IP address of the endpoint of current channel */
if (!strcmp(peername,"CURRENTCHANNEL")) {
char *tmpcall;
char *c;
tmpcall = ast_strdupa(r->callid);
- if ((c = strchr(tmpcall, '@'))) {
- *c = '\0';
- ast_string_field_build(r, callid, "%s@%s", tmpcall, peer->fromdomain);
+ if (tmpcall) {
+ c = strchr(tmpcall, '@');
+ if (c) {
+ *c = '\0';
+ ast_string_field_build(r, callid, "%s@%s", tmpcall, peer->fromdomain);
+ }
}
}
if (ast_strlen_zero(r->tohost)) {
if ((c = strchr(of, ':')))
*c = '\0';
tmp = ast_strdupa(of);
- ast_shrink_phone_number(tmp);
- ast_string_field_set(p, cid_num, tmp);
+ if (tmp) {
+ ast_shrink_phone_number(tmp);
+ ast_string_field_set(p, cid_num, tmp);
+ } else {
+ ast_string_field_set(p, cid_num, of);
+ }
}
if (ast_strlen_zero(of))
return 0;
if (*calleridname)
ast_string_field_set(p, cid_name, calleridname);
tmp = ast_strdupa(rpid_num);
- ast_shrink_phone_number(tmp);
- ast_string_field_set(p, cid_num, tmp);
+ if (tmp) {
+ ast_shrink_phone_number(tmp);
+ ast_string_field_set(p, cid_num, tmp);
+ } else {
+ ast_string_field_set(p, cid_num, rpid_num);
+ }
}
if (p->rtp) {
ast_string_field_set(p, context, user->context);
if (!ast_strlen_zero(user->cid_num) && !ast_strlen_zero(p->cid_num)) {
char *tmp = ast_strdupa(user->cid_num);
- ast_shrink_phone_number(tmp);
- ast_string_field_set(p, cid_num, tmp);
+ if (tmp) {
+ ast_shrink_phone_number(tmp);
+ ast_string_field_set(p, cid_num, tmp);
+ } else {
+ ast_string_field_set(p, cid_num, user->cid_num);
+ }
}
if (!ast_strlen_zero(user->cid_name) && !ast_strlen_zero(p->cid_num))
ast_string_field_set(p, cid_name, user->cid_name);
char *tmp = ast_strdupa(rpid_num);
if (*calleridname)
ast_string_field_set(p, cid_name, calleridname);
- ast_shrink_phone_number(tmp);
- ast_string_field_set(p, cid_num, tmp);
+ if (tmp) {
+ ast_shrink_phone_number(tmp);
+ ast_string_field_set(p, cid_num, tmp);
+ } else {
+ ast_string_field_set(p, cid_num, rpid_num);
+ }
}
if (p->rtp) {
ast_log(LOG_DEBUG, "Setting NAT on RTP to %d\n", (ast_test_flag(p, SIP_NAT) & SIP_NAT_ROUTE));
}
if (!ast_strlen_zero(peer->cid_num) && !ast_strlen_zero(p->cid_num)) {
char *tmp = ast_strdupa(peer->cid_num);
- ast_shrink_phone_number(tmp);
- ast_string_field_set(p, cid_num, tmp);
+ if (tmp) {
+ ast_shrink_phone_number(tmp);
+ ast_string_field_set(p, cid_num, tmp);
+ } else {
+ ast_string_field_set(p, cid_num, peer->cid_num);
+ }
}
if (!ast_strlen_zero(peer->cid_name) && !ast_strlen_zero(p->cid_name))
ast_string_field_set(p, cid_name, peer->cid_name);
char *peername, *colname;
char iabuf[INET_ADDRSTRLEN];
- peername = ast_strdupa(data);
+ if (!(peername = ast_strdupa(data))) {
+ ast_log(LOG_ERROR, "Memory Error!\n");
+ return ret;
+ }
if ((colname = strchr(peername, ':'))) {
*colname = '\0';
ast_copy_string(user->subscribecontext, v->value, sizeof(user->subscribecontext));
} else if (!strcasecmp(v->name, "setvar")) {
varname = ast_strdupa(v->value);
- if ((varval = strchr(varname,'='))) {
+ if (varname && (varval = strchr(varname,'='))) {
*varval = '\0';
varval++;
if ((tmpvar = ast_variable_new(varname, varval))) {
} else if (!strcasecmp(v->name, "setvar")) {
/* Set peer channel variable */
varname = ast_strdupa(v->value);
- if ((varval = strchr(varname,'='))) {
+ if (varname && (varval = strchr(varname,'='))) {
*varval = '\0';
varval++;
if ((tmpvar = ast_variable_new(varname, varval))) {
char tmp[80];
cdest = ast_strdupa(dest);
+ if (!cdest) {
+ ast_log(LOG_ERROR, "Problem allocating the memory\n");
+ return 0;
+ }
extension = strsep(&cdest, "@");
host = strsep(&cdest, ":");
port = strsep(&cdest, ":");
return 0;
}
if ((localtmp = strstr(tmp, "sip:")) && (localtmp = strchr(localtmp, '@'))) {
- char lhost[80] = "", lport[80] = "";
+ char lhost[80], lport[80];
+ memset(lhost, 0, sizeof(lhost));
+ memset(lport, 0, sizeof(lport));
localtmp++;
/* This is okey because lhost and lport are as big as tmp */
sscanf(localtmp, "%[^<>:; ]:%[^<>:; ]", lhost, lport);
- if (ast_strlen_zero(lhost)) {
+ if (!strlen(lhost)) {
ast_log(LOG_ERROR, "Can't find the host address\n");
return 0;
}
host = ast_strdupa(lhost);
- if (!ast_strlen_zero(lport))
+ if (!host) {
+ ast_log(LOG_ERROR, "Problem allocating the memory\n");
+ return 0;
+ }
+ if (!ast_strlen_zero(lport)) {
port = ast_strdupa(lport);
+ if (!port) {
+ ast_log(LOG_ERROR, "Problem allocating the memory\n");
+ return 0;
+ }
+ }
}
}
return NULL;
parse = ast_strdupa(data);
+ if (!parse) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ return NULL;
+ }
AST_STANDARD_APP_ARGS(args, parse);
return;
parse = ast_strdupa(data);
+ if (!parse) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ return;
+ }
AST_STANDARD_APP_ARGS(args, parse);
return ERROR_NOARG;
}
- strings = ast_strdupa(data);
+ strings = ast_strdupa((char *)data);
+ if (!strings) {
+ return ERROR_NOMEM;
+ }
for (ptrkey = strings; *ptrkey; ptrkey++) {
if (*ptrkey == '|') {
memset(buffer, 0, buflen);
parse = ast_strdupa(data);
+ if (!parse) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ return ERROR_NOMEM;
+ }
AST_STANDARD_APP_ARGS(args, parse);
char *iftrue;
char *iffalse;
- data = ast_strdupa(data);
+ if (!(data = ast_strdupa(data))) {
+ ast_log(LOG_WARNING, "Memory Error!\n");
+ return NULL;
+ }
data = ast_strip_quoted(data, "\"", "\"");
expr = strsep(&data, "?");
char *iftrue;
char *iffalse;
- data = ast_strdupa(data);
+ if (!(data = ast_strdupa(data))) {
+ ast_log(LOG_WARNING, "Memory Error!\n");
+ return NULL;
+ }
data = ast_strip_quoted(data, "\"", "\"");
expr = strsep(&data, "?");
char *varname;
char *val;
- data = ast_strdupa(data);
+ if (!(data = ast_strdupa(data))) {
+ ast_log(LOG_WARNING, "Memory Error!\n");
+ return NULL;
+ }
varname = strsep(&data, "=");
val = data;
}
parse = ast_strdupa(data);
+ if(!parse) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ return NULL;
+ }
AST_STANDARD_APP_ARGS(args, parse);
}
parse = ast_strdupa(data);
+ if (!parse) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ return NULL;
+ }
AST_STANDARD_APP_ARGS(args, parse);
t = "";
}
+ if (!s || !t) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ ast_mutex_unlock(&query_lock);
+ return;
+ }
+
/* XXX You might be tempted to change this section into using
* pbx_builtin_pushvar_helper(). However, note that if you try
* to set a NULL (like for VALUE), then nothing gets set, and the
/* Parse our arguments */
s = ast_strdupa(data);
+ if (!s) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ ast_mutex_unlock(&query_lock);
+ return "";
+ }
while ((arg = strsep(&s, "|"))) {
count++;
LOCAL_USER_ACF_ADD(u);
- s = ast_strdupa(data);
+ if (!(s = ast_strdupa(data))) {
+ ast_log(LOG_WARNING, "Out of memory\n");
+ *buffer = '\0';
+ LOCAL_USER_REMOVE(u);
+ return buffer;
+ }
ast_app_separate_args(s, '|', args, sizeof(args) / sizeof(args[0]));
);
parse = ast_strdupa(data);
+ if (!parse) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ ast_copy_string(buf, "0", len);
+ return buf;
+ }
AST_STANDARD_APP_ARGS(args, parse);
if (args.delim) {
char *outbuf=buf;
parse = ast_strdupa(data);
+ if (!parse) {
+ ast_log(LOG_ERROR, "Out of memory");
+ return "";
+ }
AST_STANDARD_APP_ARGS(args, parse);
ast_copy_string(buf, "0", len);
parse = ast_strdupa(data);
+ if (!parse) {
+ ast_log(LOG_ERROR, "Out of memory in %s(%s)\n", cmd, data);
+ return buf;
+ }
AST_NONSTANDARD_APP_ARGS(args, parse, '"');
var = ast_strdupa(data);
value2 = ast_strdupa(value);
+ if (!var || !value2) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ return;
+ }
/* The functions this will generally be used with are SORT and ODBC_*, which
* both return comma-delimited lists. However, if somebody uses literal lists,
}
parse = ast_strdupa(data);
+ if (!parse) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ return buf;
+ }
AST_STANDARD_APP_ARGS(args, parse);