From 2f2fc84a7c6724f6eab39bf301be70ba5bec15cc Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 10 May 2005 23:33:56 +0000 Subject: 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) --- source4/libcli/cldap/cldap.c | 5 +++-- source4/libcli/cldap/cldap.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'source4/libcli') 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; }; -- cgit