On Wed, Aug 06, 2008 at 02:21:44PM +0900, Dmitry Timoshkov wrote: > "Dan Hipschman" <[EMAIL PROTECTED]> 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.