]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: Fix bug 8371
authorVolker Lendecke <vl@samba.org>
Thu, 17 Nov 2011 21:24:24 +0000 (22:24 +0100)
committerKarolin Seeger <kseeger@samba.org>
Mon, 23 Jan 2012 20:28:51 +0000 (21:28 +0100)
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.
(cherry picked from commit 6cb605364e83fe0c5562c9b0920408c697e4fc3e)

libcli/netlogon/ndr_netlogon.c

index 7d6aa974b0c71a96dfcae1bccb33b2167fd4a1da..81dbed4f7c7337976627442e16beb44f984cf0ab 100644 (file)
@@ -53,6 +53,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)) {
                        struct ndr_push *_ndr_sid;
                        uint32_t _flags_save_DATA_BLOB = ndr->flags;
+                       ndr->flags &= ~LIBNDR_FLAG_NOALIGN;
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->_pad));
                        ndr->flags = _flags_save_DATA_BLOB;
@@ -98,6 +99,7 @@ enum ndr_err_code ndr_pull_NETLOGON_SAM_LOGON_REQUEST(struct ndr_pull *ndr, int
                if (r->sid_size) {
                        uint32_t _flags_save_DATA_BLOB = ndr->flags;
                        struct ndr_pull *_ndr_sid;
+                       ndr->flags &= ~LIBNDR_FLAG_NOALIGN;
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->_pad));
                        ndr->flags = _flags_save_DATA_BLOB;