Author: tkreuzer Date: Fri May 10 19:46:50 2013 New Revision: 58985
URL: http://svn.reactos.org/svn/reactos?rev=58985&view=rev Log: [SCSIPORT] Fix a bug in size calculation that causes memory corruption on 64 bit Fix some MSVC/x64 warnings
[UNIATA] Fix some MSVC/x64 warnings
Modified: trunk/reactos/drivers/storage/ide/uniata/id_ata.cpp trunk/reactos/drivers/storage/scsiport/scsiport.c
Modified: trunk/reactos/drivers/storage/ide/uniata/id_ata.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/ide/uniata/... ============================================================================== --- trunk/reactos/drivers/storage/ide/uniata/id_ata.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/storage/ide/uniata/id_ata.cpp [iso-8859-1] Fri May 10 19:46:50 2013 @@ -10671,8 +10671,8 @@ // KdPrint(( "AtapiCheckRegValue: RegistryPath %ws\n", RegistryPath->Buffer));
paramPath.Length = 0; - paramPath.MaximumLength = RegistryPath->Length + - (wcslen(PathSuffix)+2)*sizeof(WCHAR); + paramPath.MaximumLength = (USHORT)(RegistryPath->Length + + (wcslen(PathSuffix)+2)*sizeof(WCHAR)); paramPath.Buffer = (PWCHAR)ExAllocatePool(NonPagedPool, paramPath.MaximumLength); if(!paramPath.Buffer) { KdPrint(("AtapiCheckRegValue: couldn't allocate paramPath\n"));
Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/scsiport/sc... ============================================================================== --- trunk/reactos/drivers/storage/scsiport/scsiport.c [iso-8859-1] (original) +++ trunk/reactos/drivers/storage/scsiport/scsiport.c [iso-8859-1] Fri May 10 19:46:50 2013 @@ -623,8 +623,8 @@ { PSCSI_PORT_DEVICE_EXTENSION DeviceExtension; SCSI_PHYSICAL_ADDRESS PhysicalAddress; - ULONG BufferLength = 0; - ULONG Offset; + SIZE_T BufferLength = 0; + ULONG_PTR Offset; PSCSI_SG_ADDRESS SGList; PSCSI_REQUEST_BLOCK_INFO SrbInfo;
@@ -673,7 +673,7 @@ PhysicalAddress.QuadPart = (LONGLONG)(SP_UNINITIALIZED_VALUE); }
- *Length = BufferLength; + *Length = (ULONG)BufferLength; return PhysicalAddress; }
@@ -1034,6 +1034,7 @@ KIRQL OldIrql; PCM_RESOURCE_LIST ResourceList; BOOLEAN Conflict; + SIZE_T BusConfigSize;
DPRINT ("ScsiPortInitialize() called!\n"); @@ -1635,10 +1636,11 @@ IoStartTimer(PortDeviceObject);
/* Initialize bus scanning information */ + BusConfigSize = FIELD_OFFSET(BUSES_CONFIGURATION_INFORMATION, + BusScanInfo[DeviceExtension->PortConfig->NumberOfBuses]); DeviceExtension->BusesConfig = ExAllocatePoolWithTag(PagedPool, - sizeof(PVOID) * DeviceExtension->PortConfig->NumberOfBuses - + sizeof(ULONG), TAG_SCSIPORT); - + BusConfigSize, + TAG_SCSIPORT); if (!DeviceExtension->BusesConfig) { DPRINT1("Out of resources!\n"); @@ -1647,9 +1649,7 @@ }
/* Zero it */ - RtlZeroMemory(DeviceExtension->BusesConfig, - sizeof(PVOID) * DeviceExtension->PortConfig->NumberOfBuses - + sizeof(ULONG)); + RtlZeroMemory(DeviceExtension->BusesConfig, BusConfigSize);
/* Store number of buses there */ DeviceExtension->BusesConfig->NumberOfBuses = (UCHAR)DeviceExtension->BusNum; @@ -2622,6 +2622,7 @@
case SRB_FUNCTION_EXECUTE_SCSI: case SRB_FUNCTION_IO_CONTROL: + DPRINT(" SRB_FUNCTION_EXECUTE_SCSI or SRB_FUNCTION_IO_CONTROL\n"); /* Mark IRP as pending in all cases */ IoMarkIrpPending(Irp);
@@ -4013,7 +4014,7 @@ BusData = &AdapterBusInfo->BusData[Bus];
/* Calculate and save an offset of the inquiry data */ - BusData->InquiryDataOffset = (PUCHAR)InquiryData - Buffer; + BusData->InquiryDataOffset = (ULONG)((PUCHAR)InquiryData - Buffer);
/* Get a pointer to the LUN information structure */ LunInfo = DeviceExtension->BusesConfig->BusScanInfo[Bus]->LunInfo; @@ -4039,7 +4040,7 @@ InquiryData->InquiryDataLength = INQUIRYDATABUFFERSIZE; InquiryData->DeviceClaimed = LunInfo->DeviceClaimed; InquiryData->NextInquiryDataOffset = - (PUCHAR)InquiryData + InquiryDataSize - Buffer; + (ULONG)((PUCHAR)InquiryData + InquiryDataSize - Buffer);
/* Copy data in it */ RtlCopyMemory(InquiryData->InquiryData, @@ -5364,7 +5365,7 @@ 0, REG_SZ, DriverName, - (wcslen(DriverName) + 1) * sizeof(WCHAR)); + (ULONG)((wcslen(DriverName) + 1) * sizeof(WCHAR))); if (!NT_SUCCESS(Status)) { DPRINT("ZwSetValueKey('Driver') failed (Status %lx)\n", Status); @@ -5557,7 +5558,7 @@ 0, REG_SZ, NameBuffer, - (wcslen(NameBuffer) + 1) * sizeof(WCHAR)); + (ULONG)((wcslen(NameBuffer) + 1) * sizeof(WCHAR))); if (!NT_SUCCESS(Status)) { DPRINT("ZwSetValueKey('Identifier') failed (Status %lx)\n", Status); @@ -5606,7 +5607,7 @@ 0, REG_SZ, TypeName, - (wcslen(TypeName) + 1) * sizeof(WCHAR)); + (ULONG)((wcslen(TypeName) + 1) * sizeof(WCHAR))); if (!NT_SUCCESS(Status)) { DPRINT("ZwSetValueKey('Type') failed (Status %lx)\n", Status);