Must be at least WMAPRO_BLOCK_MIN_SIZE.
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
(cherry picked from commit d4a217a408da4bd63acc02cd8f9ebe378a2ad65a)
Signed-off-by: Reinhard Tartler <siretart@tauware.de>
Conflicts:
libavcodec/wmaprodec.c
... | ... |
@@ -106,6 +106,7 @@ |
106 | 106 |
|
107 | 107 |
#define WMAPRO_BLOCK_MIN_BITS 6 ///< log2 of min block size |
108 | 108 |
#define WMAPRO_BLOCK_MAX_BITS 12 ///< log2 of max block size |
109 |
+#define WMAPRO_BLOCK_MIN_SIZE (1 << WMAPRO_BLOCK_MIN_BITS) ///< minimum block size |
|
109 | 110 |
#define WMAPRO_BLOCK_MAX_SIZE (1 << WMAPRO_BLOCK_MAX_BITS) ///< maximum block size |
110 | 111 |
#define WMAPRO_BLOCK_SIZES (WMAPRO_BLOCK_MAX_BITS - WMAPRO_BLOCK_MIN_BITS + 1) ///< possible block sizes |
111 | 112 |
|
... | ... |
@@ -335,6 +336,12 @@ static av_cold int decode_init(AVCodecContext *avctx) |
335 | 335 |
return AVERROR_INVALIDDATA; |
336 | 336 |
} |
337 | 337 |
|
338 |
+ if (s->min_samples_per_subframe < WMAPRO_BLOCK_MIN_SIZE) { |
|
339 |
+ av_log(avctx, AV_LOG_ERROR, "Invalid minimum block size %i\n", |
|
340 |
+ s->max_num_subframes); |
|
341 |
+ return AVERROR_INVALIDDATA; |
|
342 |
+ } |
|
343 |
+ |
|
338 | 344 |
if (s->avctx->sample_rate <= 0) { |
339 | 345 |
av_log(avctx, AV_LOG_ERROR, "invalid sample rate\n"); |
340 | 346 |
return AVERROR_INVALIDDATA; |