The branch, v4-1-stable has been updated via 28eacea VERSION: Disable git snapshots for the 4.1.15 release. via c72d0e0 WHATSNEW: Add release notes for Samba 4.1.15. via 65f891a nsswitch: fix soname of linux nss_*.so.2 modules via 5636a48 selftest: use shared/libnss_wrapper_winbind.so.2 via b3f140d wafsamba: add optional keep_underscore=True to SAMBA_LIBRARY() via 16f881c winbind: Retry after SESSION_EXPIRED error in ping-dc via c6ede38 winbind: Retry LogonControl RPC in ping-dc after session expiration via 45238fe librpc/ndr_drsuapi: Allow ndrdump to dump dsinfo52 blobs via db5d422 idl:drsuapi: Manage all possible lengths of drsuapi_DsBindInfo via e3e0c5e librpc-idl: change the drsuapi_DsBindInfoCtr so that it match what is on the wire both in NDR32 and NDR64. via e890269 librpc-idl: replace int32 by uint32 as the values are always > 0 via 9dd858c librpc-idl: replace int32 by the enumeration as it's the type that we use in union's switch drsuapi_DsGetDCInfoCtrLevels via a6a301f drsuapi.idl: change the range for attribute values to 26214400 bytes. via d6c626a libcli/smb: only force signing of smb2 session setups when binding a new session via be1585f s3:smb2_server: allow reauthentication without signing via 7aacb3c s3:smb2_server: use the global signing key to check if signing is required via b1ecde9 testprogs/test_ldb: check rootdse search with extended-dn control via 54c8bca s4:dsdb/rootdse: expand extended dn values with the AS_SYSTEM control via 950506d s3:utils/profiles fix a use after free via b18866b s3:registry/regfio fix some valgrind warnings via d95c2d2 s3:registry/regfio read SD from the correct location via a3d2970 s3: modules: Fix *allocate* calls to follow POSIX error return convention. via 1a128c4 s3: smbd: Fix *allocate* calls to follow POSIX error return convention. via 5b5546b s3: smbd: Fix *allocate* calls to follow POSIX error return convention. via 8999aca s3-libsmb: Duplicate the memory before we free it. via 4051499 s3-libsmb: Set the netbios_name in use_ccache case too. via 8ca520e s3-lib: Do not require a password with --use-ccache. via 6e030c2 pam_winbind: fix warn_pwd_expire implementation. via 2bea37d libcli: SMB2: Pure SMB2-only negprot fix to make us behave as a Windows client does. via 192fa10 s3-smbstatus: Fix exit code of profile output. via 9c7b253 s3-smbclient: Return success if we listed the shares. via 6931f8d s4-rpc: dnsserver: Fix enumeration of IPv4 and IPv6 addresses via 05cace7 samba-tool: Fix the IP output of "samba-tool dns serverinfo <some_server>" via 1e02ce0 samba-tool: Fix enum values in dns.py via 7dfcd23 VERSION: Bump version up to 4.1.15... from 1eb23eb VERSION: Disable git snapshots for the 4.1.14 release.
https://git.samba.org/?p=samba.git;a=shortlog;h=v4-1-stable - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: VERSION | 2 +- WHATSNEW.txt | 89 ++++++++++- buildtools/wafsamba/wafsamba.py | 6 +- libcli/smb/smbXcli_base.c | 18 ++- librpc/idl/drsuapi.idl | 104 ++++++++++--- librpc/ndr/ndr_drsuapi.c | 190 ++++++++++++++++++++++++ nsswitch/pam_winbind.c | 5 +- nsswitch/wscript_build | 24 ++- python/samba/netcmd/dns.py | 15 +- selftest/target/Samba.pm | 2 +- source3/client/client.c | 2 +- source3/include/local.h | 2 + source3/lib/util_cmdline.c | 3 +- source3/libnet/libnet_dssync.c | 21 ++- source3/libsmb/ntlmssp.c | 18 ++- source3/modules/vfs_ceph.c | 13 +- source3/modules/vfs_default.c | 17 ++- source3/modules/vfs_streams_xattr.c | 5 +- source3/modules/vfs_time_audit.c | 8 +- source3/registry/regfio.c | 10 +- source3/rpcclient/cmd_drsuapi.c | 4 + source3/script/tests/test_smbclient_s3.sh | 4 +- source3/smbd/smb2_server.c | 5 - source3/smbd/smb2_sesssetup.c | 4 + source3/smbd/vfs.c | 22 +-- source3/utils/profiles.c | 6 +- source3/utils/status.c | 7 +- source3/winbindd/winbindd_dual_srv.c | 18 +++ source3/wscript_build | 7 - source4/dsdb/repl/drepl_out_helpers.c | 27 +++- source4/dsdb/samdb/ldb_modules/rootdse.c | 6 +- source4/libnet/libnet_become_dc.c | 25 +++- source4/libnet/libnet_unbecome_dc.c | 25 +++- source4/rpc_server/dnsserver/dcerpc_dnsserver.c | 20 ++- source4/rpc_server/dnsserver/dnsdata.c | 56 +++++++ source4/rpc_server/dnsserver/dnsserver.h | 7 +- source4/rpc_server/dnsserver/dnsutils.c | 106 +++++++++---- source4/selftest/tests.py | 2 +- source4/torture/drs/rpc/dssync.c | 21 ++- source4/torture/drs/rpc/msds_intid.c | 21 ++- source4/torture/rpc/dsgetinfo.c | 21 ++- testprogs/blackbox/test_ldb.sh | 2 + 42 files changed, 821 insertions(+), 149 deletions(-) Changeset truncated at 500 lines: diff --git a/VERSION b/VERSION index cbe4336..e5a8fba 100644 --- a/VERSION +++ b/VERSION @@ -25,7 +25,7 @@ ######################################################## SAMBA_VERSION_MAJOR=4 SAMBA_VERSION_MINOR=1 -SAMBA_VERSION_RELEASE=14 +SAMBA_VERSION_RELEASE=15 ######################################################## # If a official release has a serious bug # diff --git a/WHATSNEW.txt b/WHATSNEW.txt index f96bfdf..fe8cbeb 100644 --- a/WHATSNEW.txt +++ b/WHATSNEW.txt @@ -1,4 +1,89 @@ ============================== + Release Notes for Samba 4.1.15 + January 12, 2015 + ============================== + + +This is the latest stable release of Samba 4.1. + + +Changes since 4.1.14: +--------------------- + +o Jeremy Allison <j...@samba.org> + * BUG 10966: libcli: SMB2: Pure SMB2-only negprot fix to make us behave as a + Windows client does. + * BUG 10982 s3: smbd/modules: Fix *allocate* calls to follow POSIX error + return convention. + + +o Christian Ambach <a...@samba.org> + * BUG 9629: Fix profiles tool. + + +o Samuel Cabrero <scabr...@zentyal.com> + * BUG 11006: idl:drsuapi: Manage all possible lengths of drsuapi_DsBindInfo. + + +o Günther Deschner <g...@samba.org> + * BUG 9056: pam_winbind: Fix warn_pwd_expire implementation. + + +o Guenter Kukkukk <li...@kukkukk.com> + * BUG 10952: s4-rpc: dnsserver: Fix enumeration of IPv4 and IPv6 addresses. + + +o Stefan Metzmacher <me...@samba.org> + * BUG 9299: nsswitch: Fix soname of linux nss_*.so.2 modules. + * BUG 10949: s4:dsdb/rootdse: Expand extended dn values with the AS_SYSTEM + control. + * BUG 10958: s3:smb2_server: Allow reauthentication without signing. + * BUG 11006: Fix 'domain join' by adding 'drsuapi.DsBindInfoFallBack' + attribute 'supported_extensions'. + + +o Matthieu Patou <m...@matws.net> + * BUG 11006: Fix 'domain join' by adding 'drsuapi.DsBindInfoFallBack' + attribute 'supported_extensions'. + + +o Christof Schmitt <c...@samba.org> + * BUG 11034: winbind: Retry LogonControl RPC in ping-dc after session + expiration. + + +o Andreas Schneider <a...@samba.org> + * BUG 10279: s3-lib: Do not require a password with --use-ccache. + * BUG 10960: s3-smbclient: Return success if we listed the shares. + * BUG 10961: s3-smbstatus: Fix exit code of profile output. + + +####################################### +Reporting bugs & Development Discussion +####################################### + +Please discuss this release on the samba-technical mailing list or by +joining the #samba-technical IRC channel on irc.freenode.net. + +If you do report problems then please try to send high quality +feedback. If you don't provide vital information to help us track down +the problem then you will probably be ignored. All bug reports should +be filed under the Samba 4.1 product in the project's Bugzilla +database (https://bugzilla.samba.org/). + + +====================================================================== +== Our Code, Our Bugs, Our Responsibility. +== The Samba Team +====================================================================== + + +Release notes for older releases follow: +---------------------------------------- + +====================================================================== + + ============================== Release Notes for Samba 4.1.14 December 1, 2014 ============================== @@ -83,10 +168,8 @@ database (https://bugzilla.samba.org/). ====================================================================== -Release notes for older releases follow: ----------------------------------------- +---------------------------------------------------------------------- -====================================================================== ============================== Release Notes for Samba 4.1.13 diff --git a/buildtools/wafsamba/wafsamba.py b/buildtools/wafsamba/wafsamba.py index c8220c2..6f0e11b 100644 --- a/buildtools/wafsamba/wafsamba.py +++ b/buildtools/wafsamba/wafsamba.py @@ -109,6 +109,7 @@ def SAMBA_LIBRARY(bld, libname, source, ldflags='', external_library=False, realname=None, + keep_underscore=False, autoproto=None, autoproto_extra_source='', group='main', @@ -209,7 +210,10 @@ def SAMBA_LIBRARY(bld, libname, source, libname) if target_type == 'PYTHON' or realname or not private_library: - bundled_name = libname.replace('_', '-') + if keep_underscore: + bundled_name = libname + else: + bundled_name = libname.replace('_', '-') else: bundled_name = PRIVATE_NAME(bld, libname, bundled_extension, private_library) diff --git a/libcli/smb/smbXcli_base.c b/libcli/smb/smbXcli_base.c index 25fbabd..7fadffa 100644 --- a/libcli/smb/smbXcli_base.c +++ b/libcli/smb/smbXcli_base.c @@ -31,6 +31,7 @@ #include "../libcli/smb/read_smb.h" #include "smbXcli_base.h" #include "librpc/ndr/libndr.h" +#include "local.h" struct smbXcli_conn; struct smbXcli_req; @@ -2654,7 +2655,12 @@ struct tevent_req *smb2cli_req_create(TALLOC_CTX *mem_ctx, state->smb2.should_encrypt = session->smb2->should_encrypt; if (cmd == SMB2_OP_SESSSETUP && - session->smb2->signing_key.length != 0) { + session->smb2_channel.signing_key.length == 0 && + session->smb2->signing_key.length != 0) + { + /* + * a session bind needs to be signed + */ state->smb2.should_sign = true; } @@ -3791,6 +3797,16 @@ struct tevent_req *smbXcli_negprot_send(TALLOC_CTX *mem_ctx, */ conn->dispatch_incoming = smb2cli_conn_dispatch_incoming; + /* + * As we're starting with an SMB2 negprot, emulate Windows + * and ask for 31 credits in the initial SMB2 negprot. + * If we don't and leave requested credits at + * zero, MacOSX servers return zero credits on + * the negprot reply and we fail to connect. + */ + smb2cli_conn_set_max_credits(conn, + WINDOWS_CLIENT_PURE_SMB2_NEGPROT_INITIAL_CREDIT_ASK); + subreq = smbXcli_negprot_smb2_subreq(state); if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); diff --git a/librpc/idl/drsuapi.idl b/librpc/idl/drsuapi.idl index ed85205..b78a865 100644 --- a/librpc/idl/drsuapi.idl +++ b/librpc/idl/drsuapi.idl @@ -115,22 +115,30 @@ interface drsuapi } drsuapi_SupportedExtensionsExt; /* this is used by w2k */ - typedef struct { + typedef [public] struct { drsuapi_SupportedExtensions supported_extensions; GUID site_guid; uint32 pid; } drsuapi_DsBindInfo24; /* this is used by w2k3 */ - typedef struct { + typedef [public] struct { drsuapi_SupportedExtensions supported_extensions; GUID site_guid; uint32 pid; uint32 repl_epoch; } drsuapi_DsBindInfo28; + typedef [public] struct { + drsuapi_SupportedExtensions supported_extensions; + GUID site_guid; + uint32 pid; + uint32 repl_epoch; + drsuapi_SupportedExtensionsExt supported_extensions_ext; + } drsuapi_DsBindInfo32; + /* this is used by w2k8 */ - typedef struct { + typedef [public] struct { drsuapi_SupportedExtensions supported_extensions; GUID site_guid; uint32 pid; @@ -139,15 +147,34 @@ interface drsuapi GUID config_dn_guid; } drsuapi_DsBindInfo48; - typedef struct { + /* this is used by w2k12 R2 [MS-DRSR] Section 5.39 */ + typedef [public] struct { + drsuapi_SupportedExtensions supported_extensions; + GUID site_guid; + uint32 pid; + uint32 repl_epoch; + drsuapi_SupportedExtensionsExt supported_extensions_ext; + GUID config_dn_guid; + drsuapi_SupportedExtensionsExt supported_capabilities_ext; + } drsuapi_DsBindInfo52; + + typedef [public] struct { [flag(NDR_REMAINING)] DATA_BLOB info; } drsuapi_DsBindInfoFallBack; - typedef [nodiscriminant] union { - [case(24)][subcontext(4)] drsuapi_DsBindInfo24 info24; - [case(28)][subcontext(4)] drsuapi_DsBindInfo28 info28; - [case(48)][subcontext(4)] drsuapi_DsBindInfo48 info48; - [default][subcontext(4)] drsuapi_DsBindInfoFallBack FallBack; + typedef [nopull, nopush, noprint] [nodiscriminant] union { + [case(24)][subcontext(0), subcontext_size(24)] drsuapi_DsBindInfo24 info24; + [case(28)][subcontext(0), subcontext_size(28)] drsuapi_DsBindInfo28 info28; + [case(32)][subcontext(0), subcontext_size(32)] drsuapi_DsBindInfo32 info32; + [case(48)][subcontext(0), subcontext_size(48)] drsuapi_DsBindInfo48 info48; + [case(52)][subcontext(0), subcontext_size(52)] drsuapi_DsBindInfo52 info52; + /* + * The size for the defaut case is a bit arbitrary it in fact the value + * of the switch but we can't reference it. + * As we hand(un-)marshall this structure it has 0 impact and makes + * pidl happy for wireshark too + */ + [default][subcontext(0), subcontext_size(48)] drsuapi_DsBindInfoFallBack Fallback; } drsuapi_DsBindInfo; /* the drsuapi_DsBindInfoCtr was this before @@ -160,11 +187,44 @@ interface drsuapi * so we're doing it here */ + /* + * MS-DRSR.pdf gives the following definition + typedef struct { + [range(1,10000)] DWORD cb; + [size_is(cb)] BYTE rgb[]; + } DRS_EXTENSIONS; + + But we use a subcontext which has a slighly different signification on how + data are laid out. + With the MS-DRSR definition we will have + size_is_cb cv rgb_array + with size_is_cb being a uint3264 and cv being a uint32 + + We used to have typedef struct { [range(1,10000)] uint32 length; [switch_is(length)] drsuapi_DsBindInfo info; } drsuapi_DsBindInfoCtr; + typedef [nodiscriminant] union { + [case(24)][subcontext(4)] drsuapi_DsBindInfo24 info24; + [case(28)][subcontext(4)] drsuapi_DsBindInfo28 info28; + [case(48)][subcontext(4)] drsuapi_DsBindInfo48 info48; + [default][subcontext(4)] drsuapi_DsBindInfoFallBack FallBack; + } drsuapi_DsBindInfo; + + With this definition data is laid out this way: + length subcontext_size drsuapi_DsBindInfoxx + with length being a uint32 and subcontext_size being a uint3264 + + It has clearly an impact on the way things are aligned when using NDR64 + */ + typedef [flag(NDR_NOALIGN)] struct { + [range(1,10000)] uint3264 length; + [value(length)] uint32 __ndr_length; + [switch_is(length)] drsuapi_DsBindInfo info; + } drsuapi_DsBindInfoCtr; + /* this is a magic guid you need to pass to DsBind to make drsuapi_DsWriteAccountSpn() work * * maybe the bind_guid could also be the invocation_id see drsuapi_DsReplicaConnection04 @@ -546,7 +606,7 @@ interface drsuapi /* Generic DATA_BLOB values */ typedef struct { - [range(0,10485760),value(ndr_size_DATA_BLOB(0,blob,0))] uint32 __ndr_size; + [range(0,26214400),value(ndr_size_DATA_BLOB(0,blob,0))] uint32 __ndr_size; DATA_BLOB *blob; } drsuapi_DsAttributeValue; @@ -1107,12 +1167,19 @@ interface drsuapi /*****************/ /* Function 0x10 */ + typedef [v1_enum] enum { + DRSUAPI_DC_INFO_CTR_1 = 1, + DRSUAPI_DC_INFO_CTR_2 = 2, + DRSUAPI_DC_INFO_CTR_3 = 3, + DRSUAPI_DC_CONNECTION_CTR_01 = 0xFFFFFFFF + } drsuapi_DsGetDCInfoCtrLevels; + typedef struct { [charset(UTF16),string] uint16 *domain_name; /* netbios or dns */ - int32 level; /* specifies the switch level for the request */ + drsuapi_DsGetDCInfoCtrLevels level; /* specifies the switch level for the request */ } drsuapi_DsGetDCInfoRequest1; - typedef [switch_type(int32)] union { + typedef [switch_type(uint32)] union { [case(1)] drsuapi_DsGetDCInfoRequest1 req1; } drsuapi_DsGetDCInfoRequest; @@ -1204,14 +1271,7 @@ interface drsuapi [size_is(count)] drsuapi_DsGetDCConnection01 *array; } drsuapi_DsGetDCConnectionCtr01; - typedef [v1_enum] enum { - DRSUAPI_DC_INFO_CTR_1 = 1, - DRSUAPI_DC_INFO_CTR_2 = 2, - DRSUAPI_DC_INFO_CTR_3 = 3, - DRSUAPI_DC_CONNECTION_CTR_01 = -1 - } drsuapi_DsGetDCInfoCtrLevels; - - typedef [switch_type(int32)] union { + typedef [switch_type(drsuapi_DsGetDCInfoCtrLevels)] union { [case(DRSUAPI_DC_INFO_CTR_1)] drsuapi_DsGetDCInfoCtr1 ctr1; [case(DRSUAPI_DC_INFO_CTR_2)] drsuapi_DsGetDCInfoCtr2 ctr2; [case(DRSUAPI_DC_INFO_CTR_3)] drsuapi_DsGetDCInfoCtr3 ctr3; @@ -1220,9 +1280,9 @@ interface drsuapi WERROR drsuapi_DsGetDomainControllerInfo( [in] policy_handle *bind_handle, - [in] int32 level, + [in] uint32 level, [in,ref,switch_is(level)] drsuapi_DsGetDCInfoRequest *req, - [out,ref] int32 *level_out, + [out,ref] drsuapi_DsGetDCInfoCtrLevels *level_out, [out,ref,switch_is(*level_out)] drsuapi_DsGetDCInfoCtr *ctr ); diff --git a/librpc/ndr/ndr_drsuapi.c b/librpc/ndr/ndr_drsuapi.c index f7125e6..45d3ac09 100644 --- a/librpc/ndr/ndr_drsuapi.c +++ b/librpc/ndr/ndr_drsuapi.c @@ -4,6 +4,7 @@ routines for printing some linked list structs in DRSUAPI Copyright (C) Stefan (metze) Metzmacher 2005 + Copyright (C) Matthieu Patou 2013 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -406,3 +407,192 @@ _PUBLIC_ void ndr_print_drsuapi_DsAddEntry_AttrErrListItem_V1(struct ndr_print * ndr_print_drsuapi_DsAddEntry_AttrErrListItem_V1(ndr, "next", r->next); } } + +enum ndr_err_code ndr_push_drsuapi_DsBindInfo(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsBindInfo *r) +{ + uint32_t _flags_save = ndr->flags; + ndr->flags = ndr->flags & ~LIBNDR_FLAG_NDR64; + NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags); + if (ndr_flags & NDR_SCALARS) { + uint32_t level = ndr_push_get_switch_value(ndr, r); + NDR_CHECK(ndr_push_union_align(ndr, 4)); + switch (level) { + case 24: { + { + struct ndr_push *_ndr_info24; + NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info24, 0, 24)); + NDR_CHECK(ndr_push_drsuapi_DsBindInfo24(_ndr_info24, NDR_SCALARS, &r->info24)); + NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info24, 0, 24)); + } + break; } + + case 28: { + { + struct ndr_push *_ndr_info28; + NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info28, 0, 28)); + NDR_CHECK(ndr_push_drsuapi_DsBindInfo28(_ndr_info28, NDR_SCALARS, &r->info28)); + NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info28, 0, 28)); + } + break; } + + case 48: { + { + struct ndr_push *_ndr_info48; + NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info48, 0, 48)); + NDR_CHECK(ndr_push_drsuapi_DsBindInfo48(_ndr_info48, NDR_SCALARS, &r->info48)); + NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info48, 0, 48)); + } + break; } + + case 52: { + { + struct ndr_push *_ndr_info52; + NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info52, 0, 52)); + NDR_CHECK(ndr_push_drsuapi_DsBindInfo52(_ndr_info52, NDR_SCALARS, &r->info52)); + NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info52, 0, 52)); + } + break; } + + default: { + { + struct ndr_push *_ndr_Fallback; + NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_Fallback, 0, level)); + NDR_CHECK(ndr_push_drsuapi_DsBindInfoFallBack(_ndr_Fallback, NDR_SCALARS, &r->Fallback)); + NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_Fallback, 0, level)); + } + break; } + + } + } + if (ndr_flags & NDR_BUFFERS) { + uint32_t level = ndr_push_get_switch_value(ndr, r); + switch (level) { + case 24: + break; + + case 28: + break; + + case 48: + break; + + case 52: + break; + + default: + break; + + } + } + ndr->flags = _flags_save; + return NDR_ERR_SUCCESS; +} + +enum ndr_err_code ndr_pull_drsuapi_DsBindInfo(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsBindInfo *r) +{ + uint32_t level; + uint32_t _flags_save = ndr->flags; + ndr->flags = ndr->flags & ~LIBNDR_FLAG_NDR64; + level = ndr_pull_get_switch_value(ndr, r); + NDR_PULL_CHECK_FLAGS(ndr, ndr_flags); + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_pull_union_align(ndr, 4)); + switch (level) { + case 24: { + { + struct ndr_pull *_ndr_info24; + NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info24, 0, 24)); + NDR_CHECK(ndr_pull_drsuapi_DsBindInfo24(_ndr_info24, NDR_SCALARS, &r->info24)); + NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_info24, 0, 24)); + } + break; } + + case 28: { + { + struct ndr_pull *_ndr_info28; + NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info28, 0, 28)); + NDR_CHECK(ndr_pull_drsuapi_DsBindInfo28(_ndr_info28, NDR_SCALARS, &r->info28)); + NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_info28, 0, 28)); + } + break; } + + case 48: { + { + struct ndr_pull *_ndr_info48; + NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info48, 0, 48)); + NDR_CHECK(ndr_pull_drsuapi_DsBindInfo48(_ndr_info48, NDR_SCALARS, &r->info48)); + NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_info48, 0, 48)); -- Samba Shared Repository