The branch, v4-0-stable has been updated via 52eee62 WHATSNEW: Add release notes for Samba 4.0.17. via e6ff129 s3: messages: Implement cleanup of dead records. via b649fdb s3: smbd: Ensure we always go via getgroups_unix_user() when creating an NT token. via fc185a5 tevent: fix crash bug in tevent_queue_immediate_trigger() via f9e8a9e lsa.idl: define lsa.ForestTrustCollisionInfo and ForestTrustCollisionRecord as public structs via ecfe72f s3-rpc_server: Fix handling of fragmented rpc requests. via 2170b8c s3:rpc_server: minor refactoring of process_request_pdu() via eec2818 pidl-waf: Only install Yapp::Driver if it is not available. via f21b897 pidl-waf: Check for system perl(Parse::Yapp::Driver). via fb992a8 pidl-waf: Add a function to check for a system perl module. via 50567ff pidl-waf: Do not glob to install pidl modules. via 667a59c pidl-waf: Install pidl modules to the perl vendorlib directory. via 10573dd pidl-waf: Remove unused variable pidl_src. via 60b8f8f autobuild: Set perl vendorlib direcotry. via f46447a buildtools: Add perl vendorlib configure option. via 503d0ff buildtools: Rename perl vendorarch configure option. via cd208b2 dns: Extend tests for records with another type via 7bac6e0 bug #10471: Don't respond with NXDOMAIN to records that exist with another type via 67fc5bf s3: smbd: Fileserving share access checks. via c96bac8 smbreadline: switch to new-style readline typedef via e53c10d s4:lib/socket: simplify iface_list_wildcard() and its callers via 74aa879 s4:lib/socket: use the same logic in iface_list_wildcard() as in smbd via 5f4c1bb s3:smbd: s/BUFFER_SIZE/LARGE_WRITEX_BUFFER_SIZE via a42b892 s3:smbd: fix the maxentries calculation depending on the max_send. via 03f9c61 s3:smbd: simplify maxentries calculation in reply_search() via 00a60ed s3:smbd: fix the read numtoread calculation depending on the max_send. via e915655 s3:smbd: fix the lockread numtoread calculation depending on the max_send. via 93e5454 s3:smbd: pass the final numtoread reply_outbuf() for the lockread reply. via e6b365a s3:smbd: fix lockread numtoread calculation to match reply_outbuf() arguments. via 9da034e s3:smbd: take less than SMB_BUFFER_SIZE_MIN ('500') as header overhead in ipc.c via 1039e5f s3:smbd: reject a MaxBufferSize < SMB_BUFFER_SIZE_MIN (500) in a session setup request via a5ce91c s3:smbd: use sconn->smb1.sessions.max_send = SMB_BUFFER_SIZE_MAX via 1c13590 s3:smbd: use SMB_BUFFER_SIZE_MIN/MAX to limit lp_max_xmit() via e06ff86 s3:include: let CLI_BUFFER_SIZE be an alias of SMB_BUFFER_SIZE_MAX via b6ee584 libcli/smb: add SMB_BUFFER_SIZE_MIN/MAX defines via 1fac62c s3:param: avoid using BUFFER_SIZE to limit the lp_min_receive_file_size() via ab7c46c s3:client: only limit the buffer by the given length 'n' via eeb901b s3:torture: use CLI_BUFFER_SIZE instead of BUFFER_SIZE via e98e7b0 s3:utils/smbfilter: use a local variable for the packet buffer via 57cd00c s3:smbd: avoid invalid lock_order panic triggered by "CTDB_SRVID_RELEASE_IP" via f850683 s3:lib/ctdbd_conn: let release_ip_handler return bool via 95b04d7 s3:smbd: maintain smbd_server_connection->status via c759f09 s3:smbd: simplify exit_server_common() via 1560850 s3:smbd: s/EVENT_FD/TEVENT_FD via 626fc22 doc: add "spoolss: architecture" parameter usage via 33419d8 s4: smbtorture: Add a proper change_notify going async followed by tdis test. via 25464e3 s4: smbtorture: Update the torture_smb2_notify_ulogoff test to demonstrate the problem. via 77d1158 s3:smb2_tcon: cancel and wait for pending requests on tdis via e736677 s3:smb2_sesssetup: cancel and wait for pending requests on logoff via 37b51d7 s3:smb2_tcon: split smbd_smb2_tdis into an async *_send/recv pair. via 5f8bc31 s3:smb2_sesssetup: split smbd_smb2_logoff into an async *_send/recv pair. via f7cc9d0 s3:smb2_lock: return RANGE_NOT_LOCKED instead of CANCELLED for logoff and tdis via 53ae5fb s3:smb2_lock: fix whitespaces/tabs in smbd_smb2_lock_cancel() via 6896d0c s4:torture/smb2: accept NT_STATUS_RANGE_NOT_LOCKED after smb2_logoff/tdis via b86c4fa s3: lib: Back-port tevent_queue_wait_send/recv -> smbd_tevent_queue_wait_send/recv via 87a0240 tevent: fix crash bug in tevent_queue_immediate_trigger() via e42fd53 Merge tag 'samba-4.0.16' into v4-0-test via 58cb450 VERSION: Bump version number up to 4.0.17. via 887e04b VERSION: Disable git snapshots for the 4.0.16 release. via a656392 WHATSNEW: Add release notes for Samba 4.0.16. via caad2f0 CVE-2013-6442: s3:smbcacls - ensure we don't lose an existing ACL when setting owner or group owner. via e999b98 CVE-2013-4496:Revert remainder of ce895609b04380bfc41e4f8fddc84bd2f9324340 via 6b8bca5 CVE-2013-4496:samr: Remove ChangePasswordUser via d8b5c1b CVE-2013-4496:s3:auth: fix memory leak in the ACCOUNT_LOCKED_OUT case. via ac0ef44 CVE-2013-4496:s3-samr: Block attempts to crack passwords via repeated password changes via 24fec62 s3-spoolssd: Don't register spoolssd if epmd is not running. via 9537207 s3:winbindd: avoid directly asking a trusted domain in wb_lookupsids*() via 099a02a s3:winbindd: fix _wbint_LookupSids() on error via cc754e6 pidl:NDR/Client: fix dcerpc_function() with [out,ref] pointers via 52990c9 s3: smbd: Ensure brl_get_locks_internal() always returns a valid struct byte_range_lock even if there are no locks. via f4b8045 s3-printing: Fix obvious memory leak in printer_list_get_printer(). via a8fb002 rpc_client: retry open on STATUS_PIPE_NOT_AVAILABLE via fd8d469 s3: ldap client can return NT_STATUS_OK when an error occurs in a paged search. via e1f7cbc waf: improve iconv checks via f33c3ad heimdal_build: only enable libintl functions if everything was found via 8b062f1 waf:lib/replace fix iconv checks on HP/UX via 4aafa69 waf:lib/replace gettext configure checks via e8ab980 waf:lib/replace fix gettext detection via 7346b57 waf:lib/replace change detection of gettext via f4e1771 waf:lib/replace fix up libintl related checks via 0d2e0d4 waf:lib/replace correct detection of libiconv via 68c6cb5 s3: printing: Fix problem with server taking too long to respond to a MSG_PRINTER_DRVUPGRADE message. via 23bec26 librpc/nbt: increase MAX_COMPONENTS limit for nbt_names. via 4d857a9 dfs: always call create_conn_struct with root privileges via 4bc4ab9 smbd: Fix calls to create_conn_struct_cwd to be correctly indented. via d534964 smbd: Split create_conn_struct into a fn that does not change the working dir via 20d7ec8 VERSION: Bump version number up to 4.0.15... from bc0f537 VERSION: Disable git snapshots for the 4.0.16 release.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-stable - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: VERSION | 2 +- WHATSNEW.txt | 118 +++++++++++++- buildtools/wafadmin/Tools/perl.py | 23 ++- buildtools/wafsamba/wscript | 3 +- .../smbdotconf/printing/spoolssarchitecture.xml | 15 ++ lib/replace/wscript | 30 +++- lib/tevent/tevent_queue.c | 8 + libcli/smb/smb_constants.h | 8 + libcli/smbreadline/smbreadline.c | 2 +- librpc/idl/lsa.idl | 4 +- librpc/ndr/ndr_nbt.c | 2 +- pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm | 14 ++ pidl/lib/wscript_build | 35 ++++- pidl/wscript | 30 +++- python/samba/tests/dns.py | 30 ++++ script/autobuild.py | 7 +- source3/Makefile.in | 2 +- source3/auth/token_util.c | 101 +++++++++++ source3/build/charset.py | 6 + source3/client/client.c | 2 +- source3/include/client.h | 2 +- source3/include/ctdbd_conn.h | 2 +- source3/include/messages.h | 6 + source3/include/smb.h | 4 +- source3/lib/ctdbd_conn.c | 36 ++++- source3/lib/messages.c | 17 ++ source3/lib/messages_local.c | 38 ++++ .../lib/smbd_tevent_queue.c | 59 ++++--- .../kerberos.h => source3/lib/smbd_tevent_queue.h | 31 ++-- source3/libads/ldap.c | 11 +- source3/locking/brlock.c | 34 +++-- source3/param/loadparm.c | 2 +- source3/printing/nt_printing.c | 71 +++++--- source3/printing/printer_list.c | 1 + source3/printing/queue_process.c | 6 + source3/printing/spoolssd.c | 39 +++-- source3/rpc_client/rpc_transport_np.c | 57 ++++++- source3/rpc_server/spoolss/srv_spoolss_nt.c | 1 + source3/rpc_server/srv_pipe.c | 40 ++--- source3/rpc_server/srvsvc/srv_srvsvc_nt.c | 24 ++-- source3/smbd/globals.h | 1 + source3/smbd/ipc.c | 10 +- source3/smbd/msdfs.c | 121 ++++++++++---- source3/smbd/process.c | 91 +++++++++-- source3/smbd/proto.h | 11 +- source3/smbd/reply.c | 54 +++--- source3/smbd/server.c | 7 + source3/smbd/server_exit.c | 17 ++- source3/smbd/service.c | 12 +- source3/smbd/sesssetup.c | 19 ++- source3/smbd/smb2_lock.c | 42 ++++-- source3/smbd/smb2_server.c | 16 ++ source3/smbd/smb2_sesssetup.c | 183 ++++++++++++++++++-- source3/smbd/smb2_tcon.c | 180 ++++++++++++++++++-- source3/torture/torture.c | 2 +- source3/utils/smbfilter.c | 2 +- source3/winbindd/wb_lookupsids.c | 2 +- source3/winbindd/winbindd_dual_srv.c | 8 +- source3/wscript_build | 1 + source4/cldap_server/cldap_server.c | 2 +- source4/dns_server/dns_query.c | 14 +- source4/dns_server/dns_server.c | 8 +- source4/heimdal_build/config.h | 3 +- source4/kdc/kdc.c | 2 +- source4/ldap_server/ldap_server.c | 4 +- source4/lib/socket/interface.c | 26 +--- source4/rpc_server/dcerpc_server.c | 4 +- source4/smb_server/service_smb.c | 4 +- source4/torture/smb2/lock.c | 24 ++-- source4/torture/smb2/notify.c | 88 +++++++++- source4/web_server/web_server.c | 4 +- 71 files changed, 1506 insertions(+), 379 deletions(-) create mode 100644 docs-xml/smbdotconf/printing/spoolssarchitecture.xml copy lib/tevent/tevent_wakeup.c => source3/lib/smbd_tevent_queue.c (53%) copy lib/replace/system/kerberos.h => source3/lib/smbd_tevent_queue.h (61%) Changeset truncated at 500 lines: diff --git a/VERSION b/VERSION index ee93681..8a57f26 100644 --- a/VERSION +++ b/VERSION @@ -25,7 +25,7 @@ ######################################################## SAMBA_VERSION_MAJOR=4 SAMBA_VERSION_MINOR=0 -SAMBA_VERSION_RELEASE=16 +SAMBA_VERSION_RELEASE=17 ######################################################## # If a official release has a serious bug # diff --git a/WHATSNEW.txt b/WHATSNEW.txt index 654a252..8ae476c 100644 --- a/WHATSNEW.txt +++ b/WHATSNEW.txt @@ -1,4 +1,118 @@ ============================== + Release Notes for Samba 4.0.17 + April 15, 2014 + ============================== + + +This is the latest stable release of Samba 4.0. + + +Changes since 4.0.16: +--------------------- + +o Jeremy Allison <j...@samba.org> + * BUG 9878: Make "force user" work as expected. + * BUG 9942: Fix problem with server taking too long to respond to a + MSG_PRINTER_DRVUPGRADE message. + * BUG 9993: s3-printing: Fix obvious memory leak in + printer_list_get_printer(). + * BUG 10344: SessionLogoff on a signed connection with an outstanding notify + request crashes smbd. + * BUG 10431: Fix STATUS_NO_MEMORY response from Query File Posix Lock request. + * BUG 10508: smbd: Correctly add remote users into local groups. + * BUG 10534: Cleanup messages.tdb record after unclean smbd shutdown. + + +o Christian Ambach <a...@samba.org> + * BUG 9911: Fix build on AIX with IBM XL C/C++ (gettext detection issues). + * BUG 10308: Fix String Conversion Errors with Samba 4.1.0 Build on AIX 7.1. + + +o Andrew Bartlett <abart...@samba.org> + * smbd: Split create_conn_struct into a fn that does not change the + working dir. + + +o Gregor Beck <gb...@sernet.de> + * BUG 10458: Fix 'wbinfo -i' with one-way trust. + * s3:rpc_server: Minor refactoring of process_request_pdu(). + + +o Kai Blin <k...@samba.org> + * BUG 10471: Don't respond with NXDOMAIN to records that exist with another + type. + + +o Alexander Bokovoy <a...@samba.org> + * BUG 10504: lsa.idl: Define lsa.ForestTrustCollisionInfo and + ForestTrustCollisionRecord as public structs. + + +o Günther Deschner <g...@samba.org> + * BUG 10439: Increase max netbios name components. + + +o David Disseldorp <dd...@samba.org> + * BUG 10188: doc: Add "spoolss: architecture" parameter usage. + * BUG 10484: Initial FSRVP rpcclient requests fail with + NT_STATUS_PIPE_NOT_AVAILABLE. + + +o Daniel Liberman <danie...@gmail.com> + * BUG 10387: 'net ads search' on high latency networks can return a partial + list with no error indication. + + +o Stefan Metzmacher <me...@samba.org> + * BUG 10344: SessionLogoff on a signed connection with an outstanding notify + request crashes smbd. + * BUG 10422: max xmit > 64kb leads to segmentation fault. + * BUG 10444: smbd_server_connection_terminate("CTDB_SRVID_RELEASE_IP") + panics from within ctdbd_migrate() with invalid lock_order. + * BUG 10464: samba4 services not binding on IPv6 addresses causing + connection delays. + * tevent: Fix crash bug in tevent_queue_immediate_trigger(). + + +o Garming Sam <garm...@catalyst.net.nz> + * BUG 10378: dfs: Always call create_conn_struct with root privileges. + + +o Andreas Schneider <a...@cryptomilk.org> + * BUG 10472: pidl: waf should have an option for the dir to install perl + files and do not glob. + * BUG 10474: s3-spoolssd: Don't register spoolssd if epmd is not running. + * BUG 10481: s3-rpc_server: Fix handling of fragmented rpc requests. + + +o Gustavo Zacarias <gust...@zacarias.com.ar> + * BUG 10506: Make 'smbreadline' build with readline 6.3. + + +###################################################################### +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.0 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.0.16 March 11, 2014 ============================== @@ -61,8 +175,8 @@ database (https://bugzilla.samba.org/). ====================================================================== -Release notes for older releases follow: ----------------------------------------- +---------------------------------------------------------------------- + ============================== Release Notes for Samba 4.0.15 diff --git a/buildtools/wafadmin/Tools/perl.py b/buildtools/wafadmin/Tools/perl.py index a6787a8..8f13e28 100644 --- a/buildtools/wafadmin/Tools/perl.py +++ b/buildtools/wafadmin/Tools/perl.py @@ -98,12 +98,27 @@ def check_perl_ext_devel(conf): conf.env.EXTUTILS_TYPEMAP = read_out('print "$Config{privlib}/ExtUtils/typemap"') conf.env.perlext_PATTERN = '%s.' + read_out('print $Config{dlext}')[0] - if getattr(Options.options, 'perlarchdir', None): - conf.env.ARCHDIR_PERL = Options.options.perlarchdir + if getattr(Options.options, 'perl_vendorarch_dir', None): + conf.env.PERL_VENDORARCH_DIR = Options.options.perl_vendorarch_dir else: - conf.env.ARCHDIR_PERL = read_out('print $Config{sitearch}')[0] + conf.env.PERL_VENDORARCH_DIR = read_out('print $Config{vendorarch}')[0] + + if getattr(Options.options, 'perl_vendorlib_dir', None): + conf.env.PERL_VENDORLIB_DIR = Options.options.perl_vendorlib_dir + else: + conf.env.PERL_VENDORLIB_DIR = read_out('print $Config{vendorlib}')[0] def set_options(opt): opt.add_option("--with-perl-binary", type="string", dest="perlbinary", help = 'Specify alternate perl binary', default=None) - opt.add_option("--with-perl-archdir", type="string", dest="perlarchdir", help = 'Specify directory where to install arch specific files', default=None) + opt.add_option("--with-perl-vendorarch", + type="string", + dest="perl_vendorarch_dir", + help = ('Specify directory where to install arch specific files'), + default=None) + + opt.add_option("--with-perl-vendorlib", + type="string", + dest="perl_vendorlib_dir", + help = ('Specify directory where to install vendor specific files'), + default=None) diff --git a/buildtools/wafsamba/wscript b/buildtools/wafsamba/wscript index fe2e515..7984227 100755 --- a/buildtools/wafsamba/wscript +++ b/buildtools/wafsamba/wscript @@ -80,8 +80,7 @@ def set_options(opt): match = ['Checking for library iconv', 'Checking for iconv_open', 'Checking for header iconv.h']) opt.add_option('--with-gettext', help='additional directory to search for gettext', - action='store', dest='gettext_location', default='/usr/local', - match = ['Checking for library intl', 'Checking for header libintl.h']) + action='store', dest='gettext_location', default='None') opt.add_option('--without-gettext', help=("Disable use of gettext"), action="store_true", dest='disable_gettext', default=False) diff --git a/docs-xml/smbdotconf/printing/spoolssarchitecture.xml b/docs-xml/smbdotconf/printing/spoolssarchitecture.xml new file mode 100644 index 0000000..5ce9f13 --- /dev/null +++ b/docs-xml/smbdotconf/printing/spoolssarchitecture.xml @@ -0,0 +1,15 @@ +<samba:parameter name="spoolss: architecture" + context="G" + type="string" + advanced="1" + developer="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Windows spoolss print clients only allow association of server-side drivers + with printers when the driver architecture matches the advertised print server + architecture. Samba's spoolss print server architecture can be changed using + this parameter.</para> +</description> +<value type="default">Windows NT x86</value> +<value type="example">Windows x64</value> +</samba:parameter> diff --git a/lib/replace/wscript b/lib/replace/wscript index e4d8b6b..61a25ec 100644 --- a/lib/replace/wscript +++ b/lib/replace/wscript @@ -346,10 +346,19 @@ removeea setea headers='netinet/in.h arpa/nameser.h resolv.h') + # try to find libintl (if --without-gettext is not given) conf.env.intl_libs='' if not Options.options.disable_gettext: + # any extra path given to look at? + if not Options.options.gettext_location == 'None': + conf.env['CFLAGS'].extend(["-I%s" % Options.options.gettext_location]); + conf.env['LDFLAGS'].extend(["-L%s" % Options.options.gettext_location]); + else: + conf.env['CFLAGS'].extend(["-I/usr/local"]); + conf.env['LDFLAGS'].extend(["-L/usr/local"]); conf.CHECK_HEADERS('libintl.h') conf.CHECK_LIB('intl') + conf.CHECK_DECLS('dgettext gettext bindtextdomain textdomain bind_textdomain_codeset', headers="libintl.h") # *textdomain functions are not strictly necessary conf.CHECK_FUNCS_IN('bindtextdomain textdomain bind_textdomain_codeset', '', checklibc=True, headers='libintl.h') @@ -368,18 +377,27 @@ removeea setea else: # Some hosts need lib iconv for linking with lib intl # So we try with flags just in case it helps. - oldflags = conf.env['EXTRA_LDFLAGS']; - conf.env['EXTRA_LDFLAGS'].extend("-liconv") + oldflags = list(conf.env['EXTRA_LDFLAGS']); + conf.env['EXTRA_LDFLAGS'].extend(["-liconv"]) conf.CHECK_FUNCS_IN('dgettext gettext bindtextdomain textdomain bind_textdomain_codeset', 'intl', checklibc=False, headers='libintl.h') conf.env['EXTRA_LDFLAGS'] = oldflags if conf.env['HAVE_GETTEXT'] and conf.env['HAVE_DGETTEXT']: # save for dependency definitions conf.env.intl_libs='iconv intl' - else: - conf.fatal('library gettext not found, try specifying the path to ' + - 'it with --with-gettext=</path/to/gettext> or ' + - '--without-gettext to build without''') + + # did we find both prototypes and a library to link against? + # if not, unset the detected values (see Bug #9911) + if not (conf.env['HAVE_GETTEXT'] and conf.env['HAVE_DECL_GETTEXT']): + conf.undefine('HAVE_GETTEXT') + conf.undefine('HAVE_DECL_GETTEXT') + if not (conf.env['HAVE_DGETTEXT'] and conf.env['HAVE_DECL_DGETTEXT']): + conf.undefine('HAVE_DGETTEXT') + conf.undefine('HAVE_DECL_DGETTEXT') + + # did the user insist on gettext (--with-gettext)? + if Options.options.gettext_location != 'None' and (not conf.env['HAVE_GETTEXT'] or not conf.env['HAVE_DGETTEXT']): + conf.fatal('library gettext not found at specified location') conf.CHECK_FUNCS_IN('pthread_create', 'pthread', checklibc=True, headers='pthread.h') diff --git a/lib/tevent/tevent_queue.c b/lib/tevent/tevent_queue.c index 4750675..e324680 100644 --- a/lib/tevent/tevent_queue.c +++ b/lib/tevent/tevent_queue.c @@ -140,6 +140,14 @@ static void tevent_queue_immediate_trigger(struct tevent_context *ev, return; } + if (!q->list) { + return; + } + + if (!q->list) { + return; + } + q->list->triggered = true; q->list->trigger(q->list->req, q->list->private_data); } diff --git a/libcli/smb/smb_constants.h b/libcli/smb/smb_constants.h index bcfd84e..639bd7c 100644 --- a/libcli/smb/smb_constants.h +++ b/libcli/smb/smb_constants.h @@ -208,6 +208,14 @@ enum smb_signing_setting { #define NEGOTIATE_SECURITY_SIGNATURES_ENABLED 0x04 #define NEGOTIATE_SECURITY_SIGNATURES_REQUIRED 0x08 +/* + * The negotiated buffer size for non LARGE_READX/WRITEX + * should be limited to uint16_t and has to be at least + * 500, which is the default for MinClientBufferSize on Windows. + */ +#define SMB_BUFFER_SIZE_MIN 500 +#define SMB_BUFFER_SIZE_MAX 65535 + /* Capabilities. see ftp.microsoft.com/developr/drg/cifs/cifs/cifs4.txt */ #define CAP_RAW_MODE 0x00000001 diff --git a/libcli/smbreadline/smbreadline.c b/libcli/smbreadline/smbreadline.c index cff25a7..80e10b0 100644 --- a/libcli/smbreadline/smbreadline.c +++ b/libcli/smbreadline/smbreadline.c @@ -141,7 +141,7 @@ char *smb_readline(const char *prompt, void (*callback)(void), #if HAVE_DECL_RL_EVENT_HOOK if (callback) - rl_event_hook = (Function *)callback; + rl_event_hook = (rl_hook_func_t *)callback; #endif ret = readline(prompt); if (ret && *ret) diff --git a/librpc/idl/lsa.idl b/librpc/idl/lsa.idl index d8f2649..80efbd5 100644 --- a/librpc/idl/lsa.idl +++ b/librpc/idl/lsa.idl @@ -1328,14 +1328,14 @@ import "misc.idl", "security.idl"; [default] uint32 flags; } lsa_ForestTrustCollisionFlags; - typedef struct { + typedef [public] struct { uint32 index; lsa_ForestTrustCollisionRecordType type; [switch_is(type)] lsa_ForestTrustCollisionFlags flags; lsa_String name; } lsa_ForestTrustCollisionRecord; - typedef struct { + typedef [public] struct { uint32 count; [size_is(count)] lsa_ForestTrustCollisionRecord **entries; } lsa_ForestTrustCollisionInfo; diff --git a/librpc/ndr/ndr_nbt.c b/librpc/ndr/ndr_nbt.c index f2a1ca3..842e972 100644 --- a/librpc/ndr/ndr_nbt.c +++ b/librpc/ndr/ndr_nbt.c @@ -27,7 +27,7 @@ #include "../libcli/netlogon/netlogon.h" /* don't allow an unlimited number of name components */ -#define MAX_COMPONENTS 10 +#define MAX_COMPONENTS 128 /** print a nbt string diff --git a/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm b/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm index c796b46..fed94cd 100644 --- a/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm +++ b/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm @@ -693,6 +693,20 @@ sub ParseFunction_Sync($$$$) } $self->pidl(""); + $self->pidl("/* Out parameters */"); + foreach my $e (@{$fn->{ELEMENTS}}) { + next unless grep(/out/, @{$e->{DIRECTION}}); + + $self->ParseCopyArgument($fn, $e, "r.out.", "_"); + } + $self->pidl(""); + + if (defined($fn->{RETURN_TYPE})) { + $self->pidl("/* Result */"); + $self->pidl("ZERO_STRUCT(r.out.result);"); + $self->pidl(""); + } + $self->pidl("status = dcerpc_$name\_r(h, mem_ctx, &r);"); $self->pidl("if (!NT_STATUS_IS_OK(status)) {"); $self->indent; diff --git a/pidl/lib/wscript_build b/pidl/lib/wscript_build index eb5f1e0..5023e07 100644 --- a/pidl/lib/wscript_build +++ b/pidl/lib/wscript_build @@ -1,4 +1,37 @@ #!/usr/bin/env python # install the pidl modules -bld.INSTALL_WILDCARD('${DATAROOTDIR}/perl5', '**/*.pm', flat=False) +bld.INSTALL_FILES(bld.env.PERL_VENDORLIB_DIR, + ''' + Parse/Pidl.pm + Parse/Pidl/Samba4.pm + Parse/Pidl/CUtil.pm + Parse/Pidl/Expr.pm + Parse/Pidl/Wireshark/Conformance.pm + Parse/Pidl/Wireshark/NDR.pm + Parse/Pidl/ODL.pm + Parse/Pidl/Dump.pm + Parse/Pidl/Util.pm + Parse/Pidl/Samba4/Header.pm + Parse/Pidl/Samba4/COM/Header.pm + Parse/Pidl/Samba4/COM/Proxy.pm + Parse/Pidl/Samba4/COM/Stub.pm + Parse/Pidl/Samba4/TDR.pm + Parse/Pidl/Samba4/NDR/Server.pm + Parse/Pidl/Samba4/NDR/Client.pm + Parse/Pidl/Samba4/NDR/Parser.pm + Parse/Pidl/Samba4/Python.pm + Parse/Pidl/Samba4/Template.pm + Parse/Pidl/IDL.pm + Parse/Pidl/Typelist.pm + Parse/Pidl/Samba3/ClientNDR.pm + Parse/Pidl/Samba3/ServerNDR.pm + Parse/Pidl/Compat.pm + Parse/Pidl/NDR.pm + ''', + flat=False) + +if not bld.CONFIG_SET('USING_SYSTEM_PARSE_YAPP_DRIVER'): + bld.INSTALL_FILES(bld.env.PERL_VENDORLIB_DIR, + 'Parse/Yapp/Driver.pm', + flat=False) diff --git a/pidl/wscript b/pidl/wscript index 7a25734..4965870 100644 --- a/pidl/wscript +++ b/pidl/wscript @@ -3,11 +3,38 @@ import os, sys, Logs from samba_utils import MODE_755 +# This function checks if a perl module is installed on the system. +def check_system_perl_module(conf, module, version=None): + bundle_name = module.replace('::', '_') + module_check = module + found = False + + # Create module string with version + if version: + module_check = module + ' ' + str(version) + + # Check if we have to bundle it. + if conf.LIB_MUST_BE_BUNDLED(bundle_name.lower()): + return False + + # Check for system perl module + if not conf.check_perl_module(module_check): + return False + + conf.define('USING_SYSTEM_%s' % bundle_name.upper(), 1) + + return True + def set_options(opt): opt.tool_options('perl') def configure(conf): conf.check_tool('perl') + conf.check_perl_ext_devel() + + # Check if perl(Parse::Yapp::Driver) is available. + check_system_perl_module(conf, "Parse::Yapp::Driver", 1.05) + # we need a recent version of MakeMaker to get the right man page names if conf.CHECK_PERL_MANPAGE(): conf.env.PERLMAN1EXT = conf.CHECK_PERL_MANPAGE(section='1') @@ -26,9 +53,6 @@ def build(bld): if not bld.CONFIG_SET('HAVE_PERL_MAKEMAKER'): return - pidl_src = ['pidl'] - pidl_src.extend(bld.path.ant_glob('lib/**/*.pm').split()) - pidl_manpages = { 'pidl': 'man1/pidl.${PERLMAN1EXT}', 'lib/Parse/Pidl/NDR.pm': 'man3/Parse::Pidl::NDR.${PERLMAN3EXT}', diff --git a/python/samba/tests/dns.py b/python/samba/tests/dns.py index 0ac9cf4..f2c5685 100644 --- a/python/samba/tests/dns.py +++ b/python/samba/tests/dns.py @@ -171,6 +171,36 @@ class TestSimpleQueries(DNSTest): self.assertEquals(response.answers[0].rdata, os.getenv('SERVER_IP')) + def test_one_mx_query(self): + "create a query packet causing an empty RCODE_OK answer" + p = self.make_name_packet(dns.DNS_OPCODE_QUERY) + questions = [] + + name = "%s.%s" % (os.getenv('SERVER'), self.get_dns_domain()) + q = self.make_name_question(name, dns.DNS_QTYPE_MX, dns.DNS_QCLASS_IN) + print "asking for ", q.name + questions.append(q) + -- Samba Shared Repository