Mercurial > libavcodec.hg
changeset 9906:fe4e6d8242d4 libavcodec
Make sure we dont read over the end.
Fixes issue1237.
author | michael |
---|---|
date | Wed, 01 Jul 2009 20:30:37 +0000 |
parents | f3ff182e9ecf |
children | 2fb2e212318b |
files | huffyuv.c |
diffstat | 1 files changed, 13 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/huffyuv.c Wed Jul 01 17:48:22 2009 +0000 +++ b/huffyuv.c Wed Jul 01 20:30:37 2009 +0000 @@ -729,10 +729,17 @@ count/=2; + if(count >= (s->gb.size_in_bits - get_bits_count(&s->gb))/(31*4)){ + for(i=0; i<count && get_bits_count(&s->gb) < s->gb.size_in_bits; i++){ + READ_2PIX(s->temp[0][2*i ], s->temp[1][i], 1); + READ_2PIX(s->temp[0][2*i+1], s->temp[2][i], 2); + } + }else{ for(i=0; i<count; i++){ READ_2PIX(s->temp[0][2*i ], s->temp[1][i], 1); READ_2PIX(s->temp[0][2*i+1], s->temp[2][i], 2); } + } } static void decode_gray_bitstream(HYuvContext *s, int count){ @@ -740,9 +747,15 @@ count/=2; + if(count >= (s->gb.size_in_bits - get_bits_count(&s->gb))/(31*2)){ + for(i=0; i<count && get_bits_count(&s->gb) < s->gb.size_in_bits; i++){ + READ_2PIX(s->temp[0][2*i ], s->temp[0][2*i+1], 0); + } + }else{ for(i=0; i<count; i++){ READ_2PIX(s->temp[0][2*i ], s->temp[0][2*i+1], 0); } + } } #if CONFIG_HUFFYUV_ENCODER || CONFIG_FFVHUFF_ENCODER