#include "includes.h"
#include "rpcclient.h"
+#include "rpc_client/cli_pipe.h"
+#include "../librpc/gen_ndr/ndr_lsa_c.h"
+#include "rpc_client/cli_lsarpc.h"
+#include "../librpc/gen_ndr/ndr_samr.h"
+#include "../librpc/gen_ndr/winreg.h"
static NTSTATUS cmd_testme(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
int argc, const char **argv)
{
struct rpc_pipe_client *lsa_pipe = NULL, *samr_pipe = NULL;
- NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
- POLICY_HND pol;
+ NTSTATUS status = NT_STATUS_UNSUCCESSFUL, result;
+ struct policy_handle pol;
+ struct dcerpc_binding_handle *b;
d_printf("testme\n");
- lsa_pipe = cli_rpc_pipe_open_noauth(rpc_pipe_np_smb_conn(cli),
- PI_LSARPC, &status);
- if (lsa_pipe == NULL) goto done;
+ status = cli_rpc_pipe_open_noauth(rpc_pipe_np_smb_conn(cli),
+ &ndr_table_lsarpc.syntax_id,
+ &lsa_pipe);
+ if (!NT_STATUS_IS_OK(status)) {
+ goto done;
+ }
+
+ status = cli_rpc_pipe_open_noauth(rpc_pipe_np_smb_conn(cli),
+ &ndr_table_samr.syntax_id,
+ &samr_pipe);
+ if (!NT_STATUS_IS_OK(status)) {
+ goto done;
+ }
- samr_pipe = cli_rpc_pipe_open_noauth(rpc_pipe_np_smb_conn(cli),
- PI_SAMR, &status);
- if (samr_pipe == NULL) goto done;
+ b = lsa_pipe->binding_handle;
status = rpccli_lsa_open_policy(lsa_pipe, mem_ctx, False,
- SEC_RIGHTS_QUERY_VALUE, &pol);
+ KEY_QUERY_VALUE, &pol);
if (!NT_STATUS_IS_OK(status))
goto done;
- status = rpccli_lsa_Close(lsa_pipe, mem_ctx, &pol);
+ status = dcerpc_lsa_Close(b, mem_ctx, &pol, &result);
if (!NT_STATUS_IS_OK(status))
goto done;
+ if (!NT_STATUS_IS_OK(result)) {
+ status = result;
+ goto done;
+ }
done:
TALLOC_FREE(lsa_pipe);
{ "TESTING" },
{ "testme", RPC_RTYPE_NTSTATUS, cmd_testme, NULL,
- -1, NULL, "Sample test", "testme" },
+ NULL, NULL, "Sample test", "testme" },
{ NULL }
};