ogg_afh.c: Fix a memory leak.
authorAndre Noll <maan@systemlinux.org>
Thu, 13 Sep 2007 19:53:32 +0000 (21:53 +0200)
committerAndre Noll <maan@systemlinux.org>
Thu, 13 Sep 2007 19:53:32 +0000 (21:53 +0200)
In an non-ogg file is passed to the ogg audio format handler, such that the
initial ogg_sync_pageout() fails, the old code leaked the memory which was
allocated for the stream_in and the stream_out pointers.

ogg_afh.c

index 1c0c632..ef7d4f7 100644 (file)
--- a/ogg_afh.c
+++ b/ogg_afh.c
@@ -133,8 +133,11 @@ static int ogg_compute_header_len(char *map, size_t numbytes,
        memcpy(buf, map, len);
        ogg_sync_wrote(sync_in, (long)len);
        ret = -E_SYNC_PAGEOUT;
-       if (ogg_sync_pageout(sync_in, &page) <= 0)
+       if (ogg_sync_pageout(sync_in, &page) <= 0) {
+               free(stream_in);
+               free(stream_out);
                goto err1;
+       }
        serial = ogg_page_serialno(&page);
        ogg_stream_init(stream_in, serial);
        ogg_stream_init(stream_out, serial);