From 3031937d56363cc6322062a66c991182664f40bc Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 13 Nov 2003 09:26:53 +0000 Subject: * fixed conformant arrays in structures * expanded the rpcecho test * started adding the NETDFS pipe (This used to be commit 095ab42cbdd5c1c5ab753e2eb275742ba822c8b9) --- source4/torture/rpc/dfs.c | 90 ++++++++++++++++++++++++++++++++++++++++++++++ source4/torture/rpc/echo.c | 43 +++++++++++++++++++--- source4/torture/rpc/lsa.c | 4 +-- 3 files changed, 130 insertions(+), 7 deletions(-) create mode 100644 source4/torture/rpc/dfs.c (limited to 'source4/torture/rpc') diff --git a/source4/torture/rpc/dfs.c b/source4/torture/rpc/dfs.c new file mode 100644 index 0000000000..3f8d789fe8 --- /dev/null +++ b/source4/torture/rpc/dfs.c @@ -0,0 +1,90 @@ +/* + Unix SMB/CIFS implementation. + test suite for lsa dfs operations + + Copyright (C) Andrew Tridgell 2003 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "includes.h" + + +static BOOL test_Exist(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx) +{ + NTSTATUS status; + struct dfs_Exist r; + uint32 exist = 0; + + r.out.exist_flag = ∃ + + status = dcerpc_dfs_Exist(p, mem_ctx, &r); + if (!NT_STATUS_IS_OK(status)) { + printf("Exist failed - %s\n", nt_errstr(status)); + return False; + } + + printf("exist=%d\n", exist); + + return True; +} + +static BOOL test_Enum(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx) +{ + NTSTATUS status; + struct dfs_Enum r; + uint32 resume_handle = 0; + + r.in.name = ""; + r.in.level = 1; + r.in.buffer_size = 20000; + r.in.resume_handle = &resume_handle; + r.out.resume_handle = &resume_handle; + + status = dcerpc_dfs_Enum(p, mem_ctx, &r); + if (!NT_STATUS_IS_OK(status)) { + printf("Enum failed - %s\n", nt_errstr(status)); + return False; + } + + return True; +} + +BOOL torture_rpc_dfs(int dummy) +{ + NTSTATUS status; + struct dcerpc_pipe *p; + TALLOC_CTX *mem_ctx; + BOOL ret = True; + + mem_ctx = talloc_init("torture_rpc_dfs"); + + status = torture_rpc_connection(&p, "netdfs"); + if (!NT_STATUS_IS_OK(status)) { + return False; + } + + if (!test_Exist(p, mem_ctx)) { + ret = False; + } + + if (!test_Enum(p, mem_ctx)) { + ret = False; + } + + torture_rpc_close(p); + + return ret; +} diff --git a/source4/torture/rpc/echo.c b/source4/torture/rpc/echo.c index ebf82c692e..b8c2437e4b 100644 --- a/source4/torture/rpc/echo.c +++ b/source4/torture/rpc/echo.c @@ -68,8 +68,7 @@ static BOOL test_echodata(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx) } r.in.len = len; - r.in.data = data_in; - r.out.data = data_out; + r.in.in_data = data_in; status = dcerpc_echo_EchoData(p, mem_ctx, &r); if (!NT_STATUS_IS_OK(status)) { @@ -77,9 +76,18 @@ static BOOL test_echodata(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx) return False; } - if (memcmp(data_in, data_out, len) != 0) { - printf("Bad data returned for len %d!\n", len); - return False; + data_out = r.out.out_data; + + for (i=0;icount:0, r.out.unknown); + printf("received %d privileges\n", + r.out.privs?r.out.privs->count:0); if (r.out.privs) { int i; -- cgit