[ros-diffs] [sir_richard] 46049: [NTOS]: No good deed goes unpunished. Continuing the novel/saga from a couple of days ago, it seems that now that impersonation works, various code paths are being tickled into existence. For example, it would seem parts of the system now attempt setting primary tokens. This would cause an assertion, since PspAssignPrimaryToken incorrectly dereferenced the token (leading to a double-dereference) due to an off-by-! mistake.

sir_richard at svn.reactos.org sir_richard at svn.reactos.org
Wed Mar 10 05:12:25 CET 2010


Author: sir_richard
Date: Wed Mar 10 05:12:25 2010
New Revision: 46049

URL: http://svn.reactos.org/svn/reactos?rev=46049&view=rev
Log:
[NTOS]: No good deed goes unpunished. Continuing the novel/saga from a couple of days ago, it seems that now that impersonation works, various code paths are being tickled into existence. For example, it would seem parts of the system now attempt setting primary tokens. This would cause an assertion, since PspAssignPrimaryToken incorrectly dereferenced the token (leading to a double-dereference) due to an off-by-! mistake.

Modified:
    trunk/reactos/ntoskrnl/ps/security.c

Modified: trunk/reactos/ntoskrnl/ps/security.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ps/security.c?rev=46049&r1=46048&r2=46049&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/ps/security.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ps/security.c [iso-8859-1] Wed Mar 10 05:12:25 2010
@@ -206,7 +206,7 @@
 
     /* Dereference Tokens and Return */
     if (NT_SUCCESS(Status)) ObDereferenceObject(OldToken);
-    if (AccessToken) ObDereferenceObject(NewToken);
+    if (!AccessToken) ObDereferenceObject(NewToken);
     return Status;
 }
 




More information about the Ros-diffs mailing list