[ros-dev] GetSiteSidFromToken in advapi32

Grzegorz Jaskiewicz gj at zlew.org
Mon Aug 28 11:07:18 CEST 2006


Hi folks

based on my knowledge and some docs I used to read ages ago. Plus some recent 
googling, I kinda recreated function GetSiteSidFromToken from advapi32.dll - 
as it was missing there, and I couldn't start w2k taskmgr because of that. Of 
course simple stub returning NULL should be sufficient, but I gave it a shot 
and tried to implement it fresh and fully functional.

First, I am not sure of few things there. And if someone is more knowledgable 
than I am - please let me know your thoughts.
As far as I know the function returns pointer to SID from token. But there's 
more than one token. So it returns token that has "SITE" SID. Now, there were 
quite few SIDs missing in ROS, I tried to add them - mainly guessing their 
names based on some googling. Some docs on msdn say that they are all defined 
in ntseapi.h - but I couldn't found that file anywhere. For more details 
lookup attachment 1043 and corresponding bug. 
Function is quite simple, it iterates through all sids, trying to match the 
one with "SITE" authority. Question now arises - what if there's more than 
one such SID ? Does ROS use SIDs 1-6 to 1-8 at all ? is the 
SECURITY_INTERNETSITE_AUTHORITY the SITE authority or perhaps 
SECURITY_SITESERVER_AUTHORITY ? I don't know.
I will try to write simple code that would ask original function from original 
dll about it, and see what it comes up with. 
First part of the code comes as simple c&p from other functions. The iteration 
is quite obvious. I didn't knew what should I use to compare SIDs, so I used 
memcmp. But perhaps simple comparing values in the table one by one would be 
simple, or maybe there's some sort of ROSish/NTish specific function that is 
more "right" than memcmp.
Another question I have - is it normal practice that you alloc extra ram and 
return pointer to copy (seems to be in other places in your code), or should 
I just simply return pointer to the SID ?
 
I do appreciate any comment. Patch is attached.
if someone has the ntseapi.h file anywhere on their discs, I would like you to 
verify SECURITY_*_AUTHORITY names as well as values. I spent whole day 
gathering info, and I used all info I could find. 

Sorry for such long letter. Much too long I suppose.
this is my first attempt to hack anything for ros. I promise next time I would 
try to take care of something more obvious and better documented. 
till than, ta.

-- 
GJ
-------------- next part --------------
A non-text attachment was scrubbed...
Name: GetSiteSidFromToken.diff
Type: text/x-diff
Size: 2479 bytes
Desc: not available
Url : http://www.reactos.org/pipermail/ros-dev/attachments/20060828/5b81e67c/attachment.bin 


More information about the Ros-dev mailing list