FS-10472: [mod_conference] Invalid free in personal canvas mode

This commit is contained in:
Anthony Minessale committed 2017-07-10 19:13:27 -05:00
1 parent 69cb420ca9
commit 44021b1c61
3 files changed
+24 -6

No files matched your search

@@ -1161,9 +1161,6 @@ switch_status_t conference_member_del(conference_obj_t *conference, conference_m
}
member->avatar_patched = 0;
switch_img_free(&member->avatar_png_img);
switch_img_free(&member->video_mute_img);
switch_img_free(&member->pcanvas_img);
switch_mutex_lock(conference->mutex);
switch_mutex_lock(conference->member_mutex);
switch_mutex_lock(member->audio_in_mutex);
@@ -1194,6 +1191,10 @@ switch_status_t conference_member_del(conference_obj_t *conference, conference_m
last = imember;
}
switch_img_free(&member->avatar_png_img);
switch_img_free(&member->video_mute_img);
switch_img_free(&member->pcanvas_img);
switch_thread_rwlock_unlock(member->rwlock);
/* Close Unused Handles */
@@ -420,8 +420,10 @@ void conference_video_reset_layer(mcu_layer_t *layer)
}
switch_img_free(&layer->img);
layer->img = switch_img_alloc(NULL, SWITCH_IMG_FMT_I420, layer->screen_w, layer->screen_h, 1);
switch_assert(layer->img);
if (layer->screen_w && layer->screen_h) {
layer->img = switch_img_alloc(NULL, SWITCH_IMG_FMT_I420, layer->screen_w, layer->screen_h, 1);
switch_assert(layer->img);
}
conference_video_clear_layer(layer);
switch_img_free(&layer->cur_img);
@@ -2570,6 +2572,7 @@ void conference_video_pop_next_image(conference_member_t *member, switch_image_t
if (switch_channel_test_flag(member->channel, CF_VIDEO_READY)) {
do {
pop = NULL;
if (switch_queue_trypop(member->video_queue, &pop) == SWITCH_STATUS_SUCCESS && pop) {
switch_img_free(&img);
img = (switch_image_t *)pop;