Nikolay Sivov : ntdll/actctx: Handle empty <dependency> element.

Alexandre Julliard julliard at winehq.org
Tue Oct 20 15:57:17 CDT 2020


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Tue Oct 20 13:05:32 2020 +0300

ntdll/actctx: Handle empty <dependency> element.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernel32/tests/actctx.c | 19 +++++++++++++++++++
 dlls/ntdll/actctx.c          |  2 ++
 2 files changed, 21 insertions(+)

diff --git a/dlls/kernel32/tests/actctx.c b/dlls/kernel32/tests/actctx.c
index 4a9adc15748..4a6a22680e2 100644
--- a/dlls/kernel32/tests/actctx.c
+++ b/dlls/kernel32/tests/actctx.c
@@ -290,6 +290,13 @@ static const char manifest10[] =
 "</asmv2:trustInfo>"
 "</assembly>";
 
+/* Empty <dependency> element */
+static const char manifest11[] =
+"<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" xmlns:asmv2=\"urn:schemas-microsoft-com:asm.v2\" manifestVersion=\"1.0\">"
+"<assemblyIdentity version=\"1.0.0.0\"  name=\"Wine.Test\" type=\"win32\"></assemblyIdentity>"
+"<dependency />"
+"</assembly>";
+
 static const char testdep_manifest1[] =
 "<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">"
 "<assemblyIdentity type=\"win32\" name=\"testdep\" version=\"6.5.4.3\" processorArchitecture=\"" ARCH "\"/>"
@@ -2240,6 +2247,18 @@ static void test_actctx(void)
     else
         skip("Could not create manifest file 10\n");
 
+    if (create_manifest_file("test11.manifest", manifest11, -1, NULL, NULL))
+    {
+        handle = test_create("test11.manifest");
+        ok(handle != INVALID_HANDLE_VALUE, "Failed to create activation context for %s, error %u\n",
+                "manifest11", GetLastError());
+        DeleteFileA("test11.manifest");
+        if (handle != INVALID_HANDLE_VALUE)
+            ReleaseActCtx(handle);
+    }
+    else
+        skip("Could not create manifest file 11\n");
+
     trace("manifest4\n");
 
     if(!create_manifest_file("test4.manifest", manifest4, -1, NULL, NULL)) {
diff --git a/dlls/ntdll/actctx.c b/dlls/ntdll/actctx.c
index 7e18544cda8..b99d1655d22 100644
--- a/dlls/ntdll/actctx.c
+++ b/dlls/ntdll/actctx.c
@@ -2307,6 +2307,8 @@ static void parse_dependency_elem( xmlbuf_t *xmlbuf, struct actctx_loader *acl,
         }
     }
 
+    if (end) return;
+
     while (next_xml_elem(xmlbuf, &elem, parent))
     {
         if (xml_elem_cmp(&elem, dependentAssemblyW, asmv1W))




More information about the wine-cvs mailing list