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
15.6
Corey Farrell 7 years ago
parent 32817bf389
commit 7abf373139

@ -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;
}

Loading…
Cancel
Save