[ros-diffs] [navaraf] 14283: Merge from HEAD: r14209

navaraf at svn.reactos.com navaraf at svn.reactos.com
Wed Mar 23 18:13:01 CET 2005


Merge from HEAD: r14209
Minor correction to NtAdjustPrivilegesToken to keep it from returning
total junk.
Modified: branches/ros-branch-0_2_6/reactos/ntoskrnl/mm/marea.c
Modified: branches/ros-branch-0_2_6/reactos/ntoskrnl/se/token.c
  _____  

Modified: branches/ros-branch-0_2_6/reactos/ntoskrnl/mm/marea.c
--- branches/ros-branch-0_2_6/reactos/ntoskrnl/mm/marea.c
2005-03-23 17:12:03 UTC (rev 14282)
+++ branches/ros-branch-0_2_6/reactos/ntoskrnl/mm/marea.c
2005-03-23 17:12:58 UTC (rev 14283)
@@ -491,7 +491,8 @@

 
    /* Check if there is enough space after the last memory area. */
    AlignedAddress = MM_ROUND_UP(PreviousNode->EndingAddress,
Granularity);
-   if ((ULONG_PTR)HighestAddress - (ULONG_PTR)AlignedAddress >= Length)
+   if ((ULONG_PTR)HighestAddress > (ULONG_PTR)AlignedAddress &&
+       (ULONG_PTR)HighestAddress - (ULONG_PTR)AlignedAddress >= Length)
    {
       DPRINT("MmFindGapBottomUp: %p\n", AlignedAddress);
       return AlignedAddress;
  _____  

Modified: branches/ros-branch-0_2_6/reactos/ntoskrnl/se/token.c
--- branches/ros-branch-0_2_6/reactos/ntoskrnl/se/token.c
2005-03-23 17:12:03 UTC (rev 14282)
+++ branches/ros-branch-0_2_6/reactos/ntoskrnl/se/token.c
2005-03-23 17:12:58 UTC (rev 14283)
@@ -1632,7 +1632,7 @@

 {
 //  PLUID_AND_ATTRIBUTES Privileges;
   KPROCESSOR_MODE PreviousMode;
-//  ULONG PrivilegeCount;
+  ULONG PrivilegeCount;
   PTOKEN Token;
 //  ULONG Length;
   ULONG i;
@@ -1690,6 +1690,12 @@
 		       &c);
 #endif
 
+  PrivilegeCount = (BufferLength - FIELD_OFFSET(TOKEN_PRIVILEGES,
Privileges)) /
+                   sizeof(LUID_AND_ATTRIBUTES);
+
+  if (PreviousState != NULL)
+    PreviousState->PrivilegeCount = 0;
+
   k = 0;
   if (DisableAllPrivileges == TRUE)
     {
@@ -1700,11 +1706,22 @@
 	      DPRINT ("Attributes differ\n");
 
 	      /* Save current privilege */
-	      if (PreviousState != NULL && k <
PreviousState->PrivilegeCount)
+	      if (PreviousState != NULL)
 		{
-		  PreviousState->Privileges[k].Luid =
Token->Privileges[i].Luid;
-		  PreviousState->Privileges[k].Attributes =
Token->Privileges[i].Attributes;
-		  k++;
+                  if (k < PrivilegeCount)
+                    {
+                      PreviousState->PrivilegeCount++;
+                      PreviousState->Privileges[k].Luid =
Token->Privileges[i].Luid;
+                      PreviousState->Privileges[k].Attributes =
Token->Privileges[i].Attributes;
+                    }
+                  else
+                    {
+                      /* FIXME: Should revert all the changes,
calculate how
+                       * much space would be needed, set ResultLength
+                       * accordingly and fail.
+                       */
+                    }
+                  k++;
 		}
 
 	      /* Update current privlege */
@@ -1734,11 +1751,22 @@
 			      NewState->Privileges[j].Attributes);
 
 		      /* Save current privilege */
-		      if (PreviousState != NULL && k <
PreviousState->PrivilegeCount)
+		      if (PreviousState != NULL)
 			{
-			  PreviousState->Privileges[k].Luid =
Token->Privileges[i].Luid;
-			  PreviousState->Privileges[k].Attributes =
Token->Privileges[i].Attributes;
-			  k++;
+                          if (k < PrivilegeCount)
+                            {
+                              PreviousState->PrivilegeCount++;
+                              PreviousState->Privileges[k].Luid =
Token->Privileges[i].Luid;
+                              PreviousState->Privileges[k].Attributes =
Token->Privileges[i].Attributes;
+                            }
+                          else
+                            {
+                              /* FIXME: Should revert all the changes,
calculate how
+                               * much space would be needed, set
ResultLength
+                               * accordingly and fail.
+                               */
+                            }
+                          k++;
 			}
 
 		      /* Update current privlege */
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-diffs/attachments/20050323/33079adb/attachment.html


More information about the Ros-diffs mailing list