summaryrefslogtreecommitdiff
path: root/source3/libnet
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2011-01-18 14:55:48 +0100
committerGünther Deschner <gd@samba.org>2011-02-02 19:02:16 +0100
commit95cf60a2e5aadeb75a680bedaa6090817caa8276 (patch)
tree66be498134b92b427045b8930260079982628683 /source3/libnet
parente32b50894ba6e163c1c483fff668ff6161414541 (diff)
downloadsamba-95cf60a2e5aadeb75a680bedaa6090817caa8276.tar.gz
samba-95cf60a2e5aadeb75a680bedaa6090817caa8276.tar.bz2
samba-95cf60a2e5aadeb75a680bedaa6090817caa8276.zip
s3-libnet: prefer dcerpc_lsa_X functions.
Guenther
Diffstat (limited to 'source3/libnet')
-rw-r--r--source3/libnet/libnet_join.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/source3/libnet/libnet_join.c b/source3/libnet/libnet_join.c
index c0150f26b8..6c8560887f 100644
--- a/source3/libnet/libnet_join.c
+++ b/source3/libnet/libnet_join.c
@@ -25,7 +25,7 @@
#include "libcli/auth/libcli_auth.h"
#include "../librpc/gen_ndr/ndr_samr_c.h"
#include "rpc_client/init_samr.h"
-#include "../librpc/gen_ndr/cli_lsa.h"
+#include "../librpc/gen_ndr/ndr_lsa_c.h"
#include "rpc_client/cli_lsarpc.h"
#include "../librpc/gen_ndr/ndr_netlogon.h"
#include "rpc_client/cli_netlogon.h"
@@ -710,8 +710,9 @@ static NTSTATUS libnet_join_lookup_dc_rpc(TALLOC_CTX *mem_ctx,
{
struct rpc_pipe_client *pipe_hnd = NULL;
struct policy_handle lsa_pol;
- NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
+ NTSTATUS status, result;
union lsa_PolicyInformation *info = NULL;
+ struct dcerpc_binding_handle *b;
status = libnet_join_connect_dc_ipc(r->in.dc_name,
r->in.admin_account,
@@ -730,17 +731,20 @@ static NTSTATUS libnet_join_lookup_dc_rpc(TALLOC_CTX *mem_ctx,
goto done;
}
+ b = pipe_hnd->binding_handle;
+
status = rpccli_lsa_open_policy(pipe_hnd, mem_ctx, true,
SEC_FLAG_MAXIMUM_ALLOWED, &lsa_pol);
if (!NT_STATUS_IS_OK(status)) {
goto done;
}
- status = rpccli_lsa_QueryInfoPolicy2(pipe_hnd, mem_ctx,
+ status = dcerpc_lsa_QueryInfoPolicy2(b, mem_ctx,
&lsa_pol,
LSA_POLICY_INFO_DNS,
- &info);
- if (NT_STATUS_IS_OK(status)) {
+ &info,
+ &result);
+ if (NT_STATUS_IS_OK(status) && NT_STATUS_IS_OK(result)) {
r->out.domain_is_ad = true;
r->out.netbios_domain_name = info->dns.name.string;
r->out.dns_domain_name = info->dns.dns_domain.string;
@@ -750,20 +754,25 @@ static NTSTATUS libnet_join_lookup_dc_rpc(TALLOC_CTX *mem_ctx,
}
if (!NT_STATUS_IS_OK(status)) {
- status = rpccli_lsa_QueryInfoPolicy(pipe_hnd, mem_ctx,
+ status = dcerpc_lsa_QueryInfoPolicy(b, mem_ctx,
&lsa_pol,
LSA_POLICY_INFO_ACCOUNT_DOMAIN,
- &info);
+ &info,
+ &result);
if (!NT_STATUS_IS_OK(status)) {
goto done;
}
+ if (!NT_STATUS_IS_OK(result)) {
+ status = result;
+ goto done;
+ }
r->out.netbios_domain_name = info->account_domain.name.string;
r->out.domain_sid = dom_sid_dup(mem_ctx, info->account_domain.sid);
NT_STATUS_HAVE_NO_MEMORY(r->out.domain_sid);
}
- rpccli_lsa_Close(pipe_hnd, mem_ctx, &lsa_pol);
+ dcerpc_lsa_Close(b, mem_ctx, &lsa_pol, &result);
TALLOC_FREE(pipe_hnd);
done: