Mercurial > mplayer.hg
changeset 27113:680301b96149
Add a few size checks to IMA decoder. The code is still a mess though,
but bug # 1114 is probably fixed.
author | reimar |
---|---|
date | Sun, 29 Jun 2008 08:08:51 +0000 |
parents | cd61e85bb657 |
children | 6a0bcac0335c |
files | libmpcodecs/ad_imaadpcm.c |
diffstat | 1 files changed, 12 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/libmpcodecs/ad_imaadpcm.c Sun Jun 29 07:55:44 2008 +0000 +++ b/libmpcodecs/ad_imaadpcm.c Sun Jun 29 08:08:51 2008 +0000 @@ -190,6 +190,10 @@ int initial_index_r = 0; int i; + if (channels > 1) channels = 2; + if (block_size < channels * QT_IMA_ADPCM_BLOCK_SIZE) + return -1; + initial_predictor_l = BE_16(&input[0]); initial_index_l = initial_predictor_l; @@ -255,6 +259,10 @@ int channel_index_l; int channel_index_r; + if (channels > 1) channels = 2; + if (block_size < MS_IMA_ADPCM_PREAMBLE_SIZE * channels) + return -1; + predictor_l = LE_16(&input[0]); SE_16BIT(predictor_l); index_l = input[2]; @@ -322,6 +330,10 @@ int index_l = 0; int index_r = 0; + if (channels > 1) channels = 2; + if (block_size < MS_IMA_ADPCM_PREAMBLE_SIZE * channels) + return -1; + // the first predictor value goes straight to the output predictor_l = output[0] = LE_16(&input[0]); SE_16BIT(predictor_l);