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/s…
==============================================================================
--- 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);