oggenc: free comment header for all codecs
authorJustin Ruggles <justin.ruggles@gmail.com>
Thu, 23 Feb 2012 00:31:40 +0000 (19:31 -0500)
committerJustin Ruggles <justin.ruggles@gmail.com>
Fri, 24 Feb 2012 18:15:41 +0000 (13:15 -0500)
fixes a memleak for Vorbis and Theora, where the comment header from
avpriv_split_xiph_headers() is replaced by a buffer that must be freed
separately.

libavformat/oggenc.c

index 33aba87..f947269 100644 (file)
@@ -388,10 +388,10 @@ static int ogg_write_header(AVFormatContext *s)
             p = ogg_write_vorbiscomment(7, st->codec->flags & CODEC_FLAG_BITEXACT,
                                         &oggstream->header_len[1], &s->metadata,
                                         framing_bit);
+            oggstream->header[1] = p;
             if (!p)
                 return AVERROR(ENOMEM);
 
-            oggstream->header[1] = p;
             bytestream_put_byte(&p, header_type);
             bytestream_put_buffer(&p, cstr, 6);
 
@@ -497,8 +497,8 @@ static int ogg_write_trailer(AVFormatContext *s)
         if (st->codec->codec_id == CODEC_ID_FLAC ||
             st->codec->codec_id == CODEC_ID_SPEEX) {
             av_free(oggstream->header[0]);
-            av_free(oggstream->header[1]);
         }
+        av_freep(&oggstream->header[1]);
         av_freep(&st->priv_data);
     }
     return 0;