Module: wine Branch: master Commit: b2b6fc1288525f290129ed8bfddd886fe090e3cc URL: http://source.winehq.org/git/wine.git/?a=commit;h=b2b6fc1288525f290129ed8bfd...
Author: Alexandre Julliard julliard@winehq.org Date: Thu Jul 19 18:13:27 2007 +0200
ntdll: Cope with missing assemblyIdentity elements in manifests.
---
dlls/ntdll/actctx.c | 30 +++++++++++++----------------- 1 files changed, 13 insertions(+), 17 deletions(-)
diff --git a/dlls/ntdll/actctx.c b/dlls/ntdll/actctx.c index 26bdf31..eb4214a 100644 --- a/dlls/ntdll/actctx.c +++ b/dlls/ntdll/actctx.c @@ -1174,7 +1174,6 @@ static BOOL parse_assembly_elem(xmlbuf_t* xmlbuf, struct actctx_loader* acl, { xmlstr_t attr_name, attr_value, elem; BOOL end = FALSE, error, version = FALSE, xmlns = FALSE, ret = TRUE; - struct assembly_identity ai;
TRACE("(%p)\n", xmlbuf);
@@ -1224,28 +1223,24 @@ static BOOL parse_assembly_elem(xmlbuf_t* xmlbuf, struct actctx_loader* acl, else if (assembly->type == ASSEMBLY_MANIFEST && assembly->no_inherit) return FALSE;
- if (!xmlstr_cmp(&elem, ASSEMBLYIDENTITY_ELEM)) + if (xmlstr_cmp(&elem, ASSEMBLYIDENTITY_ELEM)) { - WARN("expected assemblyIdentity element, got %s\n", debugstr_xmlstr(&elem)); - return FALSE; - } - - if (!parse_assembly_identity_elem(xmlbuf, acl->actctx, &ai)) return FALSE; + if (!parse_assembly_identity_elem(xmlbuf, acl->actctx, &assembly->id)) return FALSE; + ret = next_xml_elem(xmlbuf, &elem);
- if (expected_ai) - { - /* FIXME: more tests */ - if (assembly->type == ASSEMBLY_MANIFEST && - memcmp(&ai.version, &expected_ai->version, sizeof(ai.version))) + if (expected_ai) { - WARN("wrong version\n"); - return FALSE; + /* FIXME: more tests */ + if (assembly->type == ASSEMBLY_MANIFEST && + memcmp(&assembly->id.version, &expected_ai->version, sizeof(assembly->id.version))) + { + FIXME("wrong version\n"); + return FALSE; + } } }
- assembly->id = ai; - - while (ret && (ret = next_xml_elem(xmlbuf, &elem))) + while (ret) { if (xmlstr_cmp(&elem, ELEM_END(ASSEMBLY_ELEM))) { @@ -1281,6 +1276,7 @@ static BOOL parse_assembly_elem(xmlbuf_t* xmlbuf, struct actctx_loader* acl, WARN("wrong element %s\n", debugstr_xmlstr(&elem)); ret = FALSE; } + if (ret) ret = next_xml_elem(xmlbuf, &elem); }
return ret;