advapi32: Implement GetSecurityInfo. [take 2]

Dan Hipschman dsh at linux.ucla.edu
Wed Aug 6 11:47:02 CDT 2008


On Wed, Aug 06, 2008 at 02:21:44PM +0900, Dmitry Timoshkov wrote:
> "Dan Hipschman" <dsh at linux.ucla.edu> wrote:
> 
> >+#include <assert.h>
> ...
> >DWORD WINAPI GetSecurityInfo(
> >    HANDLE hObject, SE_OBJECT_TYPE ObjectType,
> >@@ -2718,8 +2735,44 @@ DWORD WINAPI GetSecurityInfo(
> >    PSECURITY_DESCRIPTOR *ppSecurityDescriptor
> >)
> >{
> >-  FIXME("stub!\n");
> >-  return ERROR_BAD_PROVIDER;
> >+    PSECURITY_DESCRIPTOR sd;
> >+    NTSTATUS status;
> >+    ULONG n1, n2;
> >+    BOOL present, defaulted;
> >+
> >+    status = NtQuerySecurityObject(hObject, SecurityInfo, NULL, 0, &n1);
> >+    assert(status != STATUS_SUCCESS);
> >+    if (status != STATUS_BUFFER_TOO_SMALL)
> >+        return RtlNtStatusToDosError(status);
> 
> My previous comments regarding assert() still apply.

But I like the assert.  You haven't really given me a reason to take it
out.  Why is it inappropriate?  It's use here seems perfectly reasonable
to me.  I'm calling NtQuerySecurityObject in such a way that I'm
expecting it to fail, and if it doesn't fail it's certainly a bug.
Further, it had better fail because there's nothing reasonable to do if
it doesn't.  assert is the perfect way to document all these things.



More information about the wine-devel mailing list