[PATCH 13/27] [Kernel32]: ActCtx: now parsing and storing some
attributes for a file
Eric Pouech
eric.pouech at wanadoo.fr
Sat Apr 28 07:22:16 CDT 2007
element
A+
---
dlls/kernel32/actctx.c | 30 ++++++++++++++++++++++++++++++
1 files changed, 30 insertions(+), 0 deletions(-)
diff --git a/dlls/kernel32/actctx.c b/dlls/kernel32/actctx.c
index c4928cb..d82e52c 100644
--- a/dlls/kernel32/actctx.c
+++ b/dlls/kernel32/actctx.c
@@ -128,6 +128,7 @@ struct entity
struct dll_redirect
{
LPCWSTR name;
+ LPCWSTR hash;
unsigned num_entities;
struct entity* entities;
};
@@ -165,6 +166,7 @@ struct actctx_loader
};
#define PUBLIC_KEY_TOKEN_LEN 16
+#define HASH_LEN 40
static WCHAR* xstrdupW(const WCHAR* str)
{
@@ -240,6 +242,7 @@ static struct dll_redirect* add_dll_redi
if (!assembly->dlls) return NULL;
dll = &assembly->dlls[assembly->num_dlls++];
dll->name = NULL;
+ dll->hash = NULL;
dll->num_entities = 0;
dll->entities = NULL;
@@ -376,12 +379,16 @@ #define WINDOWCLASS_ELEM
#define ELEM_END(elem) "/" elem
#define CLSID_ATTR "clsid"
+#define HASH_ATTR "hash"
+#define HASHALG_ATTR "hashalg"
#define HELPDIR_ATTR "helpdir"
#define IID_ATTR "iid"
+#define LOADFROM_ATTR "loadFrom"
#define MANIFESTVERSION_ATTR "manifestVersion"
#define NAME_ATTR "name"
#define PROCESSORARCHITECTURE_ATTR "processorArchitecture"
#define PUBLICKEYTOKEN_ATTR "publicKeyToken"
+#define SIZE_ATTR "size"
#define TLBID_ATTR "tlbid"
#define TYPE_ATTR "type"
#define VERSION_ATTR "version"
@@ -746,6 +753,28 @@ static BOOL parse_file_elem(xmlbuf_t* xm
dll->name = xstrdupXW(&attr_value);
TRACE("name=%s\n", debugstr_xmlstr(&attr_value));
}
+ else if (xmlstr_cmp(&attr_name, HASH_ATTR))
+ {
+ if (attr_value.len != HASH_LEN) return FALSE;
+ dll->hash = xstrdupXW(&attr_value);
+ }
+ else if (xmlstr_cmp(&attr_name, HASHALG_ATTR))
+ {
+ if (!xmlstr_cmp(&attr_value, "SHA1"))
+ {
+ FIXME("Hash algo should be SHA1, got %s\n",
+ debugstr_xmlstr(&attr_value));
+ }
+ }
+ /* the following two are not documented (just present in schemas) */
+ else if (xmlstr_cmp(&attr_name, LOADFROM_ATTR))
+ {
+ FIXME("loadFrom=%s\n", debugstr_xmlstr(&attr_value));
+ }
+ else if (xmlstr_cmp(&attr_name, SIZE_ATTR))
+ {
+ FIXME("size=%s\n", debugstr_xmlstr(&attr_value));
+ }
else
{
WARN("wrong attr %s=%s\n", debugstr_xmlstr(&attr_name),
@@ -1397,6 +1426,7 @@ void WINAPI ReleaseActCtx(HANDLE hActCtx
}
HeapFree(GetProcessHeap(), 0, dll->entities);
HeapFree(GetProcessHeap(), 0, (void*)dll->name);
+ HeapFree(GetProcessHeap(), 0, (void*)dll->hash);
}
HeapFree(GetProcessHeap(), 0, assembly->dlls);
HeapFree(GetProcessHeap(), 0, (void*)assembly->manifest.info);
More information about the wine-patches
mailing list