The branch, v3-6-test has been updated via dea1105 Fix bug #8373 - Can't join XP Pro workstations to 3.6.1 DC. from 6797759 Fix bad bugfix for bug #8910 - resolve_ads() code can return zero addresses and miss valid DC IP addresses
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test - Log ----------------------------------------------------------------- commit dea11050ae2e9b2dd4ceb231760d41b68e11f5fd Author: Jeremy Allison <j...@samba.org> Date: Fri May 25 09:16:50 2012 -0700 Fix bug #8373 - Can't join XP Pro workstations to 3.6.1 DC. Treat LIBNDR_FLAG_NOALIGN and LIBNDR_FLAG_REMAINING the same as the other align flags - make them mutually exclusive. Combined work from Metze, Günther and Jeremy. (cherry picked from commit 035342c11719d1daa647c0b2ae7cec27a969f83a) ----------------------------------------------------------------------- Summary of changes: librpc/ndr/libndr.h | 8 +++++++- librpc/ndr/ndr.c | 8 ++++---- 2 files changed, 11 insertions(+), 5 deletions(-) Changeset truncated at 500 lines: diff --git a/librpc/ndr/libndr.h b/librpc/ndr/libndr.h index f4b7db9..1e40779 100644 --- a/librpc/ndr/libndr.h +++ b/librpc/ndr/libndr.h @@ -136,7 +136,13 @@ struct ndr_print { #define LIBNDR_FLAG_ALIGN4 (1<<23) #define LIBNDR_FLAG_ALIGN8 (1<<24) -#define LIBNDR_ALIGN_FLAGS (LIBNDR_FLAG_ALIGN2|LIBNDR_FLAG_ALIGN4|LIBNDR_FLAG_ALIGN8) +#define LIBNDR_ALIGN_FLAGS ( 0 | \ + LIBNDR_FLAG_NOALIGN | \ + LIBNDR_FLAG_REMAINING | \ + LIBNDR_FLAG_ALIGN2 | \ + LIBNDR_FLAG_ALIGN4 | \ + LIBNDR_FLAG_ALIGN8 | \ + 0) #define LIBNDR_PRINT_ARRAY_HEX (1<<25) #define LIBNDR_PRINT_SET_VALUES (1<<26) diff --git a/librpc/ndr/ndr.c b/librpc/ndr/ndr.c index 56d1fab..8b442b6 100644 --- a/librpc/ndr/ndr.c +++ b/librpc/ndr/ndr.c @@ -380,11 +380,11 @@ _PUBLIC_ void ndr_set_flags(uint32_t *pflags, uint32_t new_flags) (*pflags) &= ~LIBNDR_FLAG_LITTLE_ENDIAN; (*pflags) &= ~LIBNDR_FLAG_NDR64; } - if (new_flags & LIBNDR_FLAG_REMAINING) { - (*pflags) &= ~LIBNDR_ALIGN_FLAGS; - } if (new_flags & LIBNDR_ALIGN_FLAGS) { - (*pflags) &= ~LIBNDR_FLAG_REMAINING; + /* Ensure we only have the passed-in + align flag set in the new_flags, + remove any old align flag. */ + (*pflags) &= ~LIBNDR_ALIGN_FLAGS; } if (new_flags & LIBNDR_FLAG_NO_RELATIVE_REVERSE) { (*pflags) &= ~LIBNDR_FLAG_RELATIVE_REVERSE; -- Samba Shared Repository