You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	avcodec/utvideodec: Check subsample factors
Fixes: Out of array read Fixes: heap_poc Found-by: GwanYeong Kim <gy741.kim@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
		| @@ -30,6 +30,7 @@ | ||||
| #define UNCHECKED_BITSTREAM_READER 1 | ||||
|  | ||||
| #include "libavutil/intreadwrite.h" | ||||
| #include "libavutil/pixdesc.h" | ||||
| #include "avcodec.h" | ||||
| #include "bswapdsp.h" | ||||
| #include "bytestream.h" | ||||
| @@ -912,6 +913,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, | ||||
| static av_cold int decode_init(AVCodecContext *avctx) | ||||
| { | ||||
|     UtvideoContext * const c = avctx->priv_data; | ||||
|     int h_shift, v_shift; | ||||
|  | ||||
|     c->avctx = avctx; | ||||
|  | ||||
| @@ -1012,6 +1014,13 @@ static av_cold int decode_init(AVCodecContext *avctx) | ||||
|         return AVERROR_INVALIDDATA; | ||||
|     } | ||||
|  | ||||
|     av_pix_fmt_get_chroma_sub_sample(avctx->pix_fmt, &h_shift, &v_shift); | ||||
|     if ((avctx->width  & ((1<<h_shift)-1)) || | ||||
|         (avctx->height & ((1<<v_shift)-1))) { | ||||
|         avpriv_request_sample(avctx, "Odd dimensions"); | ||||
|         return AVERROR_PATCHWELCOME; | ||||
|     } | ||||
|  | ||||
|     if (c->pack && avctx->extradata_size >= 16) { | ||||
|         av_log(avctx, AV_LOG_DEBUG, "Encoder version %d.%d.%d.%d\n", | ||||
|                avctx->extradata[3], avctx->extradata[2], | ||||
|   | ||||
		Reference in New Issue
	
	Block a user