Daniel Lehman : gdi32/tests: Add a test for double-free on repeated calls to Delete[Enh]MetaFile.

Alexandre Julliard julliard at winehq.org
Thu Jul 22 16:28:19 CDT 2021


Module: wine
Branch: master
Commit: 323416920f4e9c07ba224237a6bd0539803d7709
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=323416920f4e9c07ba224237a6bd0539803d7709

Author: Daniel Lehman <dlehman at esri.com>
Date:   Thu Jul 22 11:24:15 2021 +0200

gdi32/tests: Add a test for double-free on repeated calls to Delete[Enh]MetaFile.

Signed-off-by: Daniel Lehman <dlehman at esri.com>
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/gdi32/tests/metafile.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/dlls/gdi32/tests/metafile.c b/dlls/gdi32/tests/metafile.c
index 921ac888247..4f72079a615 100644
--- a/dlls/gdi32/tests/metafile.c
+++ b/dlls/gdi32/tests/metafile.c
@@ -3049,7 +3049,13 @@ static void test_metafile_file(void)
         EnumMetaFile(0, metafile, mf_enum_proc, 0);
     }
 
-    DeleteMetaFile(metafile);
+    ret = DeleteMetaFile(metafile);
+    ok(ret, "Could not delete metafile: %u\n", GetLastError());
+
+    SetLastError(0xdeadbeef);
+    ret = DeleteMetaFile(metafile);
+    ok(!ret, "DeleteMetaFile succeeded\n");
+    ok(GetLastError() == ERROR_INVALID_HANDLE, "GetLastError() = %u\n", GetLastError());
 
     SetLastError(0xdeadbeef);
     metafile = CloseMetaFile(dc);
@@ -3144,7 +3150,13 @@ static void test_enhmetafile_file(void)
         dump_emf_records(metafile, "emf_Bezier");
     }
 
-    DeleteEnhMetaFile(metafile);
+    ret = DeleteEnhMetaFile(metafile);
+    ok(ret, "Could not delete emf: %u\n", GetLastError());
+
+    SetLastError(0xdeadbeef);
+    ret = DeleteEnhMetaFile(metafile);
+    ok(!ret, "DeleteEnhMetaFile succeeded\n");
+    ok(GetLastError() == ERROR_INVALID_HANDLE, "GetLastError() = %u\n", GetLastError());
 
     SetLastError(0xdeadbeef);
     metafile = CloseEnhMetaFile(dc);




More information about the wine-cvs mailing list