[FFmpeg-cvslog] oggparsevorbis: use av_realloc consistently

=?UTF-8?Q?Pawe=C5=82=20Hajdan?=, Jr git at videolan.org
Wed Jan 30 20:13:42 CET 2013


ffmpeg | branch: master | Paweł Hajdan, Jr <phajdan at google.com> | Thu Jan 10 10:24:01 2013 -0800| [0451ff295a9f5194c2dee87a9a704b6dcd144ddb] | committer: Michael Niedermayer

oggparsevorbis: use av_realloc consistently

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 <phajdan at google.com>
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0451ff295a9f5194c2dee87a9a704b6dcd144ddb
---

 libavformat/oggparsevorbis.c |    6 ++++--
 1 file 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);
 
     ptr[0] = 2;
     offset = 1;



More information about the ffmpeg-cvslog mailing list