summaryrefslogtreecommitdiff
path: root/source4/libcli
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-05-10 23:33:56 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:16:37 -0500
commit2f2fc84a7c6724f6eab39bf301be70ba5bec15cc (patch)
tree13eb42b0238a5744bb2f368f8e686d350287afe5 /source4/libcli
parent398a3130f5166d4a4d455529ae3048316510f867 (diff)
downloadsamba-2f2fc84a7c6724f6eab39bf301be70ba5bec15cc.tar.gz
samba-2f2fc84a7c6724f6eab39bf301be70ba5bec15cc.tar.bz2
samba-2f2fc84a7c6724f6eab39bf301be70ba5bec15cc.zip
r6720: added support for the remaining 2 types of CLDAP netlogon
response. To work around the fact that the type of the returned data is not encoded in the packet, this required adding ndr_pull_union_blob() which allows us to pull a blob into a union with a specified switch value, in this case the switch value comes from the calling NtVer field. (This used to be commit bd27e626c27be72913d1a1569ee6e2e2711df84e)
Diffstat (limited to 'source4/libcli')
-rw-r--r--source4/libcli/cldap/cldap.c5
-rw-r--r--source4/libcli/cldap/cldap.h2
2 files changed, 4 insertions, 3 deletions
diff --git a/source4/libcli/cldap/cldap.c b/source4/libcli/cldap/cldap.c
index 7caf5a0810..a28afc6877 100644
--- a/source4/libcli/cldap/cldap.c
+++ b/source4/libcli/cldap/cldap.c
@@ -451,8 +451,9 @@ NTSTATUS cldap_netlogon_recv(struct cldap_request *req,
}
data = search.out.response->attributes[0].values;
- status = ndr_pull_struct_blob_all(data, mem_ctx, &io->out.netlogon,
- (ndr_pull_flags_fn_t)ndr_pull_nbt_cldap_netlogon);
+ status = ndr_pull_union_blob(data, mem_ctx, &io->out.netlogon,
+ io->in.version & 0xF,
+ (ndr_pull_flags_fn_t)ndr_pull_nbt_cldap_netlogon);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(2,("cldap failed to parse netlogon response of type 0x%02x\n",
SVAL(data->data, 0)));
diff --git a/source4/libcli/cldap/cldap.h b/source4/libcli/cldap/cldap.h
index 5ed7df15c7..a8bba7edbe 100644
--- a/source4/libcli/cldap/cldap.h
+++ b/source4/libcli/cldap/cldap.h
@@ -127,7 +127,7 @@ struct cldap_netlogon {
uint8_t version;
} in;
struct {
- struct nbt_cldap_netlogon netlogon;
+ union nbt_cldap_netlogon netlogon;
} out;
};