summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorCorey Farrell <git@cfware.com>2018-01-08 19:47:38 -0500
committerCorey Farrell <git@cfware.com>2018-01-08 19:47:38 -0500
commit5380fb99788881271694998daeff2f748cbaf8dd (patch)
tree469d39a97926d71a23ccf1d8b8816cd4143c00f4 /apps
parent8e18209cadf094fc0e1dec4c7375073864b611a9 (diff)
app_confbridge: Fix NULL check in action_kick_last.
The check for last_user == NULL needs to happen before we dereference the variable, previously it was possible for us to check flags of a NULL last_user. Change-Id: I274f737aa8af9d2d53e4a78cdd7ad57561003945
Diffstat (limited to 'apps')
-rw-r--r--apps/app_confbridge.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/apps/app_confbridge.c b/apps/app_confbridge.c
index 73dff8634..f972e38b9 100644
--- a/apps/app_confbridge.c
+++ b/apps/app_confbridge.c
@@ -2689,17 +2689,23 @@ static int action_kick_last(struct confbridge_conference *conference,
}
ao2_lock(conference);
- if (((last_user = AST_LIST_LAST(&conference->active_list)) == user)
- || (ast_test_flag(&last_user->u_profile, USER_OPT_ADMIN))) {
+ last_user = AST_LIST_LAST(&conference->active_list);
+ if (!last_user) {
+ ao2_unlock(conference);
+ return 0;
+ }
+
+ if (last_user == user || ast_test_flag(&last_user->u_profile, USER_OPT_ADMIN)) {
ao2_unlock(conference);
play_file(bridge_channel, NULL,
conf_get_sound(CONF_SOUND_ERROR_MENU, conference->b_profile.sounds));
- } else if (last_user && !last_user->kicked) {
+ } else if (!last_user->kicked) {
last_user->kicked = 1;
pbx_builtin_setvar_helper(last_user->chan, "CONFBRIDGE_RESULT", "KICKED");
ast_bridge_remove(conference->bridge, last_user->chan);
ao2_unlock(conference);
}
+
return 0;
}