diff options
-rwxr-xr-x | source4/script/tests/test_rpc.sh | 2 | ||||
-rwxr-xr-x | source4/script/tests/test_w2k3.sh | 53 | ||||
-rw-r--r-- | source4/torture/rpc/netlogon.c | 104 | ||||
-rw-r--r-- | source4/torture/rpc/schannel.c | 4 |
4 files changed, 85 insertions, 78 deletions
diff --git a/source4/script/tests/test_rpc.sh b/source4/script/tests/test_rpc.sh index 63d22f4083..a1181cab42 100755 --- a/source4/script/tests/test_rpc.sh +++ b/source4/script/tests/test_rpc.sh @@ -8,7 +8,7 @@ ncacn_ip_tcp_tests="RPC-SCHANNEL RPC-ECHO" if [ $# -lt 4 ]; then cat <<EOF -Usage: test_echo.sh SERVER USERNAME PASSWORD DOMAIN +Usage: test_rpc.sh SERVER USERNAME PASSWORD DOMAIN EOF exit 1; fi diff --git a/source4/script/tests/test_w2k3.sh b/source4/script/tests/test_w2k3.sh new file mode 100755 index 0000000000..7d9f95a352 --- /dev/null +++ b/source4/script/tests/test_w2k3.sh @@ -0,0 +1,53 @@ +#!/bin/sh + +# tests that should pass against a w2k3 DC, as administrator + +# add tests to this list as they start passing, so we test +# that they stay passing +ncacn_np_tests="RPC-DSSETUP RPC-EPMAPPER RPC-SAMR RPC-WKSSVC RPC-SRVSVC RPC-EVENTLOG RPC-NETLOGON" +ncacn_ip_tcp_tests="RPC-EPMAPPER RPC-SAMR RPC-NETLOGON" + +if [ $# -lt 4 ]; then +cat <<EOF +Usage: test_w2k3.sh SERVER USERNAME PASSWORD DOMAIN +EOF +exit 1; +fi + +server="$1" +username="$2" +password="$3" +domain="$4" +shift 4 + +testit() { + trap "rm -f test.$$" EXIT + cmdline="$*" + if ! $cmdline > test.$$ 2>&1; then + cat test.$$; + rm -f test.$$; + echo "TEST FAILED - $cmdline"; + exit 1; + fi + rm -f test.$$; +} + +for transport in ncacn_ip_tcp ncacn_np; do + for bindoptions in connect sign seal validate bigendian; do + case $transport in + ncacn_np) tests=$ncacn_np_tests ;; + ncacn_ip_tcp) tests=$ncacn_ip_tcp_tests ;; + esac + for t in $tests; do + echo Testing $t on $transport with $bindoptions + testit bin/smbtorture $transport:"$server[$bindoptions]" -U"$username"%"$password" -W $domain $t "$*" + done + done +done + +echo Testing RPC-DRSUAPI on ncacn_ip_tcp with seal +testit bin/smbtorture ncacn_ip_tcp:"$server[seal]" -U"$username"%"$password" -W $domain RPC-DRSUAPI "$*" +echo Testing RPC-DRSUAPI on ncacn_ip_tcp with seal,bigendian +testit bin/smbtorture ncacn_ip_tcp:"$server[seal,bigendian]" -U"$username"%"$password" -W $domain RPC-DRSUAPI "$*" + +echo "ALL OK"; diff --git a/source4/torture/rpc/netlogon.c b/source4/torture/rpc/netlogon.c index 93755fd049..7bfd3a9a6c 100644 --- a/source4/torture/rpc/netlogon.c +++ b/source4/torture/rpc/netlogon.c @@ -1018,7 +1018,12 @@ static BOOL test_GetDomainInfo_async(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx) struct creds_CredentialState creds_async[ASYNC_COUNT]; struct rpc_request *req[ASYNC_COUNT]; int i; - int async_counter = 0; + int *async_counter = talloc_p(mem_ctx, int); + + if (!lp_parm_bool(-1, "torture", "dangerous", False)) { + printf("test_GetDomainInfo_async disabled - enable dangerous tests to use\n"); + return True; + } if (!test_SetupCredentials3(p, mem_ctx, NETLOGON_NEG_AUTH2_ADS_FLAGS, TEST_MACHINE_NAME, machine_password, &creds)) { @@ -1049,6 +1054,8 @@ static BOOL test_GetDomainInfo_async(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx) printf("Testing netr_LogonGetDomainInfo - async count %d\n", ASYNC_COUNT); + *async_counter = 0; + for (i=0;i<ASYNC_COUNT;i++) { creds_client_authenticator(&creds, &a); @@ -1056,7 +1063,7 @@ static BOOL test_GetDomainInfo_async(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx) req[i] = dcerpc_netr_LogonGetDomainInfo_send(p, mem_ctx, &r); req[i]->async.callback = async_callback; - req[i]->async.private = &async_counter; + req[i]->async.private = async_counter; /* even with this flush per request a w2k3 server seems to clag with multiple outstanding requests. bleergh. */ @@ -1079,9 +1086,9 @@ static BOOL test_GetDomainInfo_async(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx) } } - printf("Testing netr_LogonGetDomainInfo - async count %d OK\n", async_counter); + printf("Testing netr_LogonGetDomainInfo - async count %d OK\n", *async_counter); - return async_counter == ASYNC_COUNT; + return (*async_counter) == ASYNC_COUNT; } @@ -1110,77 +1117,24 @@ BOOL torture_rpc_netlogon(void) return False; } - if (!test_LogonUasLogon(p, mem_ctx)) { - ret = False; - } - - if (!test_LogonUasLogoff(p, mem_ctx)) { - ret = False; - } - - if (!test_SamLogon(p, mem_ctx)) { - ret = False; - } - - if (!test_SetPassword(p, mem_ctx)) { - ret = False; - } - - if (!test_GetDomainInfo(p, mem_ctx)) { - ret = False; - } - - if (!test_DatabaseSync(p, mem_ctx)) { - ret = False; - } - - if (!test_DatabaseDeltas(p, mem_ctx)) { - ret = False; - } - - if (!test_AccountDeltas(p, mem_ctx)) { - ret = False; - } - - if (!test_AccountSync(p, mem_ctx)) { - ret = False; - } - - if (!test_GetDcName(p, mem_ctx)) { - ret = False; - } - - if (!test_LogonControl(p, mem_ctx)) { - ret = False; - } - - if (!test_GetAnyDCName(p, mem_ctx)) { - ret = False; - } - - if (!test_LogonControl2(p, mem_ctx)) { - ret = False; - } - - if (!test_DatabaseSync2(p, mem_ctx)) { - ret = False; - } - - if (!test_LogonControl2Ex(p, mem_ctx)) { - ret = False; - } - - if (!test_DsrEnumerateDomainTrusts(p, mem_ctx)) { - ret = False; - } - - if (!test_GetDomainInfo_async(p, mem_ctx)) { - ret = False; - } - - if (!test_netr_DrsGetDCNameEx2(p, mem_ctx)) { - ret = False; - } + ret &= test_LogonUasLogon(p, mem_ctx); + ret &= test_LogonUasLogoff(p, mem_ctx); + ret &= test_SamLogon(p, mem_ctx); + ret &= test_SetPassword(p, mem_ctx); + ret &= test_GetDomainInfo(p, mem_ctx); + ret &= test_DatabaseSync(p, mem_ctx); + ret &= test_DatabaseDeltas(p, mem_ctx); + ret &= test_AccountDeltas(p, mem_ctx); + ret &= test_AccountSync(p, mem_ctx); + ret &= test_GetDcName(p, mem_ctx); + ret &= test_LogonControl(p, mem_ctx); + ret &= test_GetAnyDCName(p, mem_ctx); + ret &= test_LogonControl2(p, mem_ctx); + ret &= test_DatabaseSync2(p, mem_ctx); + ret &= test_LogonControl2Ex(p, mem_ctx); + ret &= test_DsrEnumerateDomainTrusts(p, mem_ctx); + ret &= test_GetDomainInfo_async(p, mem_ctx); + ret &= test_netr_DrsGetDCNameEx2(p, mem_ctx); talloc_destroy(mem_ctx); diff --git a/source4/torture/rpc/schannel.c b/source4/torture/rpc/schannel.c index 5ec466f0c1..b220b9ff65 100644 --- a/source4/torture/rpc/schannel.c +++ b/source4/torture/rpc/schannel.c @@ -122,8 +122,8 @@ static BOOL test_schannel(TALLOC_CTX *mem_ctx, NTSTATUS status; const char *binding = lp_parm_string(-1, "torture", "binding"); struct dcerpc_binding b; - struct dcerpc_pipe *p; - struct dcerpc_pipe *p_netlogon; + struct dcerpc_pipe *p = NULL; + struct dcerpc_pipe *p_netlogon = NULL; struct creds_CredentialState *creds; join_ctx = torture_join_domain(TEST_MACHINE_NAME, lp_workgroup(), acct_flags, |