From 3d5db6bdf5e13a61a226ff5531e8f3fb18ecf3e9 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Wed, 11 Nov 2015 14:16:59 +0100 Subject: [PATCH] server: Return KeyFullInformation maximal string lengths in bytes. Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- dlls/advapi32/registry.c | 12 ++++++------ server/registry.c | 13 ++++--------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/dlls/advapi32/registry.c b/dlls/advapi32/registry.c index 67120cd6530..0f23f4cf48f 100644 --- a/dlls/advapi32/registry.c +++ b/dlls/advapi32/registry.c @@ -895,10 +895,10 @@ LSTATUS WINAPI RegQueryInfoKeyW( HKEY hkey, LPWSTR class, LPDWORD class_len, LPD if (class_len) *class_len = info->ClassLength / sizeof(WCHAR); if (subkeys) *subkeys = info->SubKeys; - if (max_subkey) *max_subkey = info->MaxNameLen; - if (max_class) *max_class = info->MaxClassLen; + if (max_subkey) *max_subkey = info->MaxNameLen / sizeof(WCHAR); + if (max_class) *max_class = info->MaxClassLen / sizeof(WCHAR); if (values) *values = info->Values; - if (max_value) *max_value = info->MaxValueNameLen; + if (max_value) *max_value = info->MaxValueNameLen / sizeof(WCHAR); if (max_data) *max_data = info->MaxValueDataLen; if (modif) *modif = *(FILETIME *)&info->LastWriteTime; @@ -1090,10 +1090,10 @@ LSTATUS WINAPI RegQueryInfoKeyA( HKEY hkey, LPSTR class, LPDWORD class_len, LPDW else status = STATUS_SUCCESS; if (subkeys) *subkeys = info->SubKeys; - if (max_subkey) *max_subkey = info->MaxNameLen; - if (max_class) *max_class = info->MaxClassLen; + if (max_subkey) *max_subkey = info->MaxNameLen / sizeof(WCHAR); + if (max_class) *max_class = info->MaxClassLen / sizeof(WCHAR); if (values) *values = info->Values; - if (max_value) *max_value = info->MaxValueNameLen; + if (max_value) *max_value = info->MaxValueNameLen / sizeof(WCHAR); if (max_data) *max_data = info->MaxValueDataLen; if (modif) *modif = *(FILETIME *)&info->LastWriteTime; diff --git a/server/registry.c b/server/registry.c index 3c9ae70363d..94777b38857 100644 --- a/server/registry.c +++ b/server/registry.c @@ -908,18 +908,13 @@ static void enum_key( const struct key *key, int index, int info_class, case KeyFullInformation: for (i = 0; i <= key->last_subkey; i++) { - struct key *subkey = key->subkeys[i]; - len = subkey->namelen / sizeof(WCHAR); - if (len > max_subkey) max_subkey = len; - len = subkey->classlen / sizeof(WCHAR); - if (len > max_class) max_class = len; + if (key->subkeys[i]->namelen > max_subkey) max_subkey = key->subkeys[i]->namelen; + if (key->subkeys[i]->classlen > max_class) max_class = key->subkeys[i]->classlen; } for (i = 0; i <= key->last_value; i++) { - len = key->values[i].namelen / sizeof(WCHAR); - if (len > max_value) max_value = len; - len = key->values[i].len; - if (len > max_data) max_data = len; + if (key->values[i].namelen > max_value) max_value = key->values[i].namelen; + if (key->values[i].len > max_data) max_data = key->values[i].len; } reply->max_subkey = max_subkey; reply->max_class = max_class; -- 2.11.4.GIT