#include "includes.h"
#include "rpc_client/rpc_client.h"
+#include "rpc_client/cli_pipe.h"
#include "../librpc/gen_ndr/ndr_lsa_c.h"
#include "rpc_client/cli_lsarpc.h"
#include "rpc_client/init_lsa.h"
result);
}
-NTSTATUS dcerpc_lsa_open_policy_fallback(struct dcerpc_binding_handle *h,
+NTSTATUS dcerpc_lsa_open_policy_fallback(struct rpc_pipe_client *rpccli,
TALLOC_CTX *mem_ctx,
const char *srv_name_slash,
bool sec_qos,
struct policy_handle *pol,
NTSTATUS *result)
{
+ struct dcerpc_binding_handle *h = rpccli->binding_handle;
NTSTATUS status;
+ bool policy2 = false;
status = dcerpc_lsa_open_policy3(h,
mem_ctx,
pol,
result);
if (NT_STATUS_EQUAL(status, NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE)) {
+ policy2 = true;
+ } else if (NT_STATUS_EQUAL(status, NT_STATUS_ACCESS_DENIED)) {
+ status = cli_rpc_pipe_reopen_np_noauth(rpccli);
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
+ }
+ policy2 = true;
+ }
+
+ if (policy2) {
*out_version = 1;
*out_revision_info = (union lsa_revision_info) {
.info1 = {
uint32_t out_version = 0;
status = dcerpc_lsa_open_policy_fallback(
- b,
+ cli,
mem_ctx,
cli->srv_name_slash,
true,
if (!NT_STATUS_IS_OK(status))
goto done;
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
if (!NT_STATUS_IS_OK(status))
goto done;
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
if (!NT_STATUS_IS_OK(status))
goto done;
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
if (!NT_STATUS_IS_OK(status))
goto done;
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
if (!NT_STATUS_IS_OK(status))
goto done;
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
return NT_STATUS_OK;
}
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
if (argc == 2)
sscanf(argv[1], "%x", &sec_info);
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
if (argc == 3)
info_class = atoi(argv[2]);
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
if (argc == 3)
info_class = atoi(argv[2]);
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
return NT_STATUS_INVALID_PARAMETER;
}
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
if (argc == 3)
info_class = atoi(argv[2]);
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
goto done;
}
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
goto done;
}
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
return NT_STATUS_OK;
}
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
return NT_STATUS_OK;
}
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
return NT_STATUS_OK;
}
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
return NT_STATUS_OK;
}
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
return NT_STATUS_OK;
}
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
return NT_STATUS_OK;
}
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
return NT_STATUS_OK;
}
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
goto done;
}
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
goto done;
}
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
return NT_STATUS_OK;
}
- status = dcerpc_lsa_open_policy_fallback(b,
+ status = dcerpc_lsa_open_policy_fallback(cli,
mem_ctx,
cli->srv_name_slash,
true,
b = pipe_hnd->binding_handle;
- nt_status = dcerpc_lsa_open_policy_fallback(b,
+ nt_status = dcerpc_lsa_open_policy_fallback(pipe_hnd,
frame,
pipe_hnd->srv_name_slash,
true,
b = pipe_hnd->binding_handle;
- nt_status = dcerpc_lsa_open_policy_fallback(b,
+ nt_status = dcerpc_lsa_open_policy_fallback(pipe_hnd,
mem_ctx,
pipe_hnd->srv_name_slash,
false,
b = pipe_hnd->binding_handle;
- nt_status = dcerpc_lsa_open_policy_fallback(b,
+ nt_status = dcerpc_lsa_open_policy_fallback(pipe_hnd,
mem_ctx,
pipe_hnd->srv_name_slash,
true,