On 10/01/13 20:12, Dale Curtis wrote:
> From: "PaweÅ‚ Hajdan, Jr" <[email protected]>
> 
> Memory passed to av_realloc cannot be allocated using memalign.
> 
> From realloc(3):
> 
> The realloc() function changes the size of the memory block pointed to
> by ptr to size bytes. (...) Unless ptr is NULL, it must have been returned
> by an earlier call to malloc(), calloc() or realloc().
> 
> The issue has been found by debugallocation, a part of google-perftools:
> http://code.google.com/p/gperftools/ .
> 
> Signed-off-by: PaweÅ‚ Hajdan, Jr <[email protected]>
> ---
>  libavformat/oggparsevorbis.c |    6 ++++--
>  1 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/libavformat/oggparsevorbis.c b/libavformat/oggparsevorbis.c
> index 16bcaef..452d856 100644
> --- a/libavformat/oggparsevorbis.c
> +++ b/libavformat/oggparsevorbis.c
> @@ -173,11 +173,13 @@ static unsigned int
>  fixup_vorbis_headers(AVFormatContext * as, struct oggvorbis_private *priv,
>                       uint8_t **buf)
>  {
> -    int i,offset, len;
> +    int i,offset, len, buf_len;
>      unsigned char *ptr;
> 
>      len = priv->len[0] + priv->len[1] + priv->len[2];
> -    ptr = *buf = av_mallocz(len + len/255 + 64);
> +    buf_len = len + len/255 + 64;
> +    ptr = *buf = av_realloc(NULL, buf_len);
> +    memset(*buf, '\0', buf_len);

Is the memset doesn't seem necessary since we trim the buffer in the end.

lu

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

Reply via email to