Pierre Schweitzer : msacm32: Fix buffer double free.

Alexandre Julliard julliard at winehq.org
Wed Dec 7 13:57:13 CST 2011


Module: wine
Branch: master
Commit: 1ac7096728dbb46a56f84fa0d25fdc3cc5282519
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=1ac7096728dbb46a56f84fa0d25fdc3cc5282519

Author: Pierre Schweitzer <pierre at reactos.org>
Date:   Tue Dec  6 21:52:51 2011 +0100

msacm32: Fix buffer double free.

---

 dlls/msacm32/internal.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/dlls/msacm32/internal.c b/dlls/msacm32/internal.c
index 239f4d3..b3f6bf3 100644
--- a/dlls/msacm32/internal.c
+++ b/dlls/msacm32/internal.c
@@ -1016,6 +1016,9 @@ PWINE_ACMLOCALDRIVERINST MSACM_OpenLocalDriver(PWINE_ACMLOCALDRIVER paldrv, LPAR
     PWINE_ACMLOCALDRIVERINST pDrvInst;
     
     pDrvInst = HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMLOCALDRIVERINST));
+    if (!pDrvInst)
+        return NULL;
+
     pDrvInst->pLocalDriver = paldrv;
     pDrvInst->dwDriverID = 0;
     pDrvInst->pNextACMInst = NULL;
@@ -1037,9 +1040,14 @@ PWINE_ACMLOCALDRIVERINST MSACM_OpenLocalDriver(PWINE_ACMLOCALDRIVER paldrv, LPAR
         ret = MSACM_OpenLocalDriver(paldrv, lParam2);
         if (!ret)
         {
-            MSACM_CloseLocalDriver(pDrvInst);
             ERR("load1 failed\n");
-            goto exit;
+            /* If MSACM_CloseLocalDriver returns TRUE,
+             * then pDrvInst has been freed
+             */
+            if (!MSACM_CloseLocalDriver(pDrvInst))
+                goto exit;
+
+            return NULL;
         }
         pDrvInst->bSession = TRUE;
         return ret;




More information about the wine-cvs mailing list