1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00

s3: Fix bug 8371

ndr_set_flag or's in the given flag (ALIGN4). At this point, ndr->flags
contains NOALIGN, which will persist. In ndr_push_DATA_BLOB NOALIGN overrides
everything else, so that the ALIGN4 is not respected.

Autobuild-User: Volker Lendecke <vlendec@samba.org>
Autobuild-Date: Fri Nov 18 09:33:37 CET 2011 on sn-devel-104
This commit is contained in:
Volker Lendecke 2011-11-17 22:36:22 +01:00 committed by Volker Lendecke
parent cd3f552f4f
commit 2642f38588

View File

@ -234,6 +234,7 @@ enum ndr_err_code ndr_push_NETLOGON_SAM_LOGON_REQUEST(struct ndr_push *ndr, int
if (ndr_size_dom_sid0(&r->sid, ndr->flags)) { if (ndr_size_dom_sid0(&r->sid, ndr->flags)) {
struct ndr_push *_ndr_sid; struct ndr_push *_ndr_sid;
uint32_t _flags_save_DATA_BLOB = ndr->flags; uint32_t _flags_save_DATA_BLOB = ndr->flags;
ndr->flags &= ~LIBNDR_FLAG_NOALIGN;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4); ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->_pad)); NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->_pad));
ndr->flags = _flags_save_DATA_BLOB; ndr->flags = _flags_save_DATA_BLOB;
@ -279,6 +280,7 @@ enum ndr_err_code ndr_pull_NETLOGON_SAM_LOGON_REQUEST(struct ndr_pull *ndr, int
if (r->sid_size) { if (r->sid_size) {
uint32_t _flags_save_DATA_BLOB = ndr->flags; uint32_t _flags_save_DATA_BLOB = ndr->flags;
struct ndr_pull *_ndr_sid; struct ndr_pull *_ndr_sid;
ndr->flags &= ~LIBNDR_FLAG_NOALIGN;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4); ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->_pad)); NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->_pad));
ndr->flags = _flags_save_DATA_BLOB; ndr->flags = _flags_save_DATA_BLOB;