On Wed, Aug 06, 2008 at 02:21:44PM +0900, Dmitry Timoshkov wrote:
"Dan Hipschman" <dsh(a)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.