>From b60a4a555cc449bff227beaa2de6a0023bed9635 Mon Sep 17 00:00:00 2001 From: Paul Vriens Date: Sat, 29 Nov 2008 12:38:30 +0100 Subject: [PATCH] Fix some crashes on NT4 --- dlls/advapi32/tests/security.c | 23 ++++++++++++++++------- 1 files changed, 16 insertions(+), 7 deletions(-) diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c index 3d02777..c821c74 100644 --- a/dlls/advapi32/tests/security.c +++ b/dlls/advapi32/tests/security.c @@ -2146,7 +2146,7 @@ static void test_SetEntriesInAcl(void) if (!pSetEntriesInAclW) { - skip("SetEntriesInAclW is not available\n"); + win_skip("SetEntriesInAclW is not available\n"); return; } @@ -2154,7 +2154,7 @@ static void test_SetEntriesInAcl(void) res = pSetEntriesInAclW(0, NULL, NULL, &NewAcl); if(res == ERROR_CALL_NOT_IMPLEMENTED) { - skip("SetEntriesInAclW is not implemented\n"); + win_skip("SetEntriesInAclW is not implemented\n"); return; } ok(res == ERROR_SUCCESS, "SetEntriesInAclW failed: %u\n", res); @@ -2164,7 +2164,7 @@ static void test_SetEntriesInAcl(void) res = InitializeAcl(OldAcl, 256, ACL_REVISION); if(!res && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) { - skip("ACLs not implemented - skipping tests\n"); + win_skip("ACLs not implemented - skipping tests\n"); HeapFree(GetProcessHeap(), 0, OldAcl); return; } @@ -2209,15 +2209,17 @@ static void test_SetEntriesInAcl(void) ExplicitAccess.Trustee.TrusteeForm = TRUSTEE_BAD_FORM; res = pSetEntriesInAclW(1, &ExplicitAccess, OldAcl, &NewAcl); ok(res == ERROR_INVALID_PARAMETER, "SetEntriesInAclW failed: %u\n", res); - ok(NewAcl == NULL, "returned acl wasn't NULL: %p\n", NewAcl); - LocalFree(NewAcl); + ok(NewAcl == NULL || + broken(NewAcl != NULL), /* NT4 */ + "returned acl wasn't NULL: %p\n", NewAcl); ExplicitAccess.Trustee.TrusteeForm = TRUSTEE_IS_USER; ExplicitAccess.Trustee.MultipleTrusteeOperation = TRUSTEE_IS_IMPERSONATE; res = pSetEntriesInAclW(1, &ExplicitAccess, OldAcl, &NewAcl); ok(res == ERROR_INVALID_PARAMETER, "SetEntriesInAclW failed: %u\n", res); - ok(NewAcl == NULL, "returned acl wasn't NULL: %p\n", NewAcl); - LocalFree(NewAcl); + ok(NewAcl == NULL || + broken(NewAcl != NULL), /* NT4 */ + "returned acl wasn't NULL: %p\n", NewAcl); ExplicitAccess.Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE; ExplicitAccess.grfAccessMode = SET_ACCESS; @@ -2805,6 +2807,13 @@ static void test_GetSecurityInfo(void) LocalFree(sd); + if (!pCreateWellKnownSid) + { + win_skip("NULL parameter test would crash on NT4\n"); + CloseHandle(obj); + return; + } + /* If we don't ask for the security descriptor, Windows will still give us the other stuff, leaving us no way to free it. */ ret = pGetSecurityInfo(obj, SE_FILE_OBJECT, -- 1.6.0.4