tags 389571 patch
thanks

On Tue, Sep 26, 2006 at 04:54:33PM +0300, Niko Tyni wrote:
> Package: libvorbis-perl

> *** glibc detected *** double free or corruption (!prev): 0x0816ab78 ***
> make: *** [test_dynamic] Aborted

> Perl doesn't know that ov_clear() has closed the file, and when it
> tries to close it (explicitly via close() or implicitly at the end of
> the program), the result is a double free.

OK, the attached patch seems to help. It dups the filehandle before
passing it to ov_open(). This way libvorbisfile can do what it wants
with the resulting handle, and Perl gets to keep its own.

Cheers,
-- 
Niko Tyni       [EMAIL PROTECTED]
--- libvorbis-perl-0.05/Vorbis.xs       2003-08-13 17:16:29.000000000 +0300
+++ libvorbis-perl-0.05-fixed/Vorbis.xs 2006-09-26 21:24:11.000000000 +0300
@@ -62,8 +62,13 @@
         char *initial
         long ibytes
         CODE:
+       FILE *dupfile;
+       /* dup the file so that ov_clear() can close it behind 
+          Perl's back (Debian bug #389571) */ 
+       dupfile = fdopen(dup(fileno(file)), "r");
+
         /* we swapped file and self for an OO interface */
-        RETVAL = ov_open(file, self, initial, ibytes);
+        RETVAL = ov_open(dupfile, self, initial, ibytes);
         OUTPUT:
         RETVAL
 

Reply via email to