avifil32: fix memory leak (found by Smatch)

Lionel_Debroux lionel_debroux at yahoo.fr
Fri Aug 31 09:21:23 CDT 2007


IAVIStream_fnSetFormat leaks some heap memory in four error paths. Found
in Michael Stefaniuc's list of potential Wine bugs detected
by Smatch.


2007-08-31  Lionel Debroux <lionel_debroux at yahoo.fr>
       * dlls/avifil32/avifile.c:
       avifil32: fix memory leak (found by Smatch)

-------------- next part --------------
>From 2500d41f6210200221026ed9c39bb0a3760d5ceb Mon Sep 17 00:00:00 2001
From: Lionel Debroux <lionel_debroux at yahoo.fr>
Date: Fri, 31 Aug 2007 16:18:38 +0200
Subject: avifil32: fix memory leak (found by Smatch).

---
 dlls/avifil32/avifile.c |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/dlls/avifil32/avifile.c b/dlls/avifil32/avifile.c
index 3ed6386..7d80a43 100644
--- a/dlls/avifil32/avifile.c
+++ b/dlls/avifil32/avifile.c
@@ -1018,14 +1018,22 @@ static HRESULT WINAPI IAVIStream_fnSetFormat(IAVIStream *iface, LONG pos,
       lppc->peNew[n].peFlags = 0;
     }
 
-    if (mmioSeek(This->paf->hmmio, This->paf->dwNextFramePos, SEEK_SET) == -1)
+    if (mmioSeek(This->paf->hmmio, This->paf->dwNextFramePos, SEEK_SET) == -1) {
+      HeapFree(GetProcessHeap(), 0, lppc);
       return AVIERR_FILEWRITE;
-    if (mmioCreateChunk(This->paf->hmmio, &ck, 0) != S_OK)
+    }
+    if (mmioCreateChunk(This->paf->hmmio, &ck, 0) != S_OK) {
+      HeapFree(GetProcessHeap(), 0, lppc);
       return AVIERR_FILEWRITE;
-    if (mmioWrite(This->paf->hmmio, (HPSTR)lppc, ck.cksize) != ck.cksize)
+    }
+    if (mmioWrite(This->paf->hmmio, (HPSTR)lppc, ck.cksize) != ck.cksize) {
+      HeapFree(GetProcessHeap(), 0, lppc);
       return AVIERR_FILEWRITE;
-    if (mmioAscend(This->paf->hmmio, &ck, 0) != S_OK)
+    }
+    if (mmioAscend(This->paf->hmmio, &ck, 0) != S_OK) {
+      HeapFree(GetProcessHeap(), 0, lppc);
       return AVIERR_FILEWRITE;
+    }
     This->paf->dwNextFramePos += ck.cksize + 2 * sizeof(DWORD);
 
     HeapFree(GetProcessHeap(), 0, lppc);
-- 
1.4.4.4



More information about the wine-patches mailing list