Merged revisions 105005 via svnmerge from

https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r105005 | qwell | 2008-02-28 13:20:10 -0600 (Thu, 28 Feb 2008) | 9 lines

Make pbx_exec pass an empty string into applications, if we get NULL.
This protects against possible segfaults in applications that may try
 to use data before checking length (ast_strdupa'ing it, for example)

(closes issue #12100)
Reported by: foxfire
Patches:
      12100-nullappargs.diff uploaded by qwell (license 4)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@105006 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.0
Jason Parker 17 years ago
parent 557c38bc8d
commit 62c63a8412

@ -780,12 +780,8 @@ void ast_cdr_setapp(struct ast_cdr *cdr, char *app, char *data)
for (; cdr; cdr = cdr->next) {
if (!ast_test_flag(cdr, AST_CDR_FLAG_LOCKED)) {
check_post(cdr);
if (!app)
app = "";
ast_copy_string(cdr->lastapp, app, sizeof(cdr->lastapp));
if (!data)
data = "";
ast_copy_string(cdr->lastdata, data, sizeof(cdr->lastdata));
ast_copy_string(cdr->lastapp, S_OR(app, ""), sizeof(cdr->lastapp));
ast_copy_string(cdr->lastdata, S_OR(data, ""), sizeof(cdr->lastdata));
}
}
}

@ -714,7 +714,7 @@ int pbx_exec(struct ast_channel *c, /*!< Channel */
const char *saved_c_appl;
const char *saved_c_data;
if (c->cdr && !ast_check_hangup(c))
if (c->cdr && !ast_check_hangup(c))
ast_cdr_setapp(c->cdr, app->name, data);
/* save channel values */
@ -725,7 +725,7 @@ int pbx_exec(struct ast_channel *c, /*!< Channel */
c->data = data;
if (app->module)
u = __ast_module_user_add(app->module, c);
res = app->execute(c, data);
res = app->execute(c, S_OR(data, ""));
if (app->module && u)
__ast_module_user_remove(app->module, u);
/* restore channel values */

Loading…
Cancel
Save