[SCM] Samba Shared Repository - branch v4-12-stable updated

Karolin Seeger kseeger at samba.org
Thu Jul 2 11:15:22 UTC 2020


The branch, v4-12-stable has been updated
       via  217bc17f1d2 VERSION: Disable GIT_SNAPSHOT for the 4.12.5 release.
       via  c61cb94a463 WHATSNEW: Add release notes for Samba 4.12.5.
       via  8d47600f110 VERSION: Bump version up to 4.12.5.
       via  05b8919c7c2 Merge tag 'samba-4.12.4' into v4-12-test
       via  50badbae62f s3: msdfs: Fix missing struct stat return on msdfs links by doing an LSTAT call.
       via  54d6efeb917 s3: torture: Add test for getting attibutes on an MSDFS link.
       via  68c0b008bdd s3: torture: Add a MSDFS-ATTRIBUTE test.
       via  50ff83cb3e3 s3: libsmb: Info level SMB_FIND_EA_SIZE encodes attibutes as a uint16, not a uint8.
       via  7db0eb75680 s3: libsmb: Info level SMB_FIND_INFO_STANDARD encodes attibutes as a uint16, not a uint8.
       via  bb210d6d29b s3: libsmb: Info level SMB_FIND_FILE_BOTH_DIRECTORY_INFO encodes attibutes as a uint32, not a uint8.
       via  10e8d8b4b13 s3: libsmb: Info level SMB2_FIND_ID_BOTH_DIRECTORY_INFO encodes attibutes as a uint32, not a uint8.
       via  1f8a77fe3aa s3: smbd: Allow a SHUTDOWN_CLOSE on a file with outstanding aio if there are no client connections alive.
       via  8666dc1eec6 s3: smbd: Add smbXsrv_client_valid_connections().
       via  19c6e21cfd6 s3: selftest: Add samba3.blackbox.aio-outstanding test.
       via  3db89a6c880 ldb_ldap: fix off-by-one increment in lldb_add_msg_attr
       via  1049c5776f8 lib/ldb: add unit test for ldb_ldap internal code
       via  0ac77960440 Fix usage of ldap_get_values_len for msDS-AdditionalDnsHostName
       via  0e668997c83 Properly handle msDS-AdditionalDnsHostName returned from Windows DC
       via  60e73282191 selftest: add tests for binary msDS-AdditionalDnsHostName
       via  63c70acd4f4 Fix a typo in recent net man page changes
       via  f50cb3a0fbf libcli ldap tests: remove use of zero length array
       via  7b1bac7d084 Add net-ads-join dnshostname=fqdn option
       via  71efed33f47 Add msDS-AdditionalDnsHostName entries to the keytab
       via  279e72fe334 Add a test for msDS-AdditionalDnsHostName entries in keytab
       via  b3630d58e48 Refactor ads_keytab_add_entry() to make it iterable
       via  533a4be557b Fix accidental overwrite of dnsHostName by the last netbios alias
       via  e25e574ba04 Add a test to check dNSHostName with netbios aliases
       via  5015bbbd701 s3:libads: prefer ENCTYPE_AES256_CTS_HMAC_SHA1_96 in ads_keytab_add_entry()
       via  2b15eee1bc0 docs-xml: update list of posible VFS operations for vfs_full_audit
       via  c2051cdfda6 s3: libsmbclient: Finish unifing bad iconv behavior across CORE NT1 SMB2 protocols.
       via  ea64f5fb2d8 s3: libsmb: In SMB2 return NT_STATUS_INVALID_NETWORK_RESPONSE if name conversion ended up with a NULL filename.
       via  cc105695a60 s3: libsmb: In SMB1 old protocol - return NT_STATUS_INVALID_NETWORK_RESPONSE if name conversion ended up with a NULL filename.
       via  290ae67b24e s3: selftest: Add test_smbclient_iconv.sh to check client behavior on bad name conversion.
       via  701cbabc92e s3: selftest: Add share definition [bad_iconv] in fileserver.
       via  f02893f5360 winbindd: Fix a use-after-free when winbind clients exit
       via  572eb426f3f s3: lib: Paranoia around use of snprintf copying into a fixed-size buffer from a getenv() pointer.
       via  eae0ae3cae3 s3:gencache: Allow to open gencache as read-only
       via  b91925075ef lib:util: Add test for path_expand_tilde()
       via  f0654fa47e0 lib:util: Add path_expand_tilde()
       via  76c8a9deaa7 s4/rpc_server/dnsserver: Allow parsing of dnsProperty to fail gracefully
       via  0acfdab2a6a selftest: Add test for handling of "short" dnsProperty records
       via  50653906976 librpc/idl: Add dnsp_DnsProperty_short
       via  11abc955736 VERSION: Bump version up to 4.12.4...
      from  6ecd05dfbc2 VERSION: Disable GIT_SNAPSHOT for the 4.12.4 release.

https://git.samba.org/?p=samba.git;a=shortlog;h=v4-12-stable


- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 VERSION                                            |   2 +-
 WHATSNEW.txt                                       |  67 +++++-
 docs-xml/manpages/net.8.xml                        |   7 +-
 docs-xml/manpages/vfs_full_audit.8.xml             |  70 +++++--
 lib/ldb/ldb_ldap/ldb_ldap.c                        |   2 -
 lib/ldb/tests/lldb_ldap.c                          | 105 ++++++++++
 lib/ldb/wscript                                    |  14 ++
 lib/util/tests/test_util_paths.c                   | 127 ++++++++++++
 lib/util/util_paths.c                              |  76 +++++++
 lib/util/util_paths.h                              |   9 +
 lib/util/wscript_build                             |   6 +
 libcli/ldap/tests/ldap_message_test.c              |   2 +-
 librpc/idl/dnsp.idl                                |  16 ++
 python/samba/tests/blackbox/ndrdump.py             |  21 ++
 python/samba/tests/dns.py                          |  51 +++++
 selftest/knownfail.d/dns                           |   7 +
 selftest/target/Samba3.pm                          |  20 ++
 selftest/tests.py                                  |   2 +
 source3/lib/gencache.c                             |  63 +++++-
 source3/libads/ads_proto.h                         |   5 +
 source3/libads/kerberos_keytab.c                   | 224 ++++++++++++---------
 source3/libads/ldap.c                              |  81 ++++++++
 source3/libnet/libnet_join.c                       |  12 +-
 source3/librpc/idl/libnet_join.idl                 |   1 +
 source3/libsmb/cli_smb2_fnum.c                     |   9 +-
 source3/libsmb/clilist.c                           |  17 +-
 ...orce_close_share.sh => test_aio_outstanding.sh} |  64 +++---
 source3/script/tests/test_smbclient_iconv.sh       |  53 +++++
 source3/selftest/tests.py                          |  41 ++++
 source3/smbd/close.c                               |  26 +++
 source3/smbd/globals.h                             |   1 +
 source3/smbd/msdfs.c                               |   7 +
 source3/smbd/smb2_server.c                         |  14 ++
 source3/torture/torture.c                          |  79 ++++++++
 source3/utils/net_ads.c                            |   9 +-
 source3/winbindd/winbindd_dual.c                   |  28 ++-
 source4/dns_server/dnsserver_common.c              |   9 +-
 source4/rpc_server/dnsserver/dnsdb.c               |  72 ++++++-
 testprogs/blackbox/test_net_ads.sh                 |  60 ++++++
 39 files changed, 1306 insertions(+), 173 deletions(-)
 create mode 100644 lib/ldb/tests/lldb_ldap.c
 create mode 100644 lib/util/tests/test_util_paths.c
 copy source3/script/tests/{test_force_close_share.sh => test_aio_outstanding.sh} (50%)
 create mode 100755 source3/script/tests/test_smbclient_iconv.sh


Changeset truncated at 500 lines:

diff --git a/VERSION b/VERSION
index e964a32a686..44492c06950 100644
--- a/VERSION
+++ b/VERSION
@@ -25,7 +25,7 @@
 ########################################################
 SAMBA_VERSION_MAJOR=4
 SAMBA_VERSION_MINOR=12
-SAMBA_VERSION_RELEASE=4
+SAMBA_VERSION_RELEASE=5
 
 ########################################################
 # If a official release has a serious bug              #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index d6b26d8dce5..a5b554fe11f 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,3 +1,66 @@
+                   ==============================
+                   Release Notes for Samba 4.12.5
+                            July 02, 2020
+		   ==============================
+
+
+This is the latest stable release of the Samba 4.12 release series.
+
+
+Changes since 4.12.4
+--------------------
+
+o  Jeremy Allison <jra at samba.org>
+   * BUG 14301: Fix smbd panic on force-close share during async io.
+   * BUG 14374: Fix segfault when using SMBC_opendir_ctx() routine for share
+     folder that contains incorrect symbols in any file name.
+   * BUG 14391: Fix DFS links.
+
+o  Andrew Bartlett <abartlet at samba.org>
+   * BUG 14310: Can't use DNS functionality after a Windows DC has been in
+     domain.
+
+o  Alexander Bokovoy <ab at samba.org>
+   * BUG 14413: ldapi search to FreeIPA crashes.
+
+o  Isaac Boukris <iboukris at gmail.com>
+   * BUG 14396: Add net-ads-join dnshostname=fqdn option.
+   * BUG 14406: Fix adding msDS-AdditionalDnsHostName to keytab with Windows DC.
+
+o  Björn Jacke <bj at sernet.de>
+   * BUG 14386: docs-xml: Update list of posible VFS operations for
+     vfs_full_audit.
+
+o  Volker Lendecke <vl at samba.org>
+   * BUG 14382: winbindd: Fix a use-after-free when winbind clients exit.
+
+o  Andreas Schneider <asn at samba.org>
+   * BUG 14370: Client tools are not able to read gencache anymore.
+
+
+#######################################
+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 and newer 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.12.4
                             July 02, 2020
@@ -79,8 +142,8 @@ database (https://bugzilla.samba.org/).
 ======================================================================
 
 
-Release notes for older releases follow:
-----------------------------------------
+----------------------------------------------------------------------
+
 
                    ==============================
                    Release Notes for Samba 4.12.3
diff --git a/docs-xml/manpages/net.8.xml b/docs-xml/manpages/net.8.xml
index 37dd30b7864..951ddcd7c3a 100644
--- a/docs-xml/manpages/net.8.xml
+++ b/docs-xml/manpages/net.8.xml
@@ -481,7 +481,7 @@ The remote server must be specified with the -S option.
 
 <refsect2>
 <title>[RPC|ADS] JOIN [TYPE] [--no-dns-updates] [-U username[%password]]
-[createupn=UPN] [createcomputer=OU] [machinepass=PASS]
+[dnshostname=FQDN] [createupn=UPN] [createcomputer=OU] [machinepass=PASS]
 [osName=string osVer=string] [options]</title>
 
 <para>
@@ -496,6 +496,11 @@ be created.</para>
 joining the domain.
 </para>
 
+<para>
+[FQDN] (ADS only) set the dnsHostName attribute during the join.
+The default format is netbiosname.dnsdomain.
+</para>
+
 <para>
 [UPN] (ADS only) set the principalname attribute during the join.  The default
 format is host/netbiosname at REALM.
diff --git a/docs-xml/manpages/vfs_full_audit.8.xml b/docs-xml/manpages/vfs_full_audit.8.xml
index 7b17e2e1ad4..e6c05c3fdc3 100644
--- a/docs-xml/manpages/vfs_full_audit.8.xml
+++ b/docs-xml/manpages/vfs_full_audit.8.xml
@@ -38,60 +38,98 @@
 	complete set of Samba VFS operations:</para>
 
 	<simplelist>
+        <member>aio_force</member>
+        <member>audit_file</member>
+        <member>brl_lock_windows</member>
+        <member>brl_unlock_windows</member>
         <member>chdir</member>
         <member>chflags</member>
         <member>chmod</member>
-        <member>chown</member>
         <member>close</member>
         <member>closedir</member>
         <member>connect</member>
-	<member>copy_chunk_send</member>
-	<member>copy_chunk_recv</member>
+        <member>connectpath</member>
+        <member>create_dfs_pathat</member>
+        <member>create_file</member>
         <member>disconnect</member>
         <member>disk_free</member>
+        <member>durable_cookie</member>
+        <member>durable_disconnect</member>
+        <member>durable_reconnect</member>
+        <member>fallocate</member>
         <member>fchmod</member>
         <member>fchown</member>
+        <member>fdopendir</member>
+        <member>fget_dos_attributes</member>
         <member>fget_nt_acl</member>
         <member>fgetxattr</member>
+        <member>file_id_create</member>
         <member>flistxattr</member>
         <member>fremovexattr</member>
+        <member>fs_capabilities</member>
+        <member>fsctl</member>
+        <member>fset_dos_attributes</member>
         <member>fset_nt_acl</member>
         <member>fsetxattr</member>
+        <member>fs_file_id</member>
         <member>fstat</member>
         <member>fsync</member>
+        <member>fsync_recv</member>
+        <member>fsync_send</member>
         <member>ftruncate</member>
+        <member>get_alloc_size</member>
         <member>get_compression</member>
+        <member>get_dfs_referrals</member>
+        <member>get_dos_attributes</member>
+        <member>get_dos_attributes_recv</member>
+        <member>get_dos_attributes_send</member>
+        <member>getlock</member>
         <member>get_nt_acl</member>
         <member>get_quota</member>
+        <member>get_real_filename</member>
         <member>get_shadow_copy_data</member>
-        <member>getlock</member>
         <member>getwd</member>
         <member>getxattr</member>
+        <member>getxattrat_recv</member>
+        <member>getxattrat_send</member>
+        <member>is_offline</member>
         <member>kernel_flock</member>
-        <member>link</member>
+        <member>lchown</member>
+        <member>linkat</member>
         <member>linux_setlease</member>
         <member>listxattr</member>
         <member>lock</member>
         <member>lseek</member>
         <member>lstat</member>
-        <member>mkdir</member>
-        <member>mknod</member>
+        <member>mkdirat</member>
+        <member>mknodat</member>
+        <member>ntimes</member>
+        <member>offload_read_recv</member>
+        <member>offload_read_send</member>
+        <member>offload_write_recv</member>
+        <member>offload_write_send</member>
         <member>open</member>
         <member>opendir</member>
         <member>pread</member>
+        <member>pread_recv</member>
+        <member>pread_send</member>
         <member>pwrite</member>
+        <member>pwrite_recv</member>
+        <member>pwrite_send</member>
         <member>read</member>
         <member>readdir</member>
-        <member>readlink</member>
+        <member>readdir_attr</member>
+        <member>readlinkat</member>
         <member>realpath</member>
+        <member>recvfile</member>
         <member>removexattr</member>
-        <member>rename</member>
+        <member>renameat</member>
         <member>rewinddir</member>
-        <member>rmdir</member>
         <member>seekdir</member>
         <member>sendfile</member>
         <member>set_compression</member>
-        <member>set_nt_acl</member>
+        <member>set_dos_attributes</member>
+        <member>set_offline</member>
         <member>set_quota</member>
         <member>setxattr</member>
         <member>snap_check_path</member>
@@ -99,15 +137,19 @@
         <member>snap_delete</member>
         <member>stat</member>
         <member>statvfs</member>
-        <member>symlink</member>
+        <member>streaminfo</member>
+        <member>strict_lock_check</member>
+        <member>symlinkat</member>
+        <member>sys_acl_blob_get_fd</member>
+        <member>sys_acl_blob_get_file</member>
         <member>sys_acl_delete_def_file</member>
         <member>sys_acl_get_fd</member>
         <member>sys_acl_get_file</member>
         <member>sys_acl_set_fd</member>
         <member>sys_acl_set_file</member>
         <member>telldir</member>
-        <member>unlink</member>
-        <member>utime</member>
+        <member>translate_name</member>
+        <member>unlinkat</member>
         <member>write</member>
 	</simplelist>
 
diff --git a/lib/ldb/ldb_ldap/ldb_ldap.c b/lib/ldb/ldb_ldap/ldb_ldap.c
index d7222997732..0531f8a62ae 100644
--- a/lib/ldb/ldb_ldap/ldb_ldap.c
+++ b/lib/ldb/ldb_ldap/ldb_ldap.c
@@ -176,8 +176,6 @@ static int lldb_add_msg_attr(struct ldb_context *ldb,
 		el->num_values++;
 	}
 
-	msg->num_elements++;
-
 	return 0;
 }
 
diff --git a/lib/ldb/tests/lldb_ldap.c b/lib/ldb/tests/lldb_ldap.c
new file mode 100644
index 00000000000..eea9f22f6b9
--- /dev/null
+++ b/lib/ldb/tests/lldb_ldap.c
@@ -0,0 +1,105 @@
+/*
+ * from cmocka.c:
+ * These headers or their equivalents should be included prior to
+ * including
+ * this header file.
+ *
+ * #include <stdarg.h>
+ * #include <stddef.h>
+ * #include <setjmp.h>
+ *
+ * This allows test applications to use custom definitions of C standard
+ * library functions and types.
+ */
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <setjmp.h>
+#include <cmocka.h>
+
+#include <errno.h>
+#include <unistd.h>
+#include <talloc.h>
+
+#include <ldb.h>
+#include <ldb_private.h>
+#include <string.h>
+#include <ctype.h>
+
+int ldb_ldap_init(const char *version);
+
+#include "ldb_ldap/ldb_ldap.c"
+
+struct test_ctx {
+	struct tevent_context *ev;
+	struct ldb_context *ldb;
+	struct ldb_message *msg;
+};
+
+static int lldb_msg_setup(void **state)
+{
+	struct test_ctx *test_ctx;
+
+	test_ctx = talloc_zero(NULL, struct test_ctx);
+	assert_non_null(test_ctx);
+
+	test_ctx->ev = tevent_context_init(test_ctx);
+	assert_non_null(test_ctx->ev);
+
+	test_ctx->ldb = ldb_init(test_ctx, test_ctx->ev);
+	assert_non_null(test_ctx->ldb);
+
+	test_ctx->msg = ldb_msg_new(test_ctx);
+	assert_non_null(test_ctx->msg);
+
+	*state = test_ctx;
+	return 0;
+}
+
+static int lldb_msg_teardown(void **state)
+{
+	struct test_ctx *test_ctx = talloc_get_type_abort(*state,
+							  struct test_ctx);
+
+	talloc_free(test_ctx);
+	return 0;
+}
+
+static void test_lldb_add_msg_attr(void **state)
+{
+	struct test_ctx *test_ctx = talloc_get_type_abort(*state,
+							  struct test_ctx);
+	struct ldb_message *msg = test_ctx->msg;
+	int ret;
+	unsigned int num_elements = 0;
+	struct berval **v = NULL;
+
+	v = talloc_zero_array(test_ctx, struct berval *, 2);
+	assert_non_null(v);
+
+	v[0] = talloc_zero(v, struct berval);
+	assert_non_null(v[0]);
+
+	v[0]->bv_val = talloc_strdup(msg, "dc=example,dc=test");
+	assert_non_null(v[0]->bv_val);
+
+	v[0]->bv_len = strlen(v[0]->bv_val);
+
+	num_elements = msg->num_elements;
+
+	ret = lldb_add_msg_attr(test_ctx->ldb, msg, "defaultNamingContext", v);
+	assert_int_equal(ret, LDB_SUCCESS);
+	assert_int_equal(msg->num_elements, num_elements + 1);
+}
+
+
+int main(int argc, const char **argv)
+{
+	const struct CMUnitTest tests[] = {
+		cmocka_unit_test_setup_teardown(test_lldb_add_msg_attr,
+						lldb_msg_setup,
+						lldb_msg_teardown),
+	};
+
+	return cmocka_run_group_tests(tests, NULL, NULL);
+}
diff --git a/lib/ldb/wscript b/lib/ldb/wscript
index 9eb3ddad0c0..edc3343e827 100644
--- a/lib/ldb/wscript
+++ b/lib/ldb/wscript
@@ -527,6 +527,15 @@ def build(bld):
                          deps='cmocka ldb ldb_tdb_err_map',
                          install=False)
 
+        # If both libldap and liblber are available, test ldb_ldap
+        # code for a regression of bz#14413 -- even if we don't build
+        # it ourselves and simply using the system version
+        if bld.env.LIB_LDAP and bld.env.LIB_LBER:
+            bld.SAMBA_BINARY('lldb_ldap_test',
+                             source='tests/lldb_ldap.c',
+                             deps='cmocka talloc lber ldap ldb',
+                             install=False)
+
         if bld.CONFIG_SET('HAVE_LMDB'):
             bld.SAMBA_BINARY('ldb_mdb_mod_op_test',
                              source='tests/ldb_mod_op_test.c',
@@ -628,6 +637,11 @@ def test(ctx):
                  # 'ldb_key_value_sub_txn_tdb_test'
                  'ldb_parse_test']
 
+    # if LIB_LDAP and LIB_LBER defined, then we can test ldb_ldap backend
+    # behavior regression for bz#14413
+    if env.LIB_LDAP and env.LIB_LBER:
+        test_exes += ["lldb_ldap_test"]
+
     if env.HAVE_LMDB:
         test_exes += ['ldb_mdb_mod_op_test',
                      'ldb_lmdb_test',
diff --git a/lib/util/tests/test_util_paths.c b/lib/util/tests/test_util_paths.c
new file mode 100644
index 00000000000..b89abf0aea1
--- /dev/null
+++ b/lib/util/tests/test_util_paths.c
@@ -0,0 +1,127 @@
+/*
+ * Unix SMB/CIFS implementation.
+ *
+ * Copyright (C) 2020      Andreas Schneider <asn at samba.org>
+ *
+ * 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
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <setjmp.h>
+#include <cmocka.h>
+
+#include <talloc.h>
+
+#include "lib/replace/replace.h"
+#include "lib/util/util_paths.c"
+
+static int setup(void **state)
+{
+	TALLOC_CTX *mem_ctx = talloc_new(NULL);
+
+	assert_non_null(mem_ctx);
+	*state = mem_ctx;
+
+	return 0;
+}
+
+static int teardown(void **state)
+{
+	TALLOC_CTX *mem_ctx = *state;
+	TALLOC_FREE(mem_ctx);
+
+    return 0;
+}
+
+static void test_get_user_home_dir(void **state)
+{
+	TALLOC_CTX *mem_ctx = *state;
+	struct passwd *pwd = getpwuid(getuid());
+	char *user;
+
+	user = get_user_home_dir(mem_ctx);
+	assert_non_null(user);
+	assert_string_equal(user, pwd->pw_dir);
+
+	TALLOC_FREE(user);
+}
+
+static void test_path_expand_tilde(void **state)
+{
+	TALLOC_CTX *mem_ctx = *state;
+	char h[256] = {0};
+	char *d = NULL;
+	const char *user = NULL;
+	char *home = NULL;
+
+	user = getenv("USER");
+	if (user == NULL){
+		user = getenv("LOGNAME");
+	}
+
+	/* In certain CIs there no such variables */
+	if (user == NULL) {
+		struct passwd *pw = getpwuid(getuid());
+		if (pw){
+			user = pw->pw_name;
+		}
+	}


-- 
Samba Shared Repository



More information about the samba-cvs mailing list