[WIN32K:NTGDI] Add missing probe to NtGdiGetPath.
authorThomas Faber <thomas.faber@reactos.org>
Tue, 31 Dec 2019 20:07:39 +0000 (21:07 +0100)
committerThomas Faber <thomas.faber@reactos.org>
Fri, 3 Jan 2020 10:21:24 +0000 (11:21 +0100)
win32ss/gdi/ntgdi/path.c

index 4a5277a..552bc9c 100644 (file)
@@ -222,7 +222,7 @@ BOOL PATH_RestorePath( DC *dst, DC *src )
        PATH_AssignGdiPath(pdstPath, psrcPath);
 
        PATH_UnlockPath(pdstPath);
-       PATH_UnlockPath(psrcPath);       
+       PATH_UnlockPath(psrcPath);
     }
     else
     {
@@ -1405,7 +1405,7 @@ PATH_PathToRegion(
     INT Mode,
     PREGION Rgn)
 {
-    int i, pos, polygons; 
+    int i, pos, polygons;
     PULONG counts;
     int Ret;
 
@@ -2694,8 +2694,21 @@ NtGdiGetPath(
 {
     INT ret = -1;
     PPATH pPath;
+    DC *dc;
+
+    _SEH2_TRY
+    {
+        ProbeForWrite(Points, nSize * sizeof(*Points), sizeof(ULONG));
+        ProbeForWrite(Types, nSize, 1);
+    }
+    _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+    {
+        SetLastNtError(_SEH2_GetExceptionCode());
+        _SEH2_YIELD(return -1);
+    }
+    _SEH2_END
 
-    DC *dc = DC_LockDc(hDC);
+    dc = DC_LockDc(hDC);
     DPRINT("NtGdiGetPath start\n");
     if (!dc)
     {