The branch, v4-1-stable has been updated via 9da023a WHATSNEW: Add release notes for Samba 4.1.7. via dadd863 s3: messages: Implement cleanup of dead records. via bdd6da6 s3:libsmb: SMBC_getatr() if no method worked, try all methods again on next attempt via 4aa742a client: use cli_qpathinfo3 for allinfo via 0874ff2 s3:libsmb: cli_qpathinfo3 use cli_qpathinfo2 for smb2 via e98e835 client: remove a write only variable via 66115ff s3:libsmb: SMBC_getatr use pathinfo3 for second try via 0bea2d2 s3:libsmb: SMBC_getatr do not let ino undefined on success via d15c014 s3:libsmb: SMBC_getatr try pathinfo2 only once via 976030c s3:libsmb: add function cli_qpathinfo3() via f76511c s3:libsmb: add function cli_qpathinfo_standard() via 1f4b445 s3:libsmb: pass creation or birth time in cli_qpathinfo_basic() via b1c6431 rpcclient: abort shadow-copy set on commit failure via 400e4f0 rpcclient: append a trailing slash to FSRVP request UNCs via c9703c9 s3: smbd: Ensure we always go via getgroups_unix_user() when creating an NT token. via 34fcb4e lsa.idl: define lsa.ForestTrustCollisionInfo and ForestTrustCollisionRecord as public structs via 3687ab1 s3-rpc_server: Fix handling of fragmented rpc requests. via f2592b6 s3:rpc_server: minor refactoring of process_request_pdu() via f3f0f62 pidl-waf: Only install Yapp::Driver if it is not available. via c7a35ab pidl-waf: Check for system perl(Parse::Yapp::Driver). via 7d66a2c pidl-waf: Add a function to check for a system perl module. via fadd326 pidl-waf: Do not glob to install pidl modules. via 3957564 pidl-waf: Install pidl modules to the perl vendorlib directory. via 7876b4b pidl-waf: Remove unused variable pidl_src. via fe7d930 autobuild: Set perl vendorlib direcotry. via b1d86ee buildtools: Add perl vendorlib configure option. via 4ba0f7a buildtools: Rename perl vendorarch configure option. via b53c122 dns: Extend tests for records with another type via 5e62b6e bug #10471: Don't respond with NXDOMAIN to records that exist with another type via 8745204 s3: smbd: Fileserving share access checks. via 032ab0b smbreadline: switch to new-style readline typedef via d60f58d s4:lib/socket: simplify iface_list_wildcard() and its callers via 0644125 s4:lib/socket: use the same logic in iface_list_wildcard() as in smbd via 8d256c8 s3:smbd: s/BUFFER_SIZE/LARGE_WRITEX_BUFFER_SIZE via 3ada2b3 s3:smbd: fix the maxentries calculation depending on the max_send. via f5f5e5b s3:smbd: simplify maxentries calculation in reply_search() via 57f6afc s3:smbd: fix the read numtoread calculation depending on the max_send. via 6deb0f2 s3:smbd: fix the lockread numtoread calculation depending on the max_send. via 434e211 s3:smbd: pass the final numtoread reply_outbuf() for the lockread reply. via 49197c1 s3:smbd: fix lockread numtoread calculation to match reply_outbuf() arguments. via 9404bd6 s3:smbd: take less than SMB_BUFFER_SIZE_MIN ('500') as header overhead in ipc.c via 39af4a7 s3:smbd: reject a MaxBufferSize < SMB_BUFFER_SIZE_MIN (500) in a session setup request via 8724f6c s3:smbd: use sconn->smb1.sessions.max_send = SMB_BUFFER_SIZE_MAX via 047f881 s3:smbd: use SMB_BUFFER_SIZE_MIN/MAX to limit lp_max_xmit() via 08aa53b s3:include: let CLI_BUFFER_SIZE be an alias of SMB_BUFFER_SIZE_MAX via ba91a66 libcli/smb: add SMB_BUFFER_SIZE_MIN/MAX defines via 3a36bf7 s3:param: avoid using BUFFER_SIZE to limit the lp_min_receive_file_size() via 2092577 s3:client: only limit the buffer by the given length 'n' via 3528b52 s3:torture: use CLI_BUFFER_SIZE instead of BUFFER_SIZE via 8733ce1 s3:utils/smbfilter: use a local variable for the packet buffer via 3b6d207 s4: smbtorture: Add a proper change_notify going async followed by tdis test. via 4df79f0 s4: smbtorture: Update the torture_smb2_notify_ulogoff test to demonstrate the problem. via 91dea25 s3:smb2_tcon: cancel and wait for pending requests on tdis via e039346 s3:smb2_sesssetup: cancel and wait for pending requests on logoff via 3f4af7f s3:smb2_tcon: split smbd_smb2_tdis into an async *_send/recv pair. via 0ca9ce8 s3:smb2_sesssetup: split smbd_smb2_logoff into an async *_send/recv pair. via ad5d9c3 s3:smb2_lock: return RANGE_NOT_LOCKED instead of CANCELLED for logoff and tdis via 2ded846 s3:smb2_lock: fix whitespaces/tabs in smbd_smb2_lock_cancel() via 1a4e5cf s4:torture/smb2: accept NT_STATUS_RANGE_NOT_LOCKED after smb2_logoff/tdis via a9703c9 s3: lib: Back-port tevent_queue_wait_send/recv -> smbd_tevent_queue_wait_send/recv via c77fbd2 tevent: fix crash bug in tevent_queue_immediate_trigger() via 71eade3 Merge tag 'samba-4.1.6' into v4-1-test via 1cd273e VERSION: Bump version number up to 4.1.7. via 5d724b9 VERSION: Disable git snapshots for the 4.1.6 release. via 31d0028 WHATSNEW: Add release notes for Samba 4.1.6. via 0508f04 CVE-2013-6442: s3:smbcacls - ensure we don't lose an existing ACL when setting owner or group owner. via b6f2145 CVE-2013-4496:Revert remainder of ce895609b04380bfc41e4f8fddc84bd2f9324340 via 1313f96 CVE-2013-4496:samr: Remove ChangePasswordUser via cb9fdd3 CVE-2013-4496:s3:auth: fix memory leak in the ACCOUNT_LOCKED_OUT case. via 0f243b2 CVE-2013-4496:s3-samr: Block attempts to crack passwords via repeated password changes via 705595f s3-spoolssd: Don't register spoolssd if epmd is not running. via 51241bb s3-vfs: Fix stream_depot vfs module on btrfs. via 70455f0 s3:winbindd: avoid directly asking a trusted domain in wb_lookupsids*() via 64bb989 s3:winbindd: fix _wbint_LookupSids() on error via 0acd76f pidl:NDR/Client: fix dcerpc_function() with [out,ref] pointers via 3d5ae09 s3: smbd: Ensure brl_get_locks_internal() always returns a valid struct byte_range_lock even if there are no locks. via c62eec5 doc: add "spoolss: architecture" parameter usage via d94e563 s3-printing: Fix obvious memory leak in printer_list_get_printer(). via 440052f rpc_client: retry open on STATUS_PIPE_NOT_AVAILABLE via 729b124 s3:smbd: avoid invalid lock_order panic triggered by "CTDB_SRVID_RELEASE_IP" via cd17ba7 s3:lib/ctdbd_conn: let release_ip_handler return bool via 2942419 s3:smbd: maintain smbd_server_connection->status via 540cfe1 s3:smbd: simplify exit_server_common() via 7318632 s3: ldap client can return NT_STATUS_OK when an error occurs in a paged search. via ad1dac1 waf: improve iconv checks via f2774ce s3:libsmb: call smbXcli_tcon_set_fs_attributes() directly via 082c5ea s3:libsmb: remove unused cli_state->case_sensitive via 2acadbb s3:libsmb: remove unused cli_state->dfsroot via ee8089b s3:libsmb: add SMB2/3 support to cli_dfs_get_referral() via c35d8a3 s3/libsmb: make use of smbXcli_tcon_is_dfs_share() via e55b6fb s3/libsmb: Use smbXcli_conn_dfs_supported instead of test on CAP_DFS via e5b0378 s3:libsmb: don't pass down FLAG_CASELESS_PATHNAMES and FLAGS2_DFS_PATHNAMES anymore via 75acb84 s3:libsmb: call smbXcli_tcon_{get,set}_fs_attributes() from cli_set_case_sensitive() via e5b7647 libcli/smb: add SMB2_HDR_FLAG_DFS for SMB2 Create operations on dfs shares via 66de913 libcli/smb: add FLAG_CASELESS_PATHNAMES based on FILE_CASE_SENSITIVE_SEARCH to smb1 requests via c711e5b libcli/smb: move Filesystem Attributes defines to smb_constants.h via 748b205 libcli/smb: add FLAGS2_DFS_PATHNAMES for SMB1 operations against dfs shares via 18d7628 libcli/smb: add smbXcli_tcon_{set,get}_fs_attributes() via 27bad7d libcli/smb: add smbXcli_tcon_is_dfs_share() via 2bd871c libcli/smb: Introduce smbXcli_conn_dfs_supported via 26f03f1 s3:libsmb: make use of smb1cli_tcon_set_values() via 3b0e363 s3/libsmb: Use smbXcli_conn_use_unicode instead of smb1 specific test via 195a64c heimdal_build: only enable libintl functions if everything was found via bbbeed6 waf:lib/replace fix iconv checks on HP/UX via 8a0b5a4 waf:lib/replace gettext configure checks via 57df0d3 waf:lib/replace fix gettext detection via 7a64fb0 waf:lib/replace change detection of gettext via 05f917c waf:lib/replace fix up libintl related checks via 540da46 waf:lib/replace correct detection of libiconv via ec1dacc s3: printing: Fix problem with server taking too long to respond to a MSG_PRINTER_DRVUPGRADE message. via ce98b19 librpc/nbt: increase MAX_COMPONENTS limit for nbt_names. via 09e750b dfs: always call create_conn_struct with root privileges via 629e95e VERSION: Bump version number up to 4.1.6... from 48966b6 VERSION: Disable git snapshots for the 4.1.6 release.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-1-stable - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: VERSION | 2 +- WHATSNEW.txt | 117 ++++++++++++- buildtools/wafadmin/Tools/perl.py | 23 ++- buildtools/wafsamba/wscript | 3 +- .../smbdotconf/printing/spoolssarchitecture.xml | 15 ++ lib/replace/wscript | 30 +++- lib/tevent/tevent_queue.c | 4 + libcli/smb/smb2cli_create.c | 10 +- libcli/smb/smbXcli_base.c | 62 +++++++ libcli/smb/smbXcli_base.h | 6 + libcli/smb/smb_constants.h | 27 +++ 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/auth/token_util.c | 101 +++++++++++ source3/build/charset.py | 6 + source3/client/client.c | 9 +- source3/include/client.h | 5 +- source3/include/ctdbd_conn.h | 2 +- source3/include/libsmb_internal.h | 1 + source3/include/messages.h | 6 + source3/include/smb.h | 23 +--- 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/libsmb/async_smb.c | 22 --- source3/libsmb/cliconnect.c | 25 ++- source3/libsmb/clidfs.c | 95 ++++++++--- source3/libsmb/clientgen.c | 26 +++- source3/libsmb/clirap.c | 110 ++++++++++++ source3/libsmb/clirap.h | 11 ++ source3/libsmb/clitrans.c | 21 --- source3/libsmb/libsmb_file.c | 27 +++- source3/libsmb/libsmb_server.c | 15 +- source3/libsmb/libsmb_stat.c | 11 +- source3/locking/brlock.c | 34 +++-- source3/modules/vfs_streams_depot.c | 10 +- source3/param/loadparm.c | 2 +- source3/printing/nt_printing.c | 29 +++- 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/rpcclient/cmd_fss.c | 57 +++++- source3/smbd/globals.h | 1 + source3/smbd/ipc.c | 10 +- source3/smbd/msdfs.c | 31 ++++- source3/smbd/process.c | 83 ++++++++- 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/libcli/raw/smb.h | 14 -- 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 +- 85 files changed, 1824 insertions(+), 450 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 4c9eba6..3e45362 100644 --- a/VERSION +++ b/VERSION @@ -25,7 +25,7 @@ ######################################################## SAMBA_VERSION_MAJOR=4 SAMBA_VERSION_MINOR=1 -SAMBA_VERSION_RELEASE=6 +SAMBA_VERSION_RELEASE=7 ######################################################## # If a official release has a serious bug # diff --git a/WHATSNEW.txt b/WHATSNEW.txt index defe3cb..131cab6 100644 --- a/WHATSNEW.txt +++ b/WHATSNEW.txt @@ -1,4 +1,117 @@ ============================= + Release Notes for Samba 4.1.7 + April 17, 2014 + ============================= + + +This is the latest stable release of Samba 4.1. + + +Changes since 4.1.6: +-------------------- + +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 Gregor Beck <gb...@sernet.de> + * BUG 10230: Make (lib)smbclient work with NetApp. + * 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. + * BUG 10521: rpcclient FSRVP request UNCs should include a trailing + backslash. + + +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 10200: Make 'smbclient' support DFS shares with SMB2/3. + * 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. + + +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 10467: s3-vfs: Fix stream_depot vfs module on btrfs. + * 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.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.6 March 11, 2014 ============================= @@ -61,8 +174,8 @@ database (https://bugzilla.samba.org/). ====================================================================== -Release notes for older releases follow: ----------------------------------------- +---------------------------------------------------------------------- + ============================= Release Notes for Samba 4.1.5 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 b6fb10b..8451689 100644 --- a/lib/replace/wscript +++ b/lib/replace/wscript @@ -363,10 +363,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') @@ -385,18 +394,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..eeb922f 100644 --- a/lib/tevent/tevent_queue.c +++ b/lib/tevent/tevent_queue.c @@ -140,6 +140,10 @@ static void tevent_queue_immediate_trigger(struct tevent_context *ev, return; } + if (!q->list) { + return; + } + q->list->triggered = true; q->list->trigger(q->list->req, q->list->private_data); } diff --git a/libcli/smb/smb2cli_create.c b/libcli/smb/smb2cli_create.c index 3f8d672..9cb94b1 100644 --- a/libcli/smb/smb2cli_create.c +++ b/libcli/smb/smb2cli_create.c @@ -63,6 +63,8 @@ struct tevent_req *smb2cli_create_send( uint8_t *dyn; size_t dyn_len; size_t max_dyn_len; + uint32_t additional_flags = 0; + uint32_t clear_flags = 0; req = tevent_req_create(mem_ctx, &state, struct smb2cli_create_state); @@ -130,6 +132,12 @@ struct tevent_req *smb2cli_create_send( data_blob_free(&blob); } + if (smbXcli_conn_dfs_supported(conn) && + smbXcli_tcon_is_dfs_share(tcon)) + { + additional_flags |= SMB2_HDR_FLAG_DFS; + } + /* * We use max_dyn_len = 0 * as we don't explicitly ask for any output length. @@ -140,7 +148,7 @@ struct tevent_req *smb2cli_create_send( max_dyn_len = 0; subreq = smb2cli_req_send(state, ev, conn, SMB2_OP_CREATE, - 0, 0, /* flags */ + additional_flags, clear_flags, timeout_msec, tcon, session, diff --git a/libcli/smb/smbXcli_base.c b/libcli/smb/smbXcli_base.c index 14d4cc3..25fbabd 100644 --- a/libcli/smb/smbXcli_base.c +++ b/libcli/smb/smbXcli_base.c @@ -167,6 +167,9 @@ struct smbXcli_session { }; struct smbXcli_tcon { + bool is_smb1; + uint32_t fs_attributes; + struct { uint16_t tcon_id; uint16_t optional_support; @@ -1269,6 +1272,19 @@ struct tevent_req *smb1cli_req_create(TALLOC_CTX *mem_ctx, if (tcon) { tid = tcon->smb1.tcon_id; + + if (tcon->fs_attributes & FILE_CASE_SENSITIVE_SEARCH) { + clear_flags |= FLAG_CASELESS_PATHNAMES; + } else { + /* Default setting, case insensitive. */ + additional_flags |= FLAG_CASELESS_PATHNAMES; + } + + if (smbXcli_conn_dfs_supported(conn) && + smbXcli_tcon_is_dfs_share(tcon)) + { + additional_flags2 |= FLAGS2_DFS_PATHNAMES; + } } state->smb1.recv_cmd = 0xFF; @@ -2460,6 +2476,15 @@ bool smbXcli_conn_has_async_calls(struct smbXcli_conn *conn) || (talloc_array_length(conn->pending) != 0)); } +bool smbXcli_conn_dfs_supported(struct smbXcli_conn *conn) +{ + if (conn->protocol >= PROTOCOL_SMB2_02) { + return (smb2cli_conn_server_capabilities(conn) & SMB2_CAP_DFS); + } + + return (smb1cli_conn_capabilities(conn) & CAP_DFS); +} + bool smb2cli_conn_req_possible(struct smbXcli_conn *conn, uint32_t *max_dyn_len) { uint16_t credits = 1; @@ -5014,6 +5039,38 @@ struct smbXcli_tcon *smbXcli_tcon_create(TALLOC_CTX *mem_ctx) return tcon; } +void smbXcli_tcon_set_fs_attributes(struct smbXcli_tcon *tcon, + uint32_t fs_attributes) +{ + tcon->fs_attributes = fs_attributes; +} + +uint32_t smbXcli_tcon_get_fs_attributes(struct smbXcli_tcon *tcon) +{ + return tcon->fs_attributes; +} + +bool smbXcli_tcon_is_dfs_share(struct smbXcli_tcon *tcon) +{ + if (tcon == NULL) { + return false; + } + + if (tcon->is_smb1) { + if (tcon->smb1.optional_support & SMB_SHARE_IN_DFS) { + return true; + } + + return false; + } + + if (tcon->smb2.capabilities & SMB2_SHARE_CAP_DFS) { + return true; + } + + return false; +} + uint16_t smb1cli_tcon_current_id(struct smbXcli_tcon *tcon) { return tcon->smb1.tcon_id; @@ -5021,6 +5078,7 @@ uint16_t smb1cli_tcon_current_id(struct smbXcli_tcon *tcon) void smb1cli_tcon_set_id(struct smbXcli_tcon *tcon, uint16_t tcon_id) { + tcon->is_smb1 = true; tcon->smb1.tcon_id = tcon_id; } @@ -5032,6 +5090,8 @@ bool smb1cli_tcon_set_values(struct smbXcli_tcon *tcon, const char *service, const char *fs_type) { + tcon->is_smb1 = true; + tcon->fs_attributes = 0; tcon->smb1.tcon_id = tcon_id; tcon->smb1.optional_support = optional_support; tcon->smb1.maximal_access = maximal_access; @@ -5070,6 +5130,8 @@ void smb2cli_tcon_set_values(struct smbXcli_tcon *tcon, uint32_t capabilities, uint32_t maximal_access) { + tcon->is_smb1 = false; + tcon->fs_attributes = 0; tcon->smb2.tcon_id = tcon_id; tcon->smb2.type = type; tcon->smb2.flags = flags; diff --git a/libcli/smb/smbXcli_base.h b/libcli/smb/smbXcli_base.h index 3d93427..5fe4018 100644 --- a/libcli/smb/smbXcli_base.h +++ b/libcli/smb/smbXcli_base.h @@ -43,6 +43,8 @@ void smbXcli_conn_disconnect(struct smbXcli_conn *conn, NTSTATUS status); bool smbXcli_conn_has_async_calls(struct smbXcli_conn *conn); +bool smbXcli_conn_dfs_supported(struct smbXcli_conn *conn); + enum protocol_types smbXcli_conn_protocol(struct smbXcli_conn *conn); bool smbXcli_conn_use_unicode(struct smbXcli_conn *conn); @@ -297,6 +299,10 @@ NTSTATUS smb2cli_session_set_channel_key(struct smbXcli_session *session, NTSTATUS smb2cli_session_encryption_on(struct smbXcli_session *session); struct smbXcli_tcon *smbXcli_tcon_create(TALLOC_CTX *mem_ctx); +void smbXcli_tcon_set_fs_attributes(struct smbXcli_tcon *tcon, + uint32_t fs_attributes); +uint32_t smbXcli_tcon_get_fs_attributes(struct smbXcli_tcon *tcon); +bool smbXcli_tcon_is_dfs_share(struct smbXcli_tcon *tcon); uint16_t smb1cli_tcon_current_id(struct smbXcli_tcon *tcon); void smb1cli_tcon_set_id(struct smbXcli_tcon *tcon, uint16_t tcon_id); bool smb1cli_tcon_set_values(struct smbXcli_tcon *tcon, diff --git a/libcli/smb/smb_constants.h b/libcli/smb/smb_constants.h index 6dd7b28..175ffaf 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 @@ -363,6 +371,25 @@ enum csc_policy { #define OPLOCK_BREAK_TO_NONE 0 #define OPLOCK_BREAK_TO_LEVEL_II 1 +/* Filesystem Attributes. */ +#define FILE_CASE_SENSITIVE_SEARCH 0x00000001 +#define FILE_CASE_PRESERVED_NAMES 0x00000002 +#define FILE_UNICODE_ON_DISK 0x00000004 +/* According to cifs9f, this is 4, not 8 */ +/* Acconding to testing, this actually sets the security attribute! */ +#define FILE_PERSISTENT_ACLS 0x00000008 +#define FILE_FILE_COMPRESSION 0x00000010 +#define FILE_VOLUME_QUOTAS 0x00000020 +#define FILE_SUPPORTS_SPARSE_FILES 0x00000040 +#define FILE_SUPPORTS_REPARSE_POINTS 0x00000080 +#define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100 +#define FS_LFN_APIS 0x00004000 -- Samba Shared Repository