Author: gschneider
Date: Tue Aug 18 15:39:28 2009
New Revision: 42764
URL:
http://svn.reactos.org/svn/reactos?rev=42764&view=rev
Log:
- GetConsoleAliasA: Check for invalid target buffer, failed memory allocations (3x)
- Found by Amine Khaldi
Modified:
trunk/reactos/dll/win32/kernel32/misc/console.c
Modified: trunk/reactos/dll/win32/kernel32/misc/console.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/misc/co…
==============================================================================
--- trunk/reactos/dll/win32/kernel32/misc/console.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/kernel32/misc/console.c [iso-8859-1] Tue Aug 18 15:39:28 2009
@@ -2,7 +2,7 @@
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
- * FILE: lib/kernel32/misc/console.c
+ * FILE: dll/win32/kernel32/misc/console.c
* PURPOSE: Win32 server console functions
* PROGRAMMER: James Tabor
* <jimtabor(a)adsl-64-217-116-74.dsl.hstntx.swbell.net>
@@ -426,15 +426,39 @@
DPRINT("GetConsoleAliasA entered\n");
+ if (lpTargetBuffer == NULL)
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return 0;
+ }
+
dwSourceSize = (strlen(lpSource)+1) * sizeof(WCHAR);
lpwSource = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwSourceSize);
+ if (lpwSource == NULL)
+ {
+ SetLastError(ERROR_NOT_ENOUGH_MEMORY);
+ return 0;
+ }
MultiByteToWideChar(CP_ACP, 0, lpSource, -1, lpwSource, dwSourceSize);
dwExeNameSize = (strlen(lpExeName)+1) * sizeof(WCHAR);
lpwExeName = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwExeNameSize);
+ if (lpwExeName == NULL)
+ {
+ HeapFree(GetProcessHeap(), 0, lpwSource);
+ SetLastError(ERROR_NOT_ENOUGH_MEMORY);
+ return 0;
+ }
MultiByteToWideChar(CP_ACP, 0, lpExeName, -1, lpwExeName, dwExeNameSize);
lpwTargetBuffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, TargetBufferLength *
sizeof(WCHAR));
+ if (lpwTargetBuffer == NULL)
+ {
+ HeapFree(GetProcessHeap(), 0, lpwSource);
+ HeapFree(GetProcessHeap(), 0, lpwExeName);
+ SetLastError(ERROR_NOT_ENOUGH_MEMORY);
+ return 0;
+ }
dwResult = GetConsoleAliasW(lpwSource, lpwTargetBuffer, TargetBufferLength *
sizeof(WCHAR), lpwExeName);