From 9acaadea3f244569ba28ded2c7e1fa880f0d6ea6 Mon Sep 17 00:00:00 2001
From: Mike McCormack <mike@codeweavers.com>
Date: Tue, 30 Dec 2003 19:17:05 +0000
Subject: [PATCH] Return an SID when GetTokenInformation is called with class
 TokenOwner.

---
 dlls/ntdll/nt.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index 5c2ed555fc7..f70fbdde151 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -201,7 +201,7 @@ NTSTATUS WINAPI NtQueryInformationToken(
         len = sizeof(TOKEN_PRIVILEGES);
         break;
     case TokenOwner:
-        len = sizeof(TOKEN_OWNER);
+        len = sizeof(TOKEN_OWNER) + sizeof(SID);
         break;
     case TokenPrimaryGroup:
         len = sizeof(TOKEN_PRIMARY_GROUP);
@@ -264,6 +264,17 @@ NTSTATUS WINAPI NtQueryInformationToken(
             tpriv->PrivilegeCount = 1;
         }
         break;
+    case TokenOwner:
+        if (tokeninfo)
+        {
+            TOKEN_OWNER *owner = tokeninfo;
+            PSID sid = (PSID) (owner + 1);
+            SID_IDENTIFIER_AUTHORITY localSidAuthority = {SECURITY_NT_AUTHORITY};
+            RtlInitializeSid(sid, &localSidAuthority, 1);
+            *(RtlSubAuthoritySid(sid, 0)) = SECURITY_INTERACTIVE_RID;
+            owner->Owner = sid;
+        }
+        break;
     }
     return 0;
 }
-- 
GitLab