fix memmory coruption in EnumDisplaySettingsExA

do not alloc memmory with heap. 

svn path=/trunk/; revision=15542
This commit is contained in:
Magnus Olsen 2005-05-27 14:22:06 +00:00
parent 68f4fc41bc
commit b73c53c40c

View file

@ -200,15 +200,7 @@ EnumDisplaySettingsExA(
{
BOOL rc;
UNICODE_STRING DeviceName;
LPDEVMODEW lpDevModeW;
lpDevModeW = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
sizeof(DEVMODEW) + lpDevMode->dmDriverExtra);
if ( lpDevModeW == NULL )
{
SetLastError ( ERROR_OUTOFMEMORY );
return FALSE;
}
DEVMODEW lpDevModeW;
if ( !RtlCreateUnicodeStringFromAsciiz ( &DeviceName, (PCSZ)lpszDeviceName ) )
{
@ -216,16 +208,16 @@ EnumDisplaySettingsExA(
return FALSE;
}
lpDevModeW->dmSize = sizeof(DEVMODEW);
lpDevModeW->dmDriverExtra = 0;
rc = NtUserEnumDisplaySettings ( &DeviceName, iModeNum, lpDevModeW,
memset(&lpDevModeW,0,sizeof(DEVMODEW));
lpDevModeW.dmSize = sizeof(DEVMODEW);
rc = NtUserEnumDisplaySettings ( &DeviceName, iModeNum, &lpDevModeW,
dwFlags );
RosRtlDevModeW2A ( lpDevMode, lpDevModeW );
RosRtlDevModeW2A ( lpDevMode, &lpDevModeW );
RtlFreeUnicodeString ( &DeviceName );
HeapFree ( GetProcessHeap(), 0, lpDevModeW );
return rc;
}