dv: Fix small overread in audio frequency table.
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
(cherry picked from commit 0ab3687924
)
Signed-off-by: Reinhard Tartler <siretart@tauware.de>
This commit is contained in:

committed by
Reinhard Tartler

parent
2c199cb253
commit
b0888b8a48
@@ -119,6 +119,9 @@ static int dv_extract_audio(uint8_t* frame, uint8_t* ppcm[4],
|
|||||||
if (quant > 1)
|
if (quant > 1)
|
||||||
return -1; /* unsupported quantization */
|
return -1; /* unsupported quantization */
|
||||||
|
|
||||||
|
if (freq >= FF_ARRAY_ELEMS(dv_audio_frequency))
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
|
|
||||||
size = (sys->audio_min_samples[freq] + smpls) * 4; /* 2ch, 2bytes */
|
size = (sys->audio_min_samples[freq] + smpls) * 4; /* 2ch, 2bytes */
|
||||||
half_ch = sys->difseg_size / 2;
|
half_ch = sys->difseg_size / 2;
|
||||||
|
|
||||||
@@ -201,6 +204,12 @@ static int dv_extract_audio_info(DVDemuxContext* c, uint8_t* frame)
|
|||||||
stype = (as_pack[3] & 0x1f); /* 0 - 2CH, 2 - 4CH, 3 - 8CH */
|
stype = (as_pack[3] & 0x1f); /* 0 - 2CH, 2 - 4CH, 3 - 8CH */
|
||||||
quant = as_pack[4] & 0x07; /* 0 - 16bit linear, 1 - 12bit nonlinear */
|
quant = as_pack[4] & 0x07; /* 0 - 16bit linear, 1 - 12bit nonlinear */
|
||||||
|
|
||||||
|
if (freq >= FF_ARRAY_ELEMS(dv_audio_frequency)) {
|
||||||
|
av_log(c->fctx, AV_LOG_ERROR,
|
||||||
|
"Unrecognized audio sample rate index (%d)\n", freq);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (stype > 3) {
|
if (stype > 3) {
|
||||||
av_log(c->fctx, AV_LOG_ERROR, "stype %d is invalid\n", stype);
|
av_log(c->fctx, AV_LOG_ERROR, "stype %d is invalid\n", stype);
|
||||||
c->ach = 0;
|
c->ach = 0;
|
||||||
|
Reference in New Issue
Block a user