Skip to content

Commit 4c94faa

Browse files
committed
Add test for smpasswd-like user files
Signed-off-by: Simo Sorce <[email protected]>
1 parent 8e99bcb commit 4c94faa

File tree

6 files changed

+141
-88
lines changed

6 files changed

+141
-88
lines changed

Makefile.am

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ endif
237237
# Testing #
238238
####################
239239

240-
TESTS = ntlmssptest
240+
TESTS = ntlmssptest tests/env1.sh tests/env2.sh
241241

242242
test_gssntlmssp:
243243
TMPDIR=tests/scripts/ ./tests/scripts/dlopen.sh ./.libs/gssntlmssp.so || exit 1

examples/test_user_file2.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
testuser:1000:3ae6ccce2a2a253f76fde78389be2ce2:d32a2901011176349b41d406dcc95a90:[U ]:LCT-1589398321

examples/test_user_file3.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
TESTDOM\testuser:1000:3ae6ccce2a2a253f76fde78389be2ce2:d32a2901011176349b41d406dcc95a90:[U ]:LCT-1589398321

tests/env1.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/sh
2+
3+
export NTLM_USER_FILE="examples/test_user_file2.txt"
4+
export TEST_USER_NAME="testuser"
5+
./ntlmssptest

tests/env2.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/sh
2+
3+
export NTLM_USER_FILE="examples/test_user_file3.txt"
4+
export TEST_USER_NAME="TESTDOM\\testuser"
5+
./ntlmssptest

tests/ntlmssptest.c

Lines changed: 128 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -1488,7 +1488,7 @@ int test_gssapi_1(bool user_env_file, bool use_cb, bool no_seal)
14881488
uint8_t rand_cb[128];
14891489
struct gss_channel_bindings_struct cbts = { 0 };
14901490
gss_channel_bindings_t cbt = GSS_C_NO_CHANNEL_BINDINGS;
1491-
gss_buffer_set_t data_set;
1491+
gss_buffer_set_t data_set = NULL;
14921492
gss_OID_desc sasl_ssf_oid = {
14931493
11, discard_const("\x2a\x86\x48\x86\xf7\x12\x01\x02\x02\x05\x0f")
14941494
};
@@ -1498,12 +1498,10 @@ int test_gssapi_1(bool user_env_file, bool use_cb, bool no_seal)
14981498

14991499
setenv("NTLM_USER_FILE", TEST_USER_FILE, 0);
15001500

1501-
if (user_env_file) {
1502-
username = "testuser";
1503-
} else {
1501+
username = getenv("TEST_USER_NAME");
1502+
if (username == NULL) {
15041503
username = "TESTDOM\\testuser";
15051504
}
1506-
15071505
nbuf.value = discard_const(username);
15081506
nbuf.length = strlen(username);
15091507
retmaj = gssntlm_import_name(&retmin, &nbuf,
@@ -1771,9 +1769,9 @@ int test_gssapi_1(bool user_env_file, bool use_cb, bool no_seal)
17711769
goto done;
17721770
}
17731771

1774-
if (strcmp(nbuf.value, "TESTDOM\\testuser") != 0) {
1772+
if (strcmp(nbuf.value, username) != 0) {
17751773
fprintf(stderr, "Expected username of [%s] but got [%s] instead!\n",
1776-
"TESTDOM\\testuser", (char *)nbuf.value);
1774+
username, (char *)nbuf.value);
17771775
ret = EINVAL;
17781776
goto done;
17791777
}
@@ -1826,7 +1824,7 @@ int test_gssapi_cl(void)
18261824
gss_buffer_desc srv_token = { 0 };
18271825
gss_cred_id_t cli_cred = GSS_C_NO_CREDENTIAL;
18281826
gss_cred_id_t srv_cred = GSS_C_NO_CREDENTIAL;
1829-
const char *username = "TESTDOM\\testuser";
1827+
const char *username;
18301828
const char *password = "testpassword";
18311829
const char *srvname = "test@testserver";
18321830
gss_name_t gss_username = NULL;
@@ -1846,6 +1844,10 @@ int test_gssapi_cl(void)
18461844

18471845
setenv("NTLM_USER_FILE", TEST_USER_FILE, 0);
18481846

1847+
username = getenv("TEST_USER_NAME");
1848+
if (username == NULL) {
1849+
username = "TESTDOM\\testuser";
1850+
}
18491851
nbuf.value = discard_const(username);
18501852
nbuf.length = strlen(username);
18511853
retmaj = gssntlm_import_name(&retmin, &nbuf,
@@ -2223,183 +2225,222 @@ int test_ZERO_LMKEY(struct ntlm_ctx *ctx)
22232225
int main(int argc, const char *argv[])
22242226
{
22252227
struct ntlm_ctx *ctx;
2228+
int gret = 0;
22262229
int ret;
22272230

22282231
/* enable trace debugging by dfault in tests */
22292232
setenv("GSSNTLMSSP_DEBUG", "tests-trace.log", 0);
22302233

2231-
fprintf(stdout, "Test errors\n");
2234+
fprintf(stderr, "Test errors\n");
22322235
ret = test_Errors();
2233-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2236+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2237+
if (ret) gret++;
22342238

22352239
ret = ntlm_init_ctx(&ctx);
22362240
if (ret) goto done;
22372241

2238-
fprintf(stdout, "Test LMOWFv1\n");
2242+
fprintf(stderr, "Test LMOWFv1\n");
22392243
ret = test_LMOWFv1(ctx);
2240-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2244+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2245+
if (ret) gret++;
22412246

2242-
fprintf(stdout, "Test NTOWFv1\n");
2247+
fprintf(stderr, "Test NTOWFv1\n");
22432248
ret = test_NTOWFv1(ctx);
2244-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2249+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2250+
if (ret) gret++;
22452251

2246-
fprintf(stdout, "Test LMResponse v1\n");
2252+
fprintf(stderr, "Test LMResponse v1\n");
22472253
ret = test_LMResponseV1(ctx);
2248-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2254+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2255+
if (ret) gret++;
22492256

2250-
fprintf(stdout, "Test NTResponse v1\n");
2257+
fprintf(stderr, "Test NTResponse v1\n");
22512258
ret = test_NTResponseV1(ctx);
2252-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2259+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2260+
if (ret) gret++;
22532261

2254-
fprintf(stdout, "Test SessionBaseKey v1\n");
2262+
fprintf(stderr, "Test SessionBaseKey v1\n");
22552263
ret = test_SessionBaseKeyV1(ctx);
2256-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2264+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2265+
if (ret) gret++;
22572266

2258-
fprintf(stdout, "Test LM KeyExchangeKey\n");
2267+
fprintf(stderr, "Test LM KeyExchangeKey\n");
22592268
ret = test_LM_KeyExchangeKey(ctx);
2260-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2269+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2270+
if (ret) gret++;
22612271

2262-
fprintf(stdout, "Test EncryptedSessionKey v1 (1)\n");
2272+
fprintf(stderr, "Test EncryptedSessionKey v1 (1)\n");
22632273
ret = test_EncryptedSessionKey1(ctx);
2264-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2274+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2275+
if (ret) gret++;
22652276

2266-
fprintf(stdout, "Test EncryptedSessionKey v1 (2)\n");
2277+
fprintf(stderr, "Test EncryptedSessionKey v1 (2)\n");
22672278
ret = test_EncryptedSessionKey2(ctx);
2268-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2279+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2280+
if (ret) gret++;
22692281

2270-
fprintf(stdout, "Test EncryptedSessionKey v1 (3)\n");
2282+
fprintf(stderr, "Test EncryptedSessionKey v1 (3)\n");
22712283
ret = test_EncryptedSessionKey3(ctx);
2272-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2284+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2285+
if (ret) gret++;
22732286

22742287
/* override internal version for V1 test vector */
22752288
ntlm_internal_set_version(6, 0, 6000, 15);
22762289

2277-
fprintf(stdout, "Test decoding ChallengeMessage v1\n");
2290+
fprintf(stderr, "Test decoding ChallengeMessage v1\n");
22782291
ret = test_DecodeChallengeMessageV1(ctx);
2279-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2292+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2293+
if (ret) gret++;
22802294

2281-
fprintf(stdout, "Test encoding ChallengeMessage v1\n");
2295+
fprintf(stderr, "Test encoding ChallengeMessage v1\n");
22822296
ret = test_EncodeChallengeMessageV1(ctx);
2283-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2297+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2298+
if (ret) gret++;
22842299

2285-
fprintf(stdout, "Test LMResponse v2\n");
2300+
fprintf(stderr, "Test LMResponse v2\n");
22862301
ret = test_LMResponseV2(ctx);
2287-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2302+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2303+
if (ret) gret++;
22882304

2289-
fprintf(stdout, "Test NTResponse v2\n");
2305+
fprintf(stderr, "Test NTResponse v2\n");
22902306
ret = test_NTResponseV2(ctx);
2291-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2307+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2308+
if (ret) gret++;
22922309

2293-
fprintf(stdout, "Test SessionBaseKey v2\n");
2310+
fprintf(stderr, "Test SessionBaseKey v2\n");
22942311
ret = test_SessionBaseKeyV2(ctx);
2295-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2312+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2313+
if (ret) gret++;
22962314

2297-
fprintf(stdout, "Test EncryptedSessionKey v2\n");
2315+
fprintf(stderr, "Test EncryptedSessionKey v2\n");
22982316
ret = test_EncryptedSessionKey(ctx, &T_NTLMv2.SessionBaseKey,
22992317
&T_NTLMv2.EncryptedSessionKey);
2300-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2318+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2319+
if (ret) gret++;
23012320

23022321
/* override internal version for V2 test vector */
23032322
ntlm_internal_set_version(6, 0, 6000, 15);
23042323

2305-
fprintf(stdout, "Test decoding ChallengeMessage v2\n");
2324+
fprintf(stderr, "Test decoding ChallengeMessage v2\n");
23062325
ret = test_DecodeChallengeMessageV2(ctx);
2307-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2326+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2327+
if (ret) gret++;
23082328

2309-
fprintf(stdout, "Test encoding ChallengeMessage v2\n");
2329+
fprintf(stderr, "Test encoding ChallengeMessage v2\n");
23102330
ret = test_EncodeChallengeMessageV2(ctx);
2311-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2331+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2332+
if (ret) gret++;
23122333

2313-
fprintf(stdout, "Test decoding AuthenticateMessage v2\n");
2334+
fprintf(stderr, "Test decoding AuthenticateMessage v2\n");
23142335
ret = test_DecodeAuthenticateMessageV2(ctx);
2315-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2336+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2337+
if (ret) gret++;
23162338

2317-
fprintf(stdout, "Test encoding AuthenticateMessage v2\n");
2339+
fprintf(stderr, "Test encoding AuthenticateMessage v2\n");
23182340
ret = test_EncodeAuthenticateMessageV2(ctx);
2319-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2341+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2342+
if (ret) gret++;
23202343

23212344
/* override internal version for CBT test vector */
23222345
ntlm_internal_set_version(6, 1, 7600, 15);
23232346

2324-
fprintf(stdout, "Test decoding ChallengeMessage v2 with CBT\n");
2347+
fprintf(stderr, "Test decoding ChallengeMessage v2 with CBT\n");
23252348
ret = test_DecodeChallengeMessageV2CBT(ctx);
2326-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2349+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2350+
if (ret) gret++;
23272351

2328-
fprintf(stdout, "Test encoding ChallengeMessage v2 with CBT\n");
2352+
fprintf(stderr, "Test encoding ChallengeMessage v2 with CBT\n");
23292353
ret = test_EncodeChallengeMessageV2CBT(ctx);
2330-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2354+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2355+
if (ret) gret++;
23312356

2332-
fprintf(stdout, "Test decoding AuthenticateMessage v2 with CBT\n");
2357+
fprintf(stderr, "Test decoding AuthenticateMessage v2 with CBT\n");
23332358
ret = test_DecodeAuthenticateMessageV2CBT(ctx);
2334-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2359+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2360+
if (ret) gret++;
23352361

2336-
fprintf(stdout, "Test sealing a Message with No Extended Security\n");
2362+
fprintf(stderr, "Test sealing a Message with No Extended Security\n");
23372363
ret = test_GSS_Wrap_EX(ctx, &T_GSSWRAPv1noESS);
2338-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2364+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2365+
if (ret) gret++;
23392366

2340-
fprintf(stdout, "Test sealing a Message with NTLMv1 Extended Security\n");
2367+
fprintf(stderr, "Test sealing a Message with NTLMv1 Extended Security\n");
23412368
ret = test_GSS_Wrap_EX(ctx, &T_GSSWRAPEXv1);
2342-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2369+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2370+
if (ret) gret++;
23432371

2344-
fprintf(stdout, "Test sealing a Message with NTLMv2 Extended Security\n");
2372+
fprintf(stderr, "Test sealing a Message with NTLMv2 Extended Security\n");
23452373
ret = test_GSS_Wrap_EX(ctx, &T_GSSWRAPEXv2);
2346-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2374+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2375+
if (ret) gret++;
23472376

2348-
fprintf(stdout, " *** Test with NTLMv1 auth");
2377+
fprintf(stderr, " *** Test with NTLMv1 auth\n");
23492378
setenv("LM_COMPAT_LEVEL", "0", 1);
23502379

2351-
fprintf(stdout, "Test GSSAPI conversation (user env file)\n");
2380+
fprintf(stderr, "Test GSSAPI conversation (user env file)\n");
23522381
ret = test_gssapi_1(true, false, false);
2353-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2382+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2383+
if (ret) gret++;
23542384

2355-
fprintf(stdout, "Test GSSAPI conversation (no SEAL)\n");
2385+
fprintf(stderr, "Test GSSAPI conversation (no SEAL)\n");
23562386
ret = test_gssapi_1(true, false, true);
2357-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2387+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2388+
if (ret) gret++;
23582389

2359-
fprintf(stdout, "Test GSSAPI conversation (with password)\n");
2390+
fprintf(stderr, "Test GSSAPI conversation (with password)\n");
23602391
ret = test_gssapi_1(false, false, false);
2361-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2392+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2393+
if (ret) gret++;
23622394

2363-
fprintf(stdout, "Test Connectionless exchange\n");
2395+
fprintf(stderr, "Test Connectionless exchange\n");
23642396
ret = test_gssapi_cl();
2365-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2397+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2398+
if (ret) gret++;
23662399

2367-
fprintf(stdout, " *** Again forcing NTLMv2 auth");
2400+
fprintf(stderr, " *** Again forcing NTLMv2 auth\n");
23682401
setenv("LM_COMPAT_LEVEL", "5", 1);
23692402

2370-
fprintf(stdout, "Test GSSAPI conversation (user env file)\n");
2403+
fprintf(stderr, "Test GSSAPI conversation (user env file)\n");
23712404
ret = test_gssapi_1(true, false, false);
2372-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2405+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2406+
if (ret) gret++;
23732407

2374-
fprintf(stdout, "Test GSSAPI conversation (no SEAL)\n");
2408+
fprintf(stderr, "Test GSSAPI conversation (no SEAL)\n");
23752409
ret = test_gssapi_1(true, false, true);
2376-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2410+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2411+
if (ret) gret++;
23772412

2378-
fprintf(stdout, "Test GSSAPI conversation (with password)\n");
2413+
fprintf(stderr, "Test GSSAPI conversation (with password)\n");
23792414
ret = test_gssapi_1(false, false, false);
2380-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2415+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2416+
if (ret) gret++;
23812417

2382-
fprintf(stdout, "Test GSSAPI conversation (with CB)\n");
2418+
fprintf(stderr, "Test GSSAPI conversation (with CB)\n");
23832419
ret = test_gssapi_1(false, true, false);
2384-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2420+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2421+
if (ret) gret++;
23852422

2386-
fprintf(stdout, "Test Connectionless exchange\n");
2423+
fprintf(stderr, "Test Connectionless exchange\n");
23872424
ret = test_gssapi_cl();
2388-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2425+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2426+
if (ret) gret++;
23892427

2390-
fprintf(stdout, "Test RFC5801 SPI\n");
2428+
fprintf(stderr, "Test RFC5801 SPI\n");
23912429
ret = test_gssapi_rfc5801();
2392-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2430+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2431+
if (ret) gret++;
23932432

2394-
fprintf(stdout, "Test RFC5587 SPI\n");
2433+
fprintf(stderr, "Test RFC5587 SPI\n");
23952434
ret = test_gssapi_rfc5587();
2396-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2435+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2436+
if (ret) gret++;
23972437

2398-
fprintf(stdout, "Test ZERO LM_KEY\n");
2438+
fprintf(stderr, "Test ZERO LM_KEY\n");
23992439
ret = test_ZERO_LMKEY(ctx);
2400-
fprintf(stdout, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2440+
fprintf(stderr, "Test: %s\n", (ret ? "FAIL":"SUCCESS"));
2441+
if (ret) gret++;
24012442

24022443
done:
24032444
ntlm_free_ctx(&ctx);
2404-
return ret;
2445+
return gret;
24052446
}

0 commit comments

Comments
 (0)