[vlc-devel] [PATCH 01/17] video_output: avoid potential double release of displayed.current
Alexandre Janniaux
ajanni at videolabs.io
Fri Nov 20 17:01:26 CET 2020
Hi,
I'm not sure how it's protecting from double free, it only
seems to protect against NULL dereference.
Regards,
--
Alexandre Janniaux
Videolabs
On Fri, Nov 20, 2020 at 03:44:51PM +0100, Steve Lhomme wrote:
> ThreadDisplayPreparePicture() can call ThreadChangeFilters() which will reset
> displayed.current so we need to ensure we don't release it again after a call
> to ThreadDisplayPreparePicture().
> ---
> src/video_output/video_output.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
> index 57ee54e6e8b..cea13d44c4a 100644
> --- a/src/video_output/video_output.c
> +++ b/src/video_output/video_output.c
> @@ -1493,7 +1493,8 @@ static int ThreadDisplayPicture(vout_thread_sys_t *vout, vlc_tick_t *deadline)
> ThreadDisplayPreparePicture(vout, false, true, &paused);
> }
>
> - picture_Release(sys->displayed.current);
> + if (likely(sys->displayed.current != NULL))
> + picture_Release(sys->displayed.current);
> sys->displayed.current = sys->displayed.next;
> sys->displayed.next = NULL;
>
> @@ -1549,7 +1550,8 @@ static int ThreadDisplayPicture(vout_thread_sys_t *vout, vlc_tick_t *deadline)
> dropped_current_frame = true;
> render_now = false;
>
> - picture_Release(sys->displayed.current);
> + if (likely(sys->displayed.current != NULL))
> + picture_Release(sys->displayed.current);
> sys->displayed.current = sys->displayed.next;
> sys->displayed.next = NULL;
> }
> --
> 2.26.2
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
More information about the vlc-devel
mailing list