mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
Fix dialplan function NULL channel safety issues
(closes issue ASTERISK-23391) Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/3386/ ........ Merged revisions 411313 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 411314 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 411315 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@411328 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -1685,6 +1685,11 @@ static int calendar_event_read(struct ast_channel *chan, const char *cmd, char *
|
||||
struct ast_datastore *datastore;
|
||||
struct ast_calendar_event *event;
|
||||
|
||||
if (!chan) {
|
||||
ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (ast_strlen_zero(data)) {
|
||||
ast_log(LOG_WARNING, "%s requires an argument\n", cmd);
|
||||
return -1;
|
||||
|
@@ -845,7 +845,7 @@ static int acf_jabberreceive_read(struct ast_channel *chan, const char *name, ch
|
||||
|
||||
start = ast_tvnow();
|
||||
|
||||
if (ast_autoservice_start(chan) < 0) {
|
||||
if (chan && ast_autoservice_start(chan) < 0) {
|
||||
ast_log(LOG_WARNING, "Cannot start autoservice for channel %s\n", ast_channel_name(chan));
|
||||
ASTOBJ_UNREF(client, ast_aji_client_destroy);
|
||||
return -1;
|
||||
@@ -917,7 +917,7 @@ static int acf_jabberreceive_read(struct ast_channel *chan, const char *name, ch
|
||||
}
|
||||
|
||||
ASTOBJ_UNREF(client, ast_aji_client_destroy);
|
||||
if (ast_autoservice_stop(chan) < 0) {
|
||||
if (chan && ast_autoservice_stop(chan) < 0) {
|
||||
ast_log(LOG_WARNING, "Cannot stop autoservice for channel %s\n", ast_channel_name(chan));
|
||||
}
|
||||
|
||||
|
@@ -155,6 +155,11 @@ static int mute_channel(struct ast_channel *chan, const char *direction, int mut
|
||||
/*! \brief Mute dialplan function */
|
||||
static int func_mute_write(struct ast_channel *chan, const char *cmd, char *data, const char *value)
|
||||
{
|
||||
if (!chan) {
|
||||
ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return mute_channel(chan, data, ast_true(value));
|
||||
}
|
||||
|
||||
|
@@ -444,7 +444,7 @@ static int remove_header(void *obj)
|
||||
static int func_read_header(struct ast_channel *chan, const char *function, char *data,
|
||||
char *buf, size_t len)
|
||||
{
|
||||
struct ast_sip_channel_pvt *channel = ast_channel_tech_pvt(chan);
|
||||
struct ast_sip_channel_pvt *channel = chan ? ast_channel_tech_pvt(chan) : NULL;
|
||||
struct header_data header_data;
|
||||
int number;
|
||||
AST_DECLARE_APP_ARGS(args,
|
||||
@@ -503,7 +503,7 @@ static int func_read_header(struct ast_channel *chan, const char *function, char
|
||||
static int func_write_header(struct ast_channel *chan, const char *cmd, char *data,
|
||||
const char *value)
|
||||
{
|
||||
struct ast_sip_channel_pvt *channel = ast_channel_tech_pvt(chan);
|
||||
struct ast_sip_channel_pvt *channel = chan ? ast_channel_tech_pvt(chan) : NULL;
|
||||
struct header_data header_data;
|
||||
int header_number;
|
||||
AST_DECLARE_APP_ARGS(args,
|
||||
|
@@ -2045,7 +2045,7 @@ static int acf_jabberreceive_read(struct ast_channel *chan, const char *name, ch
|
||||
|
||||
start = ast_tvnow();
|
||||
|
||||
if (ast_autoservice_start(chan) < 0) {
|
||||
if (chan && ast_autoservice_start(chan) < 0) {
|
||||
ast_log(LOG_WARNING, "Cannot start autoservice for channel %s\n", ast_channel_name(chan));
|
||||
return -1;
|
||||
}
|
||||
@@ -2117,7 +2117,7 @@ static int acf_jabberreceive_read(struct ast_channel *chan, const char *name, ch
|
||||
diff = ast_tvdiff_ms(ast_tvnow(), start);
|
||||
}
|
||||
|
||||
if (ast_autoservice_stop(chan) < 0) {
|
||||
if (chan && ast_autoservice_stop(chan) < 0) {
|
||||
ast_log(LOG_WARNING, "Cannot stop autoservice for channel %s\n", ast_channel_name(chan));
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user