h264: reset data_partitioning if decoding the slice header for NAL_DPA fails

If it was set before then we can end up trying to decode a slice without
a valid slice header, which can lead to invalid memory access.

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC:libav-stable@libav.org
(cherry picked from commit 58312b2472)
This commit is contained in:
Anton Khirnov
2013-11-28 10:54:35 +01:00
committed by Sean McGovern
parent 30e58e65e5
commit 1147d39bca

View File

@@ -4061,8 +4061,13 @@ again:
hx->intra_gb_ptr =
hx->inter_gb_ptr = NULL;
if ((err = decode_slice_header(hx, h)) < 0)
if ((err = decode_slice_header(hx, h)) < 0) {
/* make sure data_partitioning is cleared if it was set
* before, so we don't try decoding a slice without a valid
* slice header later */
s->data_partitioning = 0;
break;
}
hx->s.data_partitioning = 1;
break;