https://git.reactos.org/?p=reactos.git;a=commitdiff;h=cf77354dceaa68dbcdf0713a3a0db8a170a1f881

commit cf77354dceaa68dbcdf0713a3a0db8a170a1f881
Author:     Timo Kreuzer <timo.kreu...@reactos.org>
AuthorDate: Sat Jul 7 16:09:03 2018 +0200
Commit:     Timo Kreuzer <timo.kreu...@reactos.org>
CommitDate: Sat Aug 4 19:19:34 2018 +0200

    [REACTOS] Fix 64 bit issues
---
 base/services/tcpsvcs/daytime.c                |  2 +-
 base/services/tcpsvcs/log.c                    | 15 +++++++++++----
 base/shell/explorer/startctxmnu.cpp            |  2 +-
 base/shell/explorer/traywnd.cpp                |  2 +-
 base/system/smss/sminit.c                      |  8 ++++----
 hal/halx86/generic/dma.c                       | 12 ++++++------
 sdk/lib/cmlib/hiveinit.c                       |  4 ++--
 sdk/tools/mkhive/rtl.c                         |  9 ++++++---
 subsystems/win32/csrsrv/server.c               |  4 ++--
 win32ss/drivers/displays/framebuf_new/enable.c |  2 +-
 win32ss/drivers/miniport/vmx_svga/vmx_svga.c   |  2 +-
 11 files changed, 36 insertions(+), 26 deletions(-)

diff --git a/base/services/tcpsvcs/daytime.c b/base/services/tcpsvcs/daytime.c
index b6e4a46b56..75ca525fc3 100644
--- a/base/services/tcpsvcs/daytime.c
+++ b/base/services/tcpsvcs/daytime.c
@@ -14,7 +14,7 @@
 static BOOL
 SendTime(SOCKET sock, CHAR *time)
 {
-    DWORD stringSize = strlen(time) + 1;
+    SIZE_T stringSize = strlen(time) + 1;
     if (send(sock, time, stringSize, 0) == SOCKET_ERROR)
     {
         LogEvent(L"DayTime: Error sending data", WSAGetLastError(), 0, 
LOG_ERROR);
diff --git a/base/services/tcpsvcs/log.c b/base/services/tcpsvcs/log.c
index 2cb0543c32..3b2d467d71 100644
--- a/base/services/tcpsvcs/log.c
+++ b/base/services/tcpsvcs/log.c
@@ -70,20 +70,20 @@ LogToFile(LPCWSTR lpMsg,
           UINT flags)
 {
     LPWSTR lpFullMsg = NULL;
-    DWORD msgLen;
+    SIZE_T msgLen;
 
     msgLen = wcslen(lpMsg) + 1;
 
     if (flags & LOG_ERROR)
     {
-        LPVOID lpSysMsg;
+        LPWSTR lpSysMsg;
         DWORD eMsgLen;
 
         eMsgLen = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | 
FORMAT_MESSAGE_FROM_SYSTEM,
                                  NULL,
                                  errNum,
                                  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
-                                 (LPTSTR)&lpSysMsg,
+                                 (LPWSTR)&lpSysMsg,
                                  0,
                                  NULL);
 
@@ -122,6 +122,13 @@ LogToFile(LPCWSTR lpMsg,
         }
     }
 
+    /* Make sure the length in bytes doesn't overflow a DWORD */
+    msgLen = wcslen(lpFullMsg);
+    if (msgLen > (MAXDWORD / sizeof(WCHAR)))
+    {
+        RaiseException(EXCEPTION_INT_OVERFLOW, 0, 0, NULL);
+    }
+
     if (lpFullMsg)
     {
         DWORD bytesWritten;
@@ -130,7 +137,7 @@ LogToFile(LPCWSTR lpMsg,
 
         bRet = WriteFile(hLogFile,
                          lpFullMsg,
-                         wcslen(lpFullMsg) * sizeof(WCHAR),
+                         (DWORD)msgLen * sizeof(WCHAR),
                          &bytesWritten,
                          &olWrite);
         if (!bRet)
diff --git a/base/shell/explorer/startctxmnu.cpp 
b/base/shell/explorer/startctxmnu.cpp
index 590ada5062..ba5b766266 100644
--- a/base/shell/explorer/startctxmnu.cpp
+++ b/base/shell/explorer/startctxmnu.cpp
@@ -182,7 +182,7 @@ public:
     virtual HRESULT STDMETHODCALLTYPE
         InvokeCommand(LPCMINVOKECOMMANDINFO lpici)
     {
-        UINT uiCmdId = (UINT)lpici->lpVerb;
+        UINT uiCmdId = PtrToUlong(lpici->lpVerb);
         if (uiCmdId != 0)
         {
             if ((uiCmdId >= ID_SHELL_CMD_FIRST) && (uiCmdId <= 
ID_SHELL_CMD_LAST))
diff --git a/base/shell/explorer/traywnd.cpp b/base/shell/explorer/traywnd.cpp
index 8fd6c55f19..63ece92395 100644
--- a/base/shell/explorer/traywnd.cpp
+++ b/base/shell/explorer/traywnd.cpp
@@ -3322,7 +3322,7 @@ public:
     virtual HRESULT STDMETHODCALLTYPE
         InvokeCommand(LPCMINVOKECOMMANDINFO lpici)
     {
-        UINT uiCmdId = (UINT) lpici->lpVerb;
+        UINT uiCmdId = PtrToUlong(lpici->lpVerb);
         if (uiCmdId != 0)
         {
             if (uiCmdId >= m_idCmdCmFirst)
diff --git a/base/system/smss/sminit.c b/base/system/smss/sminit.c
index 8fc6ab317d..49141ff2d0 100644
--- a/base/system/smss/sminit.c
+++ b/base/system/smss/sminit.c
@@ -1536,9 +1536,9 @@ SmpInitializeKnownDllsInternal(IN PUNICODE_STRING 
Directory,
             /* Checksum failed, so don't even try going further -- kill SMSS */
             RtlInitUnicodeString(&ErrorResponse,
                                  L"Verification of a KnownDLL failed.");
-            ErrorParameters[0] = (ULONG)&ErrorResponse;
+            ErrorParameters[0] = (ULONG_PTR)&ErrorResponse;
             ErrorParameters[1] = Status;
-            ErrorParameters[2] = (ULONG)&RegEntry->Value;
+            ErrorParameters[2] = (ULONG_PTR)&RegEntry->Value;
             SmpTerminate(ErrorParameters, 5, RTL_NUMBER_OF(ErrorParameters));
         }
         else if (!(ImageCharacteristics & IMAGE_FILE_DLL))
@@ -1546,9 +1546,9 @@ SmpInitializeKnownDllsInternal(IN PUNICODE_STRING 
Directory,
             /* An invalid known DLL entry will also kill SMSS */
             RtlInitUnicodeString(&ErrorResponse,
                                  L"Non-DLL file included in KnownDLL list.");
-            ErrorParameters[0] = (ULONG)&ErrorResponse;
+            ErrorParameters[0] = (ULONG_PTR)&ErrorResponse;
             ErrorParameters[1] = STATUS_INVALID_IMPORT_OF_NON_DLL;
-            ErrorParameters[2] = (ULONG)&RegEntry->Value;
+            ErrorParameters[2] = (ULONG_PTR)&RegEntry->Value;
             SmpTerminate(ErrorParameters, 5, RTL_NUMBER_OF(ErrorParameters));
         }
 
diff --git a/hal/halx86/generic/dma.c b/hal/halx86/generic/dma.c
index af3d82351f..48748c7d5a 100644
--- a/hal/halx86/generic/dma.c
+++ b/hal/halx86/generic/dma.c
@@ -152,8 +152,8 @@ HalpInitDma(VOID)
         * Check if Extended DMA is available. We're just going to do a random
         * read and write.
         */
-        WRITE_PORT_UCHAR((PUCHAR)FIELD_OFFSET(EISA_CONTROL, 
DmaController2Pages.Channel2), 0x2A);
-        if (READ_PORT_UCHAR((PUCHAR)FIELD_OFFSET(EISA_CONTROL, 
DmaController2Pages.Channel2)) == 0x2A)
+        WRITE_PORT_UCHAR(UlongToPtr(FIELD_OFFSET(EISA_CONTROL, 
DmaController2Pages.Channel2)), 0x2A);
+        if (READ_PORT_UCHAR(UlongToPtr(FIELD_OFFSET(EISA_CONTROL, 
DmaController2Pages.Channel2))) == 0x2A)
         {
             DPRINT1("Machine supports EISA DMA. Bus type: %lu\n", HalpBusType);
             HalpEisaDma = TRUE;
@@ -479,11 +479,11 @@ HalpDmaInitializeEisaAdapter(IN PADAPTER_OBJECT 
AdapterObject,
 
     if (Controller == 1)
     {
-        AdapterBaseVa = (PVOID)FIELD_OFFSET(EISA_CONTROL, DmaController1);
+        AdapterBaseVa = UlongToPtr(FIELD_OFFSET(EISA_CONTROL, DmaController1));
     }
     else
     {
-        AdapterBaseVa = (PVOID)FIELD_OFFSET(EISA_CONTROL, DmaController2);
+        AdapterBaseVa = UlongToPtr(FIELD_OFFSET(EISA_CONTROL, DmaController2));
     }
 
     AdapterObject->AdapterNumber = Controller;
@@ -517,12 +517,12 @@ HalpDmaInitializeEisaAdapter(IN PADAPTER_OBJECT 
AdapterObject,
 
         if (Controller == 1)
         {
-            WRITE_PORT_UCHAR((PUCHAR)FIELD_OFFSET(EISA_CONTROL, 
DmaExtendedMode1),
+            WRITE_PORT_UCHAR(UlongToPtr(FIELD_OFFSET(EISA_CONTROL, 
DmaExtendedMode1)),
                             ExtendedMode.Byte);
         }
         else
         {
-            WRITE_PORT_UCHAR((PUCHAR)FIELD_OFFSET(EISA_CONTROL, 
DmaExtendedMode2),
+            WRITE_PORT_UCHAR(UlongToPtr(FIELD_OFFSET(EISA_CONTROL, 
DmaExtendedMode2)),
                             ExtendedMode.Byte);
         }
     }
diff --git a/sdk/lib/cmlib/hiveinit.c b/sdk/lib/cmlib/hiveinit.c
index 7aab1797de..ba4e784fbc 100644
--- a/sdk/lib/cmlib/hiveinit.c
+++ b/sdk/lib/cmlib/hiveinit.c
@@ -231,12 +231,12 @@ HvpInitializeMemoryHive(
     SIZE_T ChunkSize;
 
     ChunkSize = ChunkBase->Length;
-    DPRINT("ChunkSize: %lx\n", ChunkSize);
+    DPRINT("ChunkSize: %zx\n", ChunkSize);
 
     if (ChunkSize < sizeof(HBASE_BLOCK) ||
         !HvpVerifyHiveHeader(ChunkBase))
     {
-        DPRINT1("Registry is corrupt: ChunkSize %lu < sizeof(HBASE_BLOCK) %lu, 
"
+        DPRINT1("Registry is corrupt: ChunkSize 0x%zx < sizeof(HBASE_BLOCK) 
0x%zx, "
                 "or HvpVerifyHiveHeader() failed\n", ChunkSize, 
sizeof(HBASE_BLOCK));
         return STATUS_REGISTRY_CORRUPT;
     }
diff --git a/sdk/tools/mkhive/rtl.c b/sdk/tools/mkhive/rtl.c
index f2c84c7fde..3bef91da9a 100644
--- a/sdk/tools/mkhive/rtl.c
+++ b/sdk/tools/mkhive/rtl.c
@@ -166,9 +166,12 @@ KeBugCheckEx(
     IN ULONG_PTR BugCheckParameter4)
 {
     char Buffer[70];
-    printf("*** STOP: 0x%08X (0x%08lX, 0x%08lX, 0x%08lX, 0x%08lX)",
-           BugCheckCode, BugCheckParameter1, BugCheckParameter2,
-           BugCheckParameter3, BugCheckParameter4);
+    printf("*** STOP: 0x%08X (0x%p,0x%p,0x%p,0x%p)",
+           BugCheckCode,
+           (PVOID)BugCheckParameter1,
+           (PVOID)BugCheckParameter2,
+           (PVOID)BugCheckParameter3,
+           (PVOID)BugCheckParameter4);
     ASSERT(FALSE);
 }
 
diff --git a/subsystems/win32/csrsrv/server.c b/subsystems/win32/csrsrv/server.c
index 2ac9ba8cd7..c161bb4166 100644
--- a/subsystems/win32/csrsrv/server.c
+++ b/subsystems/win32/csrsrv/server.c
@@ -338,7 +338,7 @@ CsrSrvCreateSharedSection(IN PCHAR ParameterValue)
     ULONG Size;
     NTSTATUS Status;
     LARGE_INTEGER SectionSize;
-    ULONG ViewSize = 0;
+    SIZE_T ViewSize = 0;
     PPEB Peb = NtCurrentPeb();
 
     /* If there's no parameter, fail */
@@ -457,7 +457,7 @@ CsrSrvAttachSharedSection(IN PCSR_PROCESS CsrProcess 
OPTIONAL,
                           OUT PCSR_API_CONNECTINFO ConnectInfo)
 {
     NTSTATUS Status;
-    ULONG ViewSize = 0;
+    SIZE_T ViewSize = 0;
 
     /* Check if we have a process */
     if (CsrProcess)
diff --git a/win32ss/drivers/displays/framebuf_new/enable.c 
b/win32ss/drivers/displays/framebuf_new/enable.c
index 76c06df5ea..f22ef24f76 100644
--- a/win32ss/drivers/displays/framebuf_new/enable.c
+++ b/win32ss/drivers/displays/framebuf_new/enable.c
@@ -456,7 +456,7 @@ DEVMODEW *pdm)
 
                 cOutputModes--;
 
-                pdm = (LPDEVMODEW) ( ((ULONG)pdm) + sizeof(DEVMODEW) +
+                pdm = (LPDEVMODEW) ( ((ULONG_PTR)pdm) + sizeof(DEVMODEW) +
                                                    DRIVER_EXTRA_SIZE);
 
                 cbOutputSize += (sizeof(DEVMODEW) + DRIVER_EXTRA_SIZE);
diff --git a/win32ss/drivers/miniport/vmx_svga/vmx_svga.c 
b/win32ss/drivers/miniport/vmx_svga/vmx_svga.c
index 605c5e5056..0afd883fec 100644
--- a/win32ss/drivers/miniport/vmx_svga/vmx_svga.c
+++ b/win32ss/drivers/miniport/vmx_svga/vmx_svga.c
@@ -125,7 +125,7 @@ VmxFindAdapter(IN PVOID HwDeviceExtension,
     }
 
     /* Zero the frame buffer */
-    VideoPortZeroMemory((PVOID)DeviceExtension->FrameBuffer.LowPart,
+    
VideoPortZeroMemory((PVOID)(ULONG_PTR)DeviceExtension->FrameBuffer.QuadPart,
                         DeviceExtension->VramSize.LowPart);
 
     /* Initialize the video modes */

Reply via email to