From 2ac148d6a2e9010eb7dcd754122f64594b1aabcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnther=20Deschner?= Date: Sat, 4 Jul 2015 01:26:01 +0200 Subject: [PATCH] s4-torture: add more tests for dcerpc_clusapi_CreateEnum. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Guenther Signed-off-by: Günther Deschner Reviewed-by: Jose A. Rivera --- source4/torture/rpc/clusapi.c | 53 ++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 10 deletions(-) diff --git a/source4/torture/rpc/clusapi.c b/source4/torture/rpc/clusapi.c index 8d4dbecdaa2..94c829538af 100644 --- a/source4/torture/rpc/clusapi.c +++ b/source4/torture/rpc/clusapi.c @@ -273,20 +273,53 @@ static bool test_CreateEnum(struct torture_context *tctx, talloc_get_type_abort(data, struct torture_clusapi_context); struct dcerpc_binding_handle *b = t->p->binding_handle; struct clusapi_CreateEnum r; - uint32_t dwType = CLUSTER_ENUM_RESOURCE; + uint32_t dwType[] = { + CLUSTER_ENUM_NODE, + CLUSTER_ENUM_RESTYPE, + CLUSTER_ENUM_RESOURCE, + CLUSTER_ENUM_GROUP, + CLUSTER_ENUM_NETWORK, + CLUSTER_ENUM_NETINTERFACE, + CLUSTER_ENUM_INTERNAL_NETWORK, + CLUSTER_ENUM_SHARED_VOLUME_RESOURCE + }; + uint32_t dwType_invalid[] = { + 0x00000040, + 0x00000080, + 0x00000100 /* and many more ... */ + }; struct ENUM_LIST *ReturnEnum; WERROR rpc_status; + int i; - r.in.dwType = dwType; - r.out.ReturnEnum = &ReturnEnum; - r.out.rpc_status = &rpc_status; + for (i=0; i < ARRAY_SIZE(dwType); i++) { - torture_assert_ntstatus_ok(tctx, - dcerpc_clusapi_CreateEnum_r(b, tctx, &r), - "CreateEnum failed"); - torture_assert_werr_ok(tctx, - r.out.result, - "CreateEnum failed"); + r.in.dwType = dwType[i]; + r.out.ReturnEnum = &ReturnEnum; + r.out.rpc_status = &rpc_status; + + torture_assert_ntstatus_ok(tctx, + dcerpc_clusapi_CreateEnum_r(b, tctx, &r), + "CreateEnum failed"); + torture_assert_werr_ok(tctx, + r.out.result, + "CreateEnum failed"); + } + + for (i=0; i < ARRAY_SIZE(dwType_invalid); i++) { + + r.in.dwType = dwType_invalid[i]; + r.out.ReturnEnum = &ReturnEnum; + r.out.rpc_status = &rpc_status; + + torture_assert_ntstatus_ok(tctx, + dcerpc_clusapi_CreateEnum_r(b, tctx, &r), + "CreateEnum failed"); + torture_assert_werr_equal(tctx, + r.out.result, + WERR_INVALID_PARAMETER, + "CreateEnum failed"); + } return true; }