[ros-diffs] [pschweitzer] 54610: [MSACM32] Check allocation success. Prevent buffer double free. Already sent & committed upstream: http://source.winehq.org/git/wine.git/commit/1ac7096728dbb46a56f84fa0d25fdc3c...

pschweitzer at svn.reactos.org pschweitzer at svn.reactos.org
Wed Dec 7 22:16:00 UTC 2011


Author: pschweitzer
Date: Wed Dec  7 22:16:00 2011
New Revision: 54610

URL: http://svn.reactos.org/svn/reactos?rev=54610&view=rev
Log:
[MSACM32]
Check allocation success.
Prevent buffer double free.
Already sent & committed upstream: http://source.winehq.org/git/wine.git/commit/1ac7096728dbb46a56f84fa0d25fdc3cc5282519

Modified:
    trunk/reactos/dll/win32/msacm32/internal.c

Modified: trunk/reactos/dll/win32/msacm32/internal.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msacm32/internal.c?rev=54610&r1=54609&r2=54610&view=diff
==============================================================================
--- trunk/reactos/dll/win32/msacm32/internal.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msacm32/internal.c [iso-8859-1] Wed Dec  7 22:16:00 2011
@@ -1007,6 +1007,9 @@
     PWINE_ACMLOCALDRIVERINST pDrvInst;
     
     pDrvInst = HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMLOCALDRIVERINST));
+    if (!pDrvInst)
+        return NULL;
+
     pDrvInst->pLocalDriver = paldrv;
     pDrvInst->dwDriverID = 0;
     pDrvInst->pNextACMInst = NULL;
@@ -1028,9 +1031,14 @@
         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 Ros-diffs mailing list