cmdline: avifix -f 25,1 -i out.avi
causes segfault on large avi file (out.avi is 4197853758 bytes).

gdb report:
Program terminated with signal 11, Segmentation fault.
#0  0x0804d934 in AVI_close (AVI=0x97d7008) at avilib.c:1913
1913               if (AVI->video_superindex->stdindex[j]) {
(gdb) bt
#0  0x0804d934 in AVI_close (AVI=0x97d7008) at avilib.c:1913
#1  0x08049173 in main (argc=2019847785, argv=0x78) at avifix.c:344

Attached patch fixes this for me.

--
WBR,
Vadim Druzhin <[EMAIL PROTECTED]>
diff -urN transcode-1.0.4.orig/avilib/avilib.c transcode-1.0.4/avilib/avilib.c
--- transcode-1.0.4.orig/avilib/avilib.c        2005-11-06 08:57:52.000000000 
+0300
+++ transcode-1.0.4/avilib/avilib.c     2007-11-08 16:47:01.000000000 +0300
@@ -2483,6 +2483,7 @@
            a = hdrl_data+i;
 
            AVI->video_superindex = (avisuperindex_chunk *) malloc (sizeof 
(avisuperindex_chunk));
+            memset(AVI->video_superindex, 0, sizeof (avisuperindex_chunk));
            memcpy (AVI->video_superindex->fcc, a, 4);             a += 4;
            AVI->video_superindex->dwSize = str2ulong(a);          a += 4;
            AVI->video_superindex->wLongsPerEntry = str2ushort(a); a += 2;

Reply via email to