diff options
-rw-r--r-- | source4/librpc/idl/lsa.idl | 7 | ||||
-rw-r--r-- | source4/torture/rpc/lsa.c | 33 |
2 files changed, 39 insertions, 1 deletions
diff --git a/source4/librpc/idl/lsa.idl b/source4/librpc/idl/lsa.idl index 3e9ca1be3f..f90ad030d2 100644 --- a/source4/librpc/idl/lsa.idl +++ b/source4/librpc/idl/lsa.idl @@ -340,7 +340,12 @@ /* Function: 0x10 */ - NTSTATUS CREATESECRET (); + NTSTATUS lsa_CreateSecret( + [in,ref] policy_handle *handle, + [in] lsa_Name name, + [in] uint32 desired_access, + [out,ref] policy_handle *sec_handle + ); /*****************************************/ diff --git a/source4/torture/rpc/lsa.c b/source4/torture/rpc/lsa.c index 3b7e4dbe5d..f50d189dd2 100644 --- a/source4/torture/rpc/lsa.c +++ b/source4/torture/rpc/lsa.c @@ -380,6 +380,35 @@ static BOOL test_CreateTrustedDomain(struct dcerpc_pipe *p, return True; } +static BOOL test_CreateSecret(struct dcerpc_pipe *p, + TALLOC_CTX *mem_ctx, + struct policy_handle *handle) +{ + NTSTATUS status; + struct lsa_CreateSecret r; + struct policy_handle sec_handle; + + printf("Testing CreateSecret\n"); + + init_lsa_Name(&r.in.name, "torturesecret"); + + r.in.handle = handle; + r.in.desired_access = SEC_RIGHTS_MAXIMUM_ALLOWED; + r.out.sec_handle = &sec_handle; + + status = dcerpc_lsa_CreateSecret(p, mem_ctx, &r); + if (!NT_STATUS_IS_OK(status)) { + printf("CreateSecret failed - %s\n", nt_errstr(status)); + return False; + } + + if (!test_Delete(p, mem_ctx, &sec_handle)) { + return False; + } + + return True; +} + static BOOL test_EnumAccountRights(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct policy_handle *acct_handle, @@ -675,6 +704,10 @@ BOOL torture_rpc_lsa(int dummy) ret = False; } + if (!test_CreateSecret(p, mem_ctx, &handle)) { + ret = False; + } + if (!test_CreateTrustedDomain(p, mem_ctx, &handle)) { ret = False; } |