From c582f5cf1d94e7c8d3bc8ef63eb4b6e3a6dc1e0f Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 3 Apr 2004 17:21:26 +0000 Subject: added IDL and test for lsa_OpenSecret() (This used to be commit dd95cd141dc63f16e14f4c9392529653084b5a2a) --- source4/librpc/idl/lsa.idl | 9 ++++++++- source4/torture/rpc/lsa.c | 24 +++++++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) (limited to 'source4') diff --git a/source4/librpc/idl/lsa.idl b/source4/librpc/idl/lsa.idl index f90ad030d2..d8c6389bb3 100644 --- a/source4/librpc/idl/lsa.idl +++ b/source4/librpc/idl/lsa.idl @@ -401,8 +401,15 @@ NTSTATUS QUERYTRUSTDOM (); /* Function: 0x1b */ NTSTATUS SETINFOTRUSTDOM (); + /* Function: 0x1c */ - NTSTATUS OPENSECRET (); + NTSTATUS lsa_OpenSecret( + [in,ref] policy_handle *handle, + [in] lsa_Name name, + [in] uint32 desired_access, + [out,ref] policy_handle *sec_handle + ); + /* Function: 0x1d */ NTSTATUS SETSECRET (); /* Function: 0x1e */ diff --git a/source4/torture/rpc/lsa.c b/source4/torture/rpc/lsa.c index f50d189dd2..5aab8b366a 100644 --- a/source4/torture/rpc/lsa.c +++ b/source4/torture/rpc/lsa.c @@ -386,7 +386,9 @@ static BOOL test_CreateSecret(struct dcerpc_pipe *p, { NTSTATUS status; struct lsa_CreateSecret r; - struct policy_handle sec_handle; + struct lsa_OpenSecret r2; + struct policy_handle sec_handle, sec_handle2; + struct lsa_Delete d; printf("Testing CreateSecret\n"); @@ -402,10 +404,30 @@ static BOOL test_CreateSecret(struct dcerpc_pipe *p, return False; } + r2.in.handle = handle; + r2.in.desired_access = SEC_RIGHTS_MAXIMUM_ALLOWED; + init_lsa_Name(&r2.in.name, "torturesecret"); + r2.out.sec_handle = &sec_handle2; + + printf("Testing OpenSecret\n"); + + status = dcerpc_lsa_OpenSecret(p, mem_ctx, &r2); + if (!NT_STATUS_IS_OK(status)) { + printf("OpenSecret failed - %s\n", nt_errstr(status)); + return False; + } + if (!test_Delete(p, mem_ctx, &sec_handle)) { return False; } + d.in.handle = &sec_handle2; + status = dcerpc_lsa_Delete(p, mem_ctx, &d); + if (!NT_STATUS_EQUAL(status, NT_STATUS_INVALID_HANDLE)) { + printf("Second delete expected INVALID_HANDLE - %s\n", nt_errstr(status)); + return False; + } + return True; } -- cgit