The default object security method should not directly call Se* routines on the Secur...
authorAleksey Bragin <aleksey@reactos.org>
Mon, 31 Mar 2008 20:07:02 +0000 (20:07 +0000)
committerAleksey Bragin <aleksey@reactos.org>
Mon, 31 Mar 2008 20:07:02 +0000 (20:07 +0000)
commit89484a110dc8e1c45f5af4ab4f4448f2f48606f9
tree6508aeaf087928a9c90167301b4b137b541adf80
parentf5b2746f9ab42d1b959510b894f75bbfe1846174
The default object security method should not directly call Se* routines on the Security Descriptors, since they belong to the object manger security descriptor cache, and they need to be referenced and dereferenced in order to make sure they don't disappear from beneath the caller.
Additionally, the code for the "Set" operation should actually go in SeSetSecurityDescriptorInfo API, which was unimplemented. By simply copying the code over, this API is now implemented, and the routine works as expected.
Also, the default method was not handling "delete" requests, but was ignoring them, resulting in memory leaks and never-dereferenced descriptors.
Thanks to Alex for finding these bugs. Alex also says SeSetSecurityDescriptorInfo should call the Rtl package (RtlSetObjectSecurity) but we don't implement those functions yet.

svn path=/trunk/; revision=32799
reactos/ntoskrnl/include/internal/ob.h
reactos/ntoskrnl/ob/obsecure.c
reactos/ntoskrnl/se/sd.c
reactos/ntoskrnl/se/semgr.c