fix some bugs in regedit
authorChristoph von Wittich <christoph_vw@reactos.org>
Mon, 17 Oct 2005 23:38:24 +0000 (23:38 +0000)
committerChristoph von Wittich <christoph_vw@reactos.org>
Mon, 17 Oct 2005 23:38:24 +0000 (23:38 +0000)
like alloca -> HeapAlloc + HeapFree

svn path=/trunk/; revision=18544

reactos/subsys/system/regedit/regproc.c
reactos/subsys/system/regedit/security.c

index 17ab9ff..662ed2d 100644 (file)
@@ -1620,17 +1620,26 @@ LONG RegRenameKey(HKEY hKey, LPCTSTR lpSubKey, LPCTSTR lpNewName)
 {
     LPCTSTR s;
     LPTSTR lpNewSubKey;
+       LONG Ret = 0;
 
     s = _tcsrchr(lpSubKey, '\\');
     if (s)
     {
         s++;
-        lpNewSubKey = (LPTSTR) alloca((s - lpSubKey + _tcslen(lpNewName) + 1) * sizeof(TCHAR));
-        memcpy(lpNewSubKey, lpSubKey, (s - lpSubKey) * sizeof(TCHAR));
-        _tcscpy(lpNewSubKey + (s - lpSubKey), lpNewName);
-        lpNewName = lpNewSubKey;
+        lpNewSubKey = (LPTSTR) HeapAlloc(GetProcessHeap(), 0, (s - lpSubKey + _tcslen(lpNewName) + 1) * sizeof(TCHAR));
+        if (lpNewName != NULL) {
+                       memcpy(lpNewSubKey, lpSubKey, (s - lpSubKey) * sizeof(TCHAR));
+                       _tcscpy(lpNewSubKey + (s - lpSubKey), lpNewName);
+                       lpNewName = lpNewSubKey;                
+               }
     }
-    return RegMoveKey(hKey, lpNewName, hKey, lpSubKey);
+       if (lpNewName != NULL) {
+               Ret = RegMoveKey(hKey, lpNewName, hKey, lpSubKey);
+               if (s) {
+                       HeapFree(GetProcessHeap(), 0, lpNewSubKey);
+               }
+       }
+    return Ret;
 }
 
 LONG RegRenameValue(HKEY hKey, LPCTSTR lpSubKey, LPCTSTR lpDestValue, LPCTSTR lpSrcValue)
index ac54014..5a51080 100644 (file)
@@ -295,7 +295,7 @@ RegKeyEditPermissions(HWND hWndOwner,
                       LPCTSTR lpMachine,
                       LPCTSTR lpKeyName)
 {
-  BOOL Result;
+  BOOL Result = FALSE;
   LPWSTR Machine, KeyName;
   HKEY hInfoKey;
   LPREGKEYSECURITY RegKeySecurity;