secur32: Test passing null authentication data to AcquireCredentialsHandle.

oldstable
Hans Leidekker 2009-10-06 09:05:05 +02:00 committed by Alexandre Julliard
parent a29b421425
commit 8bb68933ea
1 changed files with 46 additions and 0 deletions

View File

@ -32,6 +32,7 @@
#include <sspi.h>
#include <rpc.h>
#include <rpcdce.h>
#include <secext.h>
#include "wine/test.h"
@ -59,6 +60,7 @@ static SECURITY_STATUS (SEC_ENTRY * pEncryptMessage)(PCtxtHandle, ULONG,
PSecBufferDesc, ULONG);
static SECURITY_STATUS (SEC_ENTRY * pDecryptMessage)(PCtxtHandle, PSecBufferDesc,
ULONG, PULONG);
static BOOLEAN (WINAPI * pGetUserNameExA)(EXTENDED_NAME_FORMAT, LPSTR, PULONG);
typedef struct _SspiData {
PCredHandle cred;
@ -168,6 +170,7 @@ static void InitFunctionPtrs(void)
pVerifySignature = (PVOID)GetProcAddress(secdll, "VerifySignature");
pEncryptMessage = (PVOID)GetProcAddress(secdll, "EncryptMessage");
pDecryptMessage = (PVOID)GetProcAddress(secdll, "DecryptMessage");
pGetUserNameExA = (PVOID)GetProcAddress(secdll, "GetUserNameExA");
}
}
@ -1267,6 +1270,48 @@ static void test_cred_multiple_use(void)
ok(ret == SEC_E_OK, "FreeCredentialsHandle failed with error 0x%x\n", ret);
}
static void test_null_auth_data(void)
{
SECURITY_STATUS status;
PSecPkgInfo info;
CredHandle cred;
CtxtHandle ctx;
SecBufferDesc buffer_desc;
SecBuffer buffers[1];
char user[256];
TimeStamp ttl;
ULONG attr, size;
BOOLEAN ret;
if(pQuerySecurityPackageInfoA((SEC_CHAR *)"NTLM", &info) != SEC_E_OK)
{
skip("NTLM package not installed, skipping test\n");
return;
}
status = pAcquireCredentialsHandleA(NULL, (SEC_CHAR *)"NTLM", SECPKG_CRED_OUTBOUND,
NULL, NULL, NULL, NULL, &cred, &ttl);
ok(status == SEC_E_OK, "AcquireCredentialsHande() failed %s\n", getSecError(status));
buffers[0].cbBuffer = info->cbMaxToken;
buffers[0].BufferType = SECBUFFER_TOKEN;
buffers[0].pvBuffer = HeapAlloc(GetProcessHeap(), 0, buffers[0].cbBuffer);
buffer_desc.ulVersion = SECBUFFER_VERSION;
buffer_desc.cBuffers = sizeof(buffers)/sizeof(buffers[0]);
buffer_desc.pBuffers = buffers;
size = sizeof(user);
ret = pGetUserNameExA(NameSamCompatible, user, &size);
ok(ret, "GetUserNameExA failed %u\n", GetLastError());
status = pInitializeSecurityContextA(&cred, NULL, (SEC_CHAR *)user,
ISC_REQ_CONNECTION, 0, SECURITY_NETWORK_DREP,
NULL, 0, &ctx, &buffer_desc, &attr, &ttl);
todo_wine
ok(status == SEC_I_CONTINUE_NEEDED, "InitializeSecurityContextA failed %s\n", getSecError(status));
}
START_TEST(ntlm)
{
InitFunctionPtrs();
@ -1290,6 +1335,7 @@ START_TEST(ntlm)
testSignSeal();
test_cred_multiple_use();
if (pGetUserNameExA) test_null_auth_data();
}
else
win_skip("Needed functions are not available\n");