Author: hbelusca
Date: Tue Jul 12 23:00:50 2016
New Revision: 71912

URL: http://svn.reactos.org/svn/reactos?rev=71912&view=rev
Log:
[SHELL32]
- Use StringCbCopyW

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

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

Modified: trunk/reactos/base/shell/progman/dialog.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/progman/dialog.c?rev=71912&r1=71911&r2=71912&view=diff
==============================================================================
--- trunk/reactos/base/shell/progman/dialog.c   [iso-8859-1] (original)
+++ trunk/reactos/base/shell/progman/dialog.c   [iso-8859-1] Tue Jul 12 
23:00:50 2016
@@ -516,7 +516,7 @@
     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 @@
     DWORD dwSize;
     DWORD dwType;
 
+    ExecuteContext.hKeyPMRecentFilesList = NULL;
+    ExecuteContext.bCheckBinaryType = TRUE;
+
     lRet = RegCreateKeyExW(Globals.hKeyProgMan,
                            L"Recent File List",
                            0,
@@ -1035,39 +1038,42 @@
                            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)
-    {
-        ExecuteContext.dwMaxFiles = 4;
+    if (lRet == ERROR_SUCCESS)
+    {
         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);
+}

Modified: trunk/reactos/dll/win32/shell32/dialogs/dialogs.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/dialogs/dialogs.cpp?rev=71912&r1=71911&r2=71912&view=diff
==============================================================================
--- trunk/reactos/dll/win32/shell32/dialogs/dialogs.cpp [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/dialogs/dialogs.cpp [iso-8859-1] Tue Jul 12 
23:00:50 2016
@@ -64,7 +64,7 @@
     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)


Reply via email to