On 12/11/2011 03:44 PM, Gaurav Narula wrote:

> ---
>  libavcodec/kmvc.c |   63 +++++++++++++++++++++++++++++++---------------------
>  1 files changed, 37 insertions(+), 26 deletions(-)
> 
> diff --git a/libavcodec/kmvc.c b/libavcodec/kmvc.c
> index 07ca194..a07b07f 100644
> --- a/libavcodec/kmvc.c
> +++ b/libavcodec/kmvc.c
> @@ -57,17 +57,17 @@ typedef struct BitBuf {
>  
>  #define kmvc_init_getbits(bb, src)  bb.bits = 7; bb.bitbuf = *src++;
>  
> -#define kmvc_getbit(bb, src, res) {\
> +#define kmvc_getbit(bb, src, src_end, res) {\
>      res = 0; \
>      if (bb.bitbuf & (1 << bb.bits)) res = 1; \
>      bb.bits--; \
> -    if(bb.bits == -1) { \
> +    if(bb.bits == -1 && src < src_end) { \
>          bb.bitbuf = *src++; \
>          bb.bits = 7; \
>      } \
>  }


If src >= src_end then bb.bits will keep decrementing every time
kmvc_getbit() is called, leading to left-shift by a negative value,
which is undefined I believe. It would probably be better to have the
decoder stop after reaching the end.

-Justin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to