ntdll/actctx: Handle empty <dependency> element.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Nikolay Sivov 2020-10-20 13:05:32 +03:00 committed by Alexandre Julliard
parent 7201688841
commit d3ce5fff85
2 changed files with 21 additions and 0 deletions

View File

@ -290,6 +290,13 @@ static const char manifest10[] =
"</asmv2:trustInfo>" "</asmv2:trustInfo>"
"</assembly>"; "</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[] = static const char testdep_manifest1[] =
"<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">" "<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">"
"<assemblyIdentity type=\"win32\" name=\"testdep\" version=\"6.5.4.3\" processorArchitecture=\"" ARCH "\"/>" "<assemblyIdentity type=\"win32\" name=\"testdep\" version=\"6.5.4.3\" processorArchitecture=\"" ARCH "\"/>"
@ -2240,6 +2247,18 @@ static void test_actctx(void)
else else
skip("Could not create manifest file 10\n"); 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"); trace("manifest4\n");
if(!create_manifest_file("test4.manifest", manifest4, -1, NULL, NULL)) { if(!create_manifest_file("test4.manifest", manifest4, -1, NULL, NULL)) {

View File

@ -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)) while (next_xml_elem(xmlbuf, &elem, parent))
{ {
if (xml_elem_cmp(&elem, dependentAssemblyW, asmv1W)) if (xml_elem_cmp(&elem, dependentAssemblyW, asmv1W))