vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Tue Jan 26 20:07:29 2016 +0200| [b1fbc145fb6ad7cbc60d911903e891bc185df3ec] | committer: Rémi Denis-Courmont
decoder: fix NULl deref if picture queued without vout (i.e. if vout creation fails) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b1fbc145fb6ad7cbc60d911903e891bc185df3ec --- src/input/decoder.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/input/decoder.c b/src/input/decoder.c index d632064..f3928e8 100644 --- a/src/input/decoder.c +++ b/src/input/decoder.c @@ -861,8 +861,7 @@ static int DecoderPlayVideo( decoder_t *p_dec, picture_t *p_picture, if( p_picture->date <= VLC_TS_INVALID ) { msg_Warn( p_dec, "non-dated video buffer received" ); - *pi_lost_sum += 1; - picture_Release( p_picture ); + goto discard; return 0; } @@ -901,6 +900,9 @@ static int DecoderPlayVideo( decoder_t *p_dec, picture_t *p_picture, vlc_fifo_Unlock( p_owner->p_fifo ); /* */ + if( p_vout == NULL ) + goto discard; + if( p_picture->b_force || p_picture->date > VLC_TS_INVALID ) /* FIXME: VLC_TS_INVALID -- verify video_output */ { @@ -918,12 +920,14 @@ static int DecoderPlayVideo( decoder_t *p_dec, picture_t *p_picture, msg_Warn( p_dec, "early picture skipped" ); else msg_Warn( p_dec, "non-dated video buffer received" ); - - *pi_lost_sum += 1; - picture_Release( p_picture ); + goto discard; } return 0; +discard: + *pi_lost_sum += 1; + picture_Release( p_picture ); + return 0; } static void DecoderUpdateStatVideo( decoder_t *p_dec, unsigned decoded, _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
