On Fri, 14 Oct 2011 18:28:48 -0700, Alex Converse <[email protected]> 
wrote:
> ---
>  libavformat/aviobuf.c |    7 +++++--
>  1 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c
> index b5e9d4c..8f3599a 100644
> --- a/libavformat/aviobuf.c
> +++ b/libavformat/aviobuf.c
> @@ -769,13 +769,14 @@ int avio_get_str(AVIOContext *s, int maxlen, char *buf, 
> int buflen)
>  {
>      int i;
>  
> +    if (buflen <= 0)
> +        return AVERROR(EINVAL);
>      // reserve 1 byte for terminating 0
>      buflen = FFMIN(buflen - 1, maxlen);
>      for (i = 0; i < buflen; i++)
>          if (!(buf[i] = avio_r8(s)))
>              return i + 1;
> -    if (buflen)
> -        buf[i] = 0;
> +    buf[i] = 0;
>      for (; i < maxlen; i++)
>          if (!avio_r8(s))
>              return i + 1;
> @@ -787,6 +788,8 @@ int avio_get_str(AVIOContext *s, int maxlen, char *buf, 
> int buflen)
>  {\
>      char* q = buf;\
>      int ret = 0;\
> +    if (buflen <= 0) \
> +        return AVERROR(EINVAL); \
>      while (ret + 1 < maxlen) {\
>          uint8_t tmp;\
>          uint32_t ch;\
> -- 
> 1.7.3.1
> 

Looks ok.

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

Reply via email to