[PATCH] fixed RegEnumKey(Ex)W buffer sizes

Marcus Meissner meissner at suse.de
Sun Oct 12 12:50:20 CDT 2008


Hi,

This fixes the RegEnumKey(Ex)W buffer sizes
to be in number of characters instead of bytes.

Ciao, Marcus
---
 dlls/msdmo/dmoreg.c    |    4 ++--
 dlls/shell32/classes.c |    2 +-
 dlls/shell32/shlexec.c |    2 +-
 dlls/winmm/mci.c       |    2 +-
 dlls/wnaspi32/aspi.c   |    6 +++---
 5 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/dlls/msdmo/dmoreg.c b/dlls/msdmo/dmoreg.c
index 22789d9..743f0bb 100644
--- a/dlls/msdmo/dmoreg.c
+++ b/dlls/msdmo/dmoreg.c
@@ -737,7 +737,7 @@ HRESULT read_types(HKEY root, LPCWSTR key, ULONG *supplied, ULONG requested, DMO
 
           while (rc == ERROR_SUCCESS)
           {
-            len = MAX_PATH * sizeof(WCHAR);
+            len = MAX_PATH;
             rc = RegEnumKeyExW(hkey, index, szNextKey, &len, NULL, NULL, NULL, NULL);
             if (rc == ERROR_SUCCESS)
             {
@@ -749,7 +749,7 @@ HRESULT read_types(HKEY root, LPCWSTR key, ULONG *supplied, ULONG requested, DMO
               RegOpenKeyExW(hkey, szNextKey, 0, KEY_READ, &subk);
               while (rcs == ERROR_SUCCESS)
               {
-                len = MAX_PATH * sizeof(WCHAR);
+                len = MAX_PATH;
                 rcs = RegEnumKeyExW(subk, sub_index, szSubKey, &len, NULL, NULL, NULL, NULL);
                 if (rcs == ERROR_SUCCESS)
                 {
diff --git a/dlls/shell32/classes.c b/dlls/shell32/classes.c
index d6e9864..73c8822 100644
--- a/dlls/shell32/classes.c
+++ b/dlls/shell32/classes.c
@@ -187,7 +187,7 @@ BOOL HCR_GetExecuteCommandW( HKEY hkeyClass, LPCWSTR szClass, LPCWSTR szVerb, LP
             return FALSE;
         ret = FALSE;
 
-        if (HCR_GetDefaultVerbW(hkeyClass, szVerb, sTempVerb, sizeof(sTempVerb)))
+        if (HCR_GetDefaultVerbW(hkeyClass, szVerb, sTempVerb, sizeof(sTempVerb)/sizeof(sTempVerb[0])))
         {
             WCHAR sTemp[MAX_PATH];
             lstrcpyW(sTemp, swShell);
diff --git a/dlls/shell32/shlexec.c b/dlls/shell32/shlexec.c
index bf820ca..5b5785b 100644
--- a/dlls/shell32/shlexec.c
+++ b/dlls/shell32/shlexec.c
@@ -472,7 +472,7 @@ static UINT SHELL_FindExecutableByOperation(LPCWSTR lpOperation, LPWSTR key, LPW
 
     if (RegOpenKeyExW(HKEY_CLASSES_ROOT, filetype, 0, 0x02000000, &hkeyClass))
         return SE_ERR_NOASSOC;
-    if (!HCR_GetDefaultVerbW(hkeyClass, lpOperation, verb, sizeof(verb)))
+    if (!HCR_GetDefaultVerbW(hkeyClass, lpOperation, verb, sizeof(verb)/sizeof(verb[0])))
         return SE_ERR_NOASSOC;
     RegCloseKey(hkeyClass);
 
diff --git a/dlls/winmm/mci.c b/dlls/winmm/mci.c
index 0053619..af17e5c 100644
--- a/dlls/winmm/mci.c
+++ b/dlls/winmm/mci.c
@@ -1899,7 +1899,7 @@ static	DWORD MCI_SysInfo(UINT uDevID, DWORD dwFlags, LPMCI_SYSINFO_PARMSW lpParm
 		if (RegQueryInfoKeyW( hKey, 0, 0, 0, &cnt, 
                                       0, 0, 0, 0, 0, 0, 0) == ERROR_SUCCESS && 
                     lpParms->dwNumber <= cnt) {
-    		    DWORD bufLen = sizeof(buf);
+    		    DWORD bufLen = sizeof(buf)/sizeof(buf[0]);
 		    if (RegEnumKeyExW(hKey, lpParms->dwNumber - 1, 
                                       buf, &bufLen, 0, 0, 0, 0) == ERROR_SUCCESS)
                         s = buf;
diff --git a/dlls/wnaspi32/aspi.c b/dlls/wnaspi32/aspi.c
index 11c3f3b..2fa1205 100644
--- a/dlls/wnaspi32/aspi.c
+++ b/dlls/wnaspi32/aspi.c
@@ -128,7 +128,7 @@ int ASPI_GetNumControllers(void)
         ERR("Could not open HKLM\\%s\n", debugstr_w(wDevicemapScsi));
         return 0;
     }
-    while (RegEnumKeyW(hkeyScsi, i++, wPortName, sizeof(wPortName)) == ERROR_SUCCESS)
+    while (RegEnumKeyW(hkeyScsi, i++, wPortName, sizeof(wPortName)/sizeof(wPortName[0])) == ERROR_SUCCESS)
     {
         if (RegOpenKeyExW(hkeyScsi, wPortName, 0, KEY_QUERY_VALUE, &hkeyPort) == ERROR_SUCCESS)
         {
@@ -190,7 +190,7 @@ DWORD ASPI_GetHCforController( int controller )
         ERR("Could not open HKLM\\%s\n", debugstr_w(wDevicemapScsi));
         return 0xFFFFFFFF;
     }
-    while (RegEnumKeyW(hkeyScsi, i++, wPortName, sizeof(wPortName)) == ERROR_SUCCESS)
+    while (RegEnumKeyW(hkeyScsi, i++, wPortName, sizeof(wPortName)/sizeof(wPortName[0])) == ERROR_SUCCESS)
     {
         if (RegOpenKeyExW(hkeyScsi, wPortName, 0, KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS,
                           &hkeyPort) == ERROR_SUCCESS)
@@ -213,7 +213,7 @@ DWORD ASPI_GetHCforController( int controller )
         return 0xFFFFFFFF;
     }
 
-    if (RegEnumKeyW(hkeyPort, -num_ha, wBusName, sizeof(wBusName)) != ERROR_SUCCESS)
+    if (RegEnumKeyW(hkeyPort, -num_ha, wBusName, sizeof(wBusName)/sizeof(wBusName[0])) != ERROR_SUCCESS)
     {
         ERR("Failed to enumerate keys\n");
         RegCloseKey(hkeyPort);
-- 
1.5.6



More information about the wine-patches mailing list