[ros-diffs] [tkreuzer] 37435: - Fix several ULONG/ULONG_PTR issues - Add a parameter to DefaultQueryInfoBufferCheck for ULONG_PTR/SIZE_T ResultLength

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Tue Nov 18 04:41:22 CET 2008


Author: tkreuzer
Date: Mon Nov 17 21:41:21 2008
New Revision: 37435

URL: http://svn.reactos.org/svn/reactos?rev=37435&view=rev
Log:
- Fix several ULONG/ULONG_PTR issues
- Add a parameter to DefaultQueryInfoBufferCheck for ULONG_PTR/SIZE_T ResultLength

Modified:
    branches/ros-amd64-bringup/reactos/ntoskrnl/ex/event.c
    branches/ros-amd64-bringup/reactos/ntoskrnl/ex/fastinterlck.c
    branches/ros-amd64-bringup/reactos/ntoskrnl/ex/mutant.c
    branches/ros-amd64-bringup/reactos/ntoskrnl/ex/sem.c
    branches/ros-amd64-bringup/reactos/ntoskrnl/ex/sysinfo.c
    branches/ros-amd64-bringup/reactos/ntoskrnl/ex/timer.c
    branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/ntoskrnl.h
    branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/iocomp.c
    branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/irp.c
    branches/ros-amd64-bringup/reactos/ntoskrnl/kd/kdmain.c
    branches/ros-amd64-bringup/reactos/ntoskrnl/kd/wrappers/bochs.c
    branches/ros-amd64-bringup/reactos/ntoskrnl/kdbg/kdb_symbols.c
    branches/ros-amd64-bringup/reactos/ntoskrnl/mm/section.c
    branches/ros-amd64-bringup/reactos/ntoskrnl/se/token.c

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ex/event.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/ex/event.c?rev=37435&r1=37434&r2=37435&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/ex/event.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/ex/event.c [iso-8859-1] Mon Nov 17 21:41:21 2008
@@ -334,6 +334,7 @@
                                          EventInformation,
                                          EventInformationLength,
                                          ReturnLength,
+                                         NULL,
                                          PreviousMode);
     if(!NT_SUCCESS(Status))
     {

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ex/fastinterlck.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/ex/fastinterlck.c?rev=37435&r1=37434&r2=37435&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/ex/fastinterlck.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/ex/fastinterlck.c [iso-8859-1] Mon Nov 17 21:41:21 2008
@@ -36,9 +36,9 @@
     {
         Entry->Next = FirstEntry;
         NextEntry = FirstEntry;
-        FirstEntry = (PVOID)_InterlockedCompareExchange((PLONG)Head,
-                                                        (LONG)Entry,
-                                                        (LONG)FirstEntry);
+        FirstEntry = InterlockedCompareExchangePointer((PVOID*)Head,
+                                                       (PVOID)Entry,
+                                                       (PVOID)FirstEntry);
     } while (FirstEntry != NextEntry);
     
     return FirstEntry;
@@ -56,9 +56,9 @@
         if (!FirstEntry) return NULL;
 
         NextEntry = FirstEntry;
-        FirstEntry = (PVOID)_InterlockedCompareExchange((PLONG)Head,
-                                                        (LONG)FirstEntry->Next,
-                                                        (LONG)FirstEntry);
+        FirstEntry = InterlockedCompareExchangePointer((PVOID*)Head,
+                                                       (PVOID)FirstEntry->Next,
+                                                       (PVOID)FirstEntry);
     } while (FirstEntry != NextEntry);
 
     return FirstEntry;    
@@ -68,7 +68,7 @@
 FASTCALL
 ExInterlockedFlushSList(IN PSLIST_HEADER ListHead)
 {
-    return (PVOID)_InterlockedExchange((PLONG)&ListHead->Next.Next, (LONG)NULL);
+    return InterlockedExchangePointer((PVOID*)&ListHead->Next.Next, NULL);
 }
 
 PSLIST_ENTRY

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ex/mutant.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/ex/mutant.c?rev=37435&r1=37434&r2=37435&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/ex/mutant.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/ex/mutant.c [iso-8859-1] Mon Nov 17 21:41:21 2008
@@ -245,6 +245,7 @@
                                          MutantInformation,
                                          MutantInformationLength,
                                          ResultLength,
+                                         NULL,
                                          PreviousMode);
     if(!NT_SUCCESS(Status))
     {

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ex/sem.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/ex/sem.c?rev=37435&r1=37434&r2=37435&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/ex/sem.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/ex/sem.c [iso-8859-1] Mon Nov 17 21:41:21 2008
@@ -237,6 +237,7 @@
                                          SemaphoreInformation,
                                          SemaphoreInformationLength,
                                          ReturnLength,
+                                         NULL,
                                          PreviousMode);
     if(!NT_SUCCESS(Status))
     {

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ex/sysinfo.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/ex/sysinfo.c?rev=37435&r1=37434&r2=37435&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/ex/sysinfo.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/ex/sysinfo.c [iso-8859-1] Mon Nov 17 21:41:21 2008
@@ -1055,7 +1055,7 @@
 
             for (Count = 0; HandleCount > 0 ; HandleCount--)
                {
-                 Shi->Handles[i].UniqueProcessId = (USHORT)(ULONG)pr->UniqueProcessId;
+                 Shi->Handles[i].UniqueProcessId = (USHORT)(ULONG_PTR)pr->UniqueProcessId;
                  Count++;
                  i++;
                }

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ex/timer.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/ex/timer.c?rev=37435&r1=37434&r2=37435&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/ex/timer.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/ex/timer.c [iso-8859-1] Mon Nov 17 21:41:21 2008
@@ -522,6 +522,7 @@
                                          TimerInformation,
                                          TimerInformationLength,
                                          ReturnLength,
+                                         NULL,
                                          PreviousMode);
     if(!NT_SUCCESS(Status)) return Status;
 

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/ntoskrnl.h
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/ntoskrnl.h?rev=37435&r1=37434&r2=37435&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/ntoskrnl.h [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/ntoskrnl.h [iso-8859-1] Mon Nov 17 21:41:21 2008
@@ -213,6 +213,7 @@
                             PVOID Buffer,
                             ULONG BufferLength,
                             PULONG ReturnLength,
+                            PULONG_PTR ReturnLengthLong,
                             KPROCESSOR_MODE PreviousMode)
 {
     NTSTATUS Status = STATUS_SUCCESS;
@@ -248,6 +249,10 @@
                     if (ReturnLength != NULL)
                     {
                         ProbeForWriteUlong(ReturnLength);
+                    }
+                    if (ReturnLengthLong != NULL)
+                    {
+                        ProbeForWrite(ReturnLengthLong, sizeof(ULONG_PTR), sizeof(ULONG_PTR));
                     }
                 }
                 _SEH_HANDLE

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/iocomp.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/iocomp.c?rev=37435&r1=37434&r2=37435&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/iocomp.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/iocomp.c [iso-8859-1] Mon Nov 17 21:41:21 2008
@@ -404,6 +404,7 @@
                                          IoCompletionInformation,
                                          IoCompletionInformationLength,
                                          ResultLength,
+                                         NULL,
                                          PreviousMode);
     if (!NT_SUCCESS(Status)) return Status;
 
@@ -506,11 +507,11 @@
         ListEntry = KeRemoveQueue(Queue, PreviousMode, Timeout);
 
         /* If we got a timeout or user_apc back, return the status */
-        if (((NTSTATUS)ListEntry == STATUS_TIMEOUT) ||
-            ((NTSTATUS)ListEntry == STATUS_USER_APC))
+        if (((NTSTATUS)(ULONG_PTR)ListEntry == STATUS_TIMEOUT) ||
+            ((NTSTATUS)(ULONG_PTR)ListEntry == STATUS_USER_APC))
         {
             /* Set this as the status */
-            Status = (NTSTATUS)ListEntry;
+            Status = (NTSTATUS)(ULONG_PTR)ListEntry;
         }
         else
         {

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/irp.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/irp.c?rev=37435&r1=37434&r2=37435&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/irp.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/irp.c [iso-8859-1] Mon Nov 17 21:41:21 2008
@@ -1191,7 +1191,7 @@
     if (LastStackPtr->Control & SL_ERROR_RETURNED)
     {
         /* Get the error code */
-        ErrorCode = (NTSTATUS)LastStackPtr->Parameters.Others.Argument4;
+        ErrorCode = PtrToUlong(LastStackPtr->Parameters.Others.Argument4);
     }
 
     /* Get the Current Stack and skip it */
@@ -1213,7 +1213,7 @@
                 /* Update the error for the current stack */
                 ErrorCode = Irp->IoStatus.Status;
                 StackPtr->Control |= SL_ERROR_RETURNED;
-                LastStackPtr->Parameters.Others.Argument4 = (PVOID)ErrorCode;
+                LastStackPtr->Parameters.Others.Argument4 = UlongToPtr(ErrorCode);
                 LastStackPtr->Control |= SL_ERROR_RETURNED;
             }
         }
@@ -1587,7 +1587,7 @@
 IoGetRequestorProcessId(IN PIRP Irp)
 {
     /* Return the requestor process' id */
-    return (ULONG)(IoGetRequestorProcess(Irp)->UniqueProcessId);
+    return PtrToUlong(IoGetRequestorProcess(Irp)->UniqueProcessId);
 }
 
 /*
@@ -1759,5 +1759,5 @@
 IoSetTopLevelIrp(IN PIRP Irp)
 {
     /* Set the IRP */
-    PsGetCurrentThread()->TopLevelIrp = (ULONG)Irp;
-}
+    PsGetCurrentThread()->TopLevelIrp = (ULONG_PTR)Irp;
+}

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/kd/kdmain.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/kd/kdmain.c?rev=37435&r1=37434&r2=37435&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/kd/kdmain.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/kd/kdmain.c [iso-8859-1] Mon Nov 17 21:41:21 2008
@@ -52,7 +52,7 @@
 #ifdef DBG
         case TAG('R', 'o', 's', ' '): /* ROS-INTERNAL */
         {
-            switch ((ULONG)Buffer1)
+            switch ((ULONG_PTR)Buffer1)
             {
                 case DumpNonPagedPool:
                     MiDebugDumpNonPagedPool(FALSE);

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/kd/wrappers/bochs.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/kd/wrappers/bochs.c?rev=37435&r1=37434&r2=37435&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/kd/wrappers/bochs.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/kd/wrappers/bochs.c [iso-8859-1] Mon Nov 17 21:41:21 2008
@@ -45,7 +45,7 @@
     if (BootPhase == 0)
     {
         Value = READ_PORT_UCHAR(BOCHS_LOGGER_PORT);
-        if (Value != (ULONG)BOCHS_LOGGER_PORT)
+        if (Value != (ULONG_PTR)BOCHS_LOGGER_PORT)
         {
            KdpDebugMode.Bochs = FALSE;
            return;

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/kdbg/kdb_symbols.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/kdbg/kdb_symbols.c?rev=37435&r1=37434&r2=37435&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/kdbg/kdb_symbols.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/kdbg/kdb_symbols.c [iso-8859-1] Mon Nov 17 21:41:21 2008
@@ -657,10 +657,10 @@
         KdbpSymAddCachedFile(&LdrEntry->FullDllName, LdrEntry->PatchInformation);
     }
 
-    DPRINT("Installed symbols: %wZ@%08x-%08x %p\n",
+    DPRINT("Installed symbols: %wZ@%p-%p %p\n",
            &LdrEntry->BaseDllName,
            LdrEntry->DllBase,
-           LdrEntry->SizeOfImage + (ULONG)LdrEntry->DllBase,
+           (PVOID)(LdrEntry->SizeOfImage + (ULONG_PTR)LdrEntry->DllBase),
            LdrEntry->PatchInformation);
 
 }

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/section.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/mm/section.c?rev=37435&r1=37434&r2=37435&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/section.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/section.c [iso-8859-1] Mon Nov 17 21:41:21 2008
@@ -4242,6 +4242,7 @@
                                         sizeof(ExSectionInfoClass) / sizeof(ExSectionInfoClass[0]),
                                         SectionInformation,
                                         SectionInformationLength,
+                                        NULL,
                                         ResultLength,
                                         PreviousMode);
 

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/se/token.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/se/token.c?rev=37435&r1=37434&r2=37435&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/se/token.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/se/token.c [iso-8859-1] Mon Nov 17 21:41:21 2008
@@ -871,6 +871,7 @@
                                          TokenInformation,
                                          TokenInformationLength,
                                          ReturnLength,
+                                         NULL,
                                          PreviousMode);
     
     if(!NT_SUCCESS(Status))



More information about the Ros-diffs mailing list