[PATCH 3/3] advapi32/tests: Simple tests for TokenIntegrityLevel [try2]
Nikolay Sivov
bunglehead at gmail.com
Mon Jul 30 12:16:40 CDT 2012
On 7/30/2012 19:08, Detlef Riekenberg wrote:
> try2: now using EqualSid.
>
> Thanks Nikolay for comments
>
>
> - pConvertSidToStringSidA = (void *)GetProcAddress( hmod, "ConvertSidToStringSidA" );
> - if( !pConvertSidToStringSidA )
> - return;
> - pConvertStringSidToSidA = (void *)GetProcAddress( hmod, "ConvertStringSidToSidA" );
> - if( !pConvertStringSidToSidA )
> + if( !pConvertSidToStringSidA || !pConvertStringSidToSidA )
> + {
> + skip("ConvertSidToStringSidA or ConvertStringSidToSidA not available\n");
> return;
> + }
I probably missed that, you need to use win_skip here.
>
> r = pConvertStringSidToSidA( NULL, NULL );
> ok( !r, "expected failure with NULL parameters\n" );
> @@ -4274,6 +4275,73 @@ static void test_kernel_objects_security(void)
> CloseHandle(token);
> }
>
> +static void test_TokenIntegrityLevel(void)
> +{
> + TOKEN_MANDATORY_LABEL *tml;
> + HANDLE token;
> + DWORD size;
> + DWORD res;
> + LPVOID buffer = NULL;
> + char *sidname = NULL;
> + static SID medium_level = {SID_REVISION, 1, {SECURITY_MANDATORY_LABEL_AUTHORITY},
> + {SECURITY_MANDATORY_HIGH_RID}};
> + static SID high_level = {SID_REVISION, 1, {SECURITY_MANDATORY_LABEL_AUTHORITY},
> + {SECURITY_MANDATORY_MEDIUM_RID}};
> +
> + if(!pConvertSidToStringSidA)
> + {
> + skip("ConvertSidToStringSidA not available\n");
> + return;
> + }
and here.
> +
> + SetLastError(0xdeadbeef);
> + res = OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &token);
> + ok(res, "got %d with %d (expected TRUE)\n", res, GetLastError());
> + if (!res)
> + return;
Does it really fail on some test machine?
> +
> + SetLastError(0xdeadbeef);
> + res = GetTokenInformation(token, TokenIntegrityLevel, NULL, 0, &size);
> +
> + /* not supported before Vista */
> + if (!res && (GetLastError() == ERROR_INVALID_PARAMETER))
> + {
> + skip("TokenIntegrityLevel not supported\n");
> + CloseHandle(token);
> + return;
> + }
> +
> + if (!res && (GetLastError() == ERROR_INSUFFICIENT_BUFFER))
> + {
> + buffer = HeapAlloc(GetProcessHeap(), 0, size);
> + SetLastError(0xdeadbeef);
> + res = GetTokenInformation(token, TokenIntegrityLevel, buffer, size, &size);
> + }
Again, you don't need to allocate anything here, so you don't need
cleanup code.
More information about the wine-devel
mailing list