[DDRAW]
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Sat, 24 May 2014 09:53:24 +0000 (09:53 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Sat, 24 May 2014 09:53:24 +0000 (09:53 +0000)
Avoid buffer overrun in IDirectDraw::GetCaps. Patch by Jérôme Gardou.
CORE-4623 #resolve

svn path=/trunk/; revision=63428

reactos/dll/directx/ddraw/Ddraw/GetCaps.c

index fa03166..ba45e68 100644 (file)
@@ -101,7 +101,7 @@ Main_DirectDraw_GetCaps( LPDDRAWI_DIRECTDRAW_INT This, LPDDCAPS pDriverCaps,
 
                     if (CoreCaps->dwSize == sizeof(DDCORECAPS))
                     {
-                        memcpy(&myCaps->dwCaps, &CoreCaps->dwCaps, sizeof(DDCAPS_DX3));
+                        memcpy(myCaps, CoreCaps, sizeof(DDCAPS_DX3));
                     }
 
                     myCaps->dwVidMemFree = dwFree;
@@ -126,7 +126,7 @@ Main_DirectDraw_GetCaps( LPDDRAWI_DIRECTDRAW_INT This, LPDDCAPS pDriverCaps,
 
                     if (CoreCaps->dwSize == sizeof(DDCORECAPS))
                     {
-                        memcpy(&myCaps->dwCaps, &CoreCaps->dwCaps, sizeof(DDCORECAPS));
+                        memcpy(myCaps, CoreCaps, sizeof(DDCORECAPS));
                     }
 
                     myCaps->dwVidMemFree = dwFree;
@@ -152,7 +152,7 @@ Main_DirectDraw_GetCaps( LPDDRAWI_DIRECTDRAW_INT This, LPDDCAPS pDriverCaps,
 
                     if (CoreCaps->dwSize == sizeof(DDCORECAPS))
                     {
-                        memcpy(&myCaps->dwCaps, &CoreCaps->dwCaps, sizeof(DDCORECAPS));
+                        memcpy(myCaps, CoreCaps, sizeof(DDCORECAPS));
                     }
 
                     myCaps->dwVidMemFree = dwFree;
@@ -208,7 +208,7 @@ Main_DirectDraw_GetCaps( LPDDRAWI_DIRECTDRAW_INT This, LPDDCAPS pDriverCaps,
 
                     if (CoreCaps->dwSize == sizeof(DDCORECAPS))
                     {
-                        memcpy(&myCaps->dwCaps, &CoreCaps->dwCaps, sizeof(DDCAPS_DX3));
+                        memcpy(myCaps, CoreCaps, sizeof(DDCAPS_DX3));
                     }
 
                     myCaps->dwVidMemFree = dwFree;
@@ -233,7 +233,7 @@ Main_DirectDraw_GetCaps( LPDDRAWI_DIRECTDRAW_INT This, LPDDCAPS pDriverCaps,
 
                     if (CoreCaps->dwSize == sizeof(DDCORECAPS))
                     {
-                        memcpy(&myCaps->dwCaps, &CoreCaps->dwCaps, sizeof(DDCORECAPS));
+                        memcpy(myCaps, CoreCaps, sizeof(DDCORECAPS));
                     }
 
                     myCaps->dwVidMemFree = dwFree;
@@ -259,7 +259,7 @@ Main_DirectDraw_GetCaps( LPDDRAWI_DIRECTDRAW_INT This, LPDDCAPS pDriverCaps,
 
                     if (CoreCaps->dwSize == sizeof(DDCORECAPS))
                     {
-                        memcpy(&myCaps->dwCaps, &CoreCaps->dwCaps, sizeof(DDCORECAPS));
+                        memcpy(myCaps, CoreCaps, sizeof(DDCORECAPS));
                     }
 
                     myCaps->dwVidMemFree = dwFree;