summaryrefslogtreecommitdiff
path: root/source4/torture/rpc
diff options
context:
space:
mode:
Diffstat (limited to 'source4/torture/rpc')
-rw-r--r--source4/torture/rpc/echo.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/source4/torture/rpc/echo.c b/source4/torture/rpc/echo.c
index c141d4be9c..5db438afd0 100644
--- a/source4/torture/rpc/echo.c
+++ b/source4/torture/rpc/echo.c
@@ -262,6 +262,41 @@ static BOOL test_sleep(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
}
#endif
+
+/*
+ test enum handling
+*/
+static BOOL test_enum(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
+{
+ NTSTATUS status;
+ struct echo_TestEnum r;
+ BOOL ret = True;
+ enum echo_Enum1 v = ECHO_ENUM1;
+ struct echo_Enum2 e2;
+ union echo_Enum3 e3;
+
+ r.in.foo1 = &v;
+ r.in.foo2 = &e2;
+ r.in.foo3 = &e3;
+ r.out.foo1 = &v;
+ r.out.foo2 = &e2;
+ r.out.foo3 = &e3;
+
+ e2.e1 = 76;
+ e2.e2 = ECHO_ENUM1_32;
+ e3.e1 = ECHO_ENUM2;
+
+ printf("\nTesting TestEnum\n");
+ status = dcerpc_echo_TestEnum(p, mem_ctx, &r);
+ if (!NT_STATUS_IS_OK(status)) {
+ printf("TestEnum failed - %s\n", nt_errstr(status));
+ ret = False;
+ }
+
+ return ret;
+}
+
+
BOOL torture_rpc_echo(void)
{
NTSTATUS status;
@@ -303,6 +338,10 @@ BOOL torture_rpc_echo(void)
ret = False;
}
+ if (!test_enum(p, mem_ctx)) {
+ ret = False;
+ }
+
/*
if (!test_sleep(p, mem_ctx)) {
ret = False;