5#include <winpr/assert.h>
7#include <winpr/string.h>
15static BOOL test_FreeAuthIdentity_zeroes_fields(
void)
17 const char* testPassword =
"S3cretP@ssw0rd!";
18 const char* testUser =
"testuser";
19 const char* testDomain =
"TESTDOMAIN";
21 SEC_WINNT_AUTH_IDENTITY identity = WINPR_C_ARRAY_INIT;
22 identity.Flags = SEC_WINNT_AUTH_IDENTITY_UNICODE;
25 identity.User = ConvertUtf8ToWCharAlloc(testUser, &len);
26 identity.UserLength = WINPR_ASSERTING_INT_CAST(UINT32, len);
30 identity.Domain = ConvertUtf8ToWCharAlloc(testDomain, &len);
31 identity.DomainLength = WINPR_ASSERTING_INT_CAST(UINT32, len);
38 identity.Password = ConvertUtf8ToWCharAlloc(testPassword, &len);
39 identity.PasswordLength = WINPR_ASSERTING_INT_CAST(UINT32, len);
40 if (!identity.Password)
43 free(identity.Domain);
47 sspi_FreeAuthIdentity(&identity);
49 if (identity.User !=
nullptr)
51 printf(
"FAIL: identity.User not nullptr after FreeAuthIdentity\n");
54 if (identity.Domain !=
nullptr)
56 printf(
"FAIL: identity.Domain not nullptr after FreeAuthIdentity\n");
59 if (identity.Password !=
nullptr)
61 printf(
"FAIL: identity.Password not nullptr after FreeAuthIdentity\n");
64 if (identity.UserLength != 0 || identity.DomainLength != 0 || identity.PasswordLength != 0)
66 printf(
"FAIL: identity lengths not zeroed after FreeAuthIdentity\n");
74static BOOL test_SecBufferFree_zeroes_buffer(
void)
76 const char* testData =
"sensitive-credential-data";
79 buffer.cbBuffer = (ULONG)strlen(testData);
80 buffer.pvBuffer = strdup(testData);
84 sspi_SecBufferFree(&buffer);
86 if (buffer.pvBuffer !=
nullptr)
88 printf(
"FAIL: pvBuffer not nullptr after SecBufferFree\n");
91 if (buffer.cbBuffer != 0)
93 printf(
"FAIL: cbBuffer not zero after SecBufferFree\n");
101static BOOL test_null_handling(
void)
104 sspi_FreeAuthIdentity(
nullptr);
105 sspi_SecBufferFree(
nullptr);
108 SEC_WINNT_AUTH_IDENTITY empty = WINPR_C_ARRAY_INIT;
109 sspi_FreeAuthIdentity(&empty);
113 sspi_SecBufferFree(&emptyBuf);
118int TestCredentialZeroing(
int argc,
char* argv[])
125 if (!test_FreeAuthIdentity_zeroes_fields())
127 printf(
"FAIL: test_FreeAuthIdentity_zeroes_fields\n");
131 if (!test_SecBufferFree_zeroes_buffer())
133 printf(
"FAIL: test_SecBufferFree_zeroes_buffer\n");
137 if (!test_null_handling())
139 printf(
"FAIL: test_null_handling\n");