[SHELL32]
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Tue, 12 Jul 2016 23:00:50 +0000 (23:00 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Tue, 12 Jul 2016 23:00:50 +0000 (23:00 +0000)
- Use StringCbCopyW

[PROGMAN]
- Use StringCbCopyW: CID #1363712.
- Don't read registry values in a registry key if we failed to open it. CID #514350.

svn path=/trunk/; revision=71912

reactos/base/shell/progman/dialog.c
reactos/dll/win32/shell32/dialogs/dialogs.cpp

index 526efb0..faf2f91 100644 (file)
@@ -516,7 +516,7 @@ EnumPickIconResourceProc(HMODULE hModule, LPCWSTR lpszType, LPWSTR lpszName, LON
     if (IS_INTRESOURCE(lpszName))
         swprintf(szName, L"%u", lpszName);
     else
-        wcscpy(szName, lpszName);
+        StringCbCopyW(szName, sizeof(szName), lpszName);
 
     hIcon = (HICON)LoadImageW(hModule, lpszName, IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);
     if (hIcon == NULL)
@@ -1026,6 +1026,9 @@ VOID DIALOG_Execute(VOID)
     DWORD dwSize;
     DWORD dwType;
 
+    ExecuteContext.hKeyPMRecentFilesList = NULL;
+    ExecuteContext.bCheckBinaryType = TRUE;
+
     lRet = RegCreateKeyExW(Globals.hKeyProgMan,
                            L"Recent File List",
                            0,
@@ -1035,39 +1038,42 @@ VOID DIALOG_Execute(VOID)
                            NULL,
                            &ExecuteContext.hKeyPMRecentFilesList,
                            NULL);
-
-    dwSize = sizeof(ExecuteContext.dwMaxFiles);
-    lRet = RegQueryValueExW(ExecuteContext.hKeyPMRecentFilesList,
-                            L"Max Files",
-                            NULL,
-                            &dwType,
-                            (LPBYTE)&ExecuteContext.dwMaxFiles,
-                            &dwSize);
-    if (lRet != ERROR_SUCCESS || dwType != REG_DWORD)
+    if (lRet == ERROR_SUCCESS)
     {
-        ExecuteContext.dwMaxFiles = 4;
         dwSize = sizeof(ExecuteContext.dwMaxFiles);
-        lRet = RegSetValueExW(ExecuteContext.hKeyPMRecentFilesList,
-                              L"Max Files",
-                              0,
-                              REG_DWORD,
-                              (LPBYTE)&ExecuteContext.dwMaxFiles,
-                              sizeof(ExecuteContext.dwMaxFiles));
-    }
+        lRet = RegQueryValueExW(ExecuteContext.hKeyPMRecentFilesList,
+                                L"Max Files",
+                                NULL,
+                                &dwType,
+                                (LPBYTE)&ExecuteContext.dwMaxFiles,
+                                &dwSize);
+        if (lRet != ERROR_SUCCESS || dwType != REG_DWORD)
+        {
+            ExecuteContext.dwMaxFiles = 4;
+            dwSize = sizeof(ExecuteContext.dwMaxFiles);
+            lRet = RegSetValueExW(ExecuteContext.hKeyPMRecentFilesList,
+                                  L"Max Files",
+                                  0,
+                                  REG_DWORD,
+                                  (LPBYTE)&ExecuteContext.dwMaxFiles,
+                                  sizeof(ExecuteContext.dwMaxFiles));
+        }
 
-    dwSize = sizeof(ExecuteContext.bCheckBinaryType);
-    lRet = RegQueryValueExW(Globals.hKeyPMSettings,
-                            L"CheckBinaryType",
-                            NULL,
-                            &dwType,
-                            (LPBYTE)&ExecuteContext.bCheckBinaryType,
-                            &dwSize);
-    if (lRet != ERROR_SUCCESS || dwType != REG_DWORD)
-    {
-        ExecuteContext.bCheckBinaryType = TRUE;
+        dwSize = sizeof(ExecuteContext.bCheckBinaryType);
+        lRet = RegQueryValueExW(Globals.hKeyPMSettings,
+                                L"CheckBinaryType",
+                                NULL,
+                                &dwType,
+                                (LPBYTE)&ExecuteContext.bCheckBinaryType,
+                                &dwSize);
+        if (lRet != ERROR_SUCCESS || dwType != REG_DWORD)
+        {
+            ExecuteContext.bCheckBinaryType = TRUE;
+        }
     }
 
     DialogBoxParamW(Globals.hInstance, MAKEINTRESOURCEW(IDD_EXECUTE), Globals.hMainWnd, DIALOG_EXECUTE_DlgProc, (LPARAM)&ExecuteContext);
 
-    RegCloseKey(ExecuteContext.hKeyPMRecentFilesList);
+    if (ExecuteContext.hKeyPMRecentFilesList)
+        RegCloseKey(ExecuteContext.hKeyPMRecentFilesList);
 }
index 077d28e..557e4bc 100644 (file)
@@ -64,7 +64,7 @@ BOOL CALLBACK EnumPickIconResourceProc(HMODULE hModule,
     if (IS_INTRESOURCE(lpszName))
         swprintf(szName, L"%u", (DWORD)lpszName);
     else
-        wcscpy(szName, (WCHAR*)lpszName);
+        StringCbCopyW(szName, sizeof(szName), lpszName);
 
     hIcon = LoadIconW(hModule, lpszName);
     if (hIcon == NULL)