The branch, v4-15-test has been updated via 962b7b0f92d s3-winexe: Fix winexe core dump (use-after-free) via f926586544e vfs_fruit: remove a fsp check from ad_fset() via 3a34628266f lib/dbwrap: reset deleted record to tdb_null via 8bb5f0911a8 CI: add a test for bug 14882 via a16283466ba s3/libsmb: check for global parametric option "libsmb:client_guid" via a549dc219cb s3: docs-xml: Clarify the "delete veto files" paramter. via 5023dbc04bf s3: smbd: Fix logic in can_delete_directory_fsp() to cope with dangling symlinks. via 4793c4d5307 s3: smbd: Fix logic in rmdir_internals() to cope with dangling symlinks. via e00fe095e8c s3: smbd: Fix rmdir_internals() to do an early return if lp_delete_veto_files() is not set. via 0dba0917fd9 s3: VFS: xattr_tdb. Allow unlinkat to cope with dangling symlinks. via 7a4173809a8 s3: VFS: streams_depot. Allow unlinkat to cope with dangling symlinks. via 359517877d6 s3: smbd: Add two tests showing the ability to delete a directory containing a dangling symlink over SMB2 depends on "delete veto files" setting. via 9f76641627f s3: smbd: Fix recursive directory delete of a directory containing veto file and msdfs links. via dab3fa1d8c2 s3: smbd: Add two tests showing recursive directory delete of a directory containing veto file and msdfs links over SMB2. via 71792ae9886 bootstrap: Debian 11 has liburing-dev via 6ea70022f20 bootstrap: Add Debian 11 via 651d79f109b lib:cmdline: Fix -k option which doesn't expect anything via d700a676cad testprogs: Use new cmdline option for kerberos via c99eecaf2fb lib: handle NTTIME_THAW in nt_time_to_full_timespec() via 204f1488e2c torture: add a test for NTTIME_FREEZE and NTTIME_THAW via 6e42b2a1670 lib: add a test for null_nttime(NTTIME_THAW) via bfb893f5efc lib: update null_nttime() of -1: -1 is NTTIME_FREEZE via 0b7c1089d12 lib: use NTTIME_FREEZE in a null_nttime() test via 60adfb19d9d lib: fix null_nttime() tests via 0acbd644fcd lib: add NTTIME_THAW from bdc33fa61f8 VERSION: Bump version up to Samba 4.15.3...
https://git.samba.org/?p=samba.git;a=shortlog;h=v4-15-test - Log ----------------------------------------------------------------- commit 962b7b0f92d37867296b8e30c5ae659e9544a16f Author: Günther Deschner <g...@samba.org> Date: Thu Nov 4 22:22:44 2021 +0100 s3-winexe: Fix winexe core dump (use-after-free) BUG: https://bugzilla.samba.org/show_bug.cgi?id=14893 Guenther Signed-off-by: Guenther Deschner <g...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> Autobuild-User(master): Günther Deschner <g...@samba.org> Autobuild-Date(master): Fri Nov 5 11:43:57 UTC 2021 on sn-devel-184 (cherry picked from commit e9495d2ed28a26899dc3dd77bdfe56e284980218) Autobuild-User(v4-15-test): Jule Anger <jan...@samba.org> Autobuild-Date(v4-15-test): Wed Nov 10 17:05:18 UTC 2021 on sn-devel-184 commit f926586544e8c92b58ccba133992f75f8c33c5a1 Author: Ralph Boehme <s...@samba.org> Date: Tue Nov 2 05:34:59 2021 +0100 vfs_fruit: remove a fsp check from ad_fset() This comes from times before we had pathref fsps. Back then if you wanted to check if fsp->fh->fd contained a valid value != -1, you'd also first check that the passed in fsp and fsp->fh are non NULL. With pathref fsps we don't need this anymore. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14890 RN: Crash in vfs_fruit asking for fsp_get_io_fd() for an XATTR call Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 50c550e1ad422a1220d0862a3f637e5fb774f288) commit 3a34628266f8df1513092ec8bdf0c391b6afc7c4 Author: Ralph Boehme <s...@samba.org> Date: Fri Oct 29 22:03:42 2021 +0200 lib/dbwrap: reset deleted record to tdb_null This allows the calling the following sequence of dbwrap functions: dbwrap_delete_record(rec); data = dbwrap_record_get_value(rec); without triggering the assert rec->value_valid inside dbwrap_record_get_value(). Note that dbwrap_record_storev() continues to invalidate the record, so this change somewhat blurs our semantics. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14882 Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Thu Nov 4 19:49:47 UTC 2021 on sn-devel-184 (cherry picked from commit 8082e2eb7e33c0993135791c03823886f5aa8496) commit 8bb5f0911a8504bb8e4c89282c43d651b690fa78 Author: Ralph Boehme <s...@samba.org> Date: Fri Oct 29 06:27:38 2021 +0200 CI: add a test for bug 14882 BUG: https://bugzilla.samba.org/show_bug.cgi?id=14882 Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 1fa006f1f71cce03d92e76efda3ff055aae4eb91) commit a16283466ba0985441e7bc084e8477f47e8d2e60 Author: Stefan Metzmacher <me...@samba.org> Date: Mon Oct 5 08:52:32 2020 +0200 s3/libsmb: check for global parametric option "libsmb:client_guid" Useful in test. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14882 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> (cherry picked from commit c1470b120bb75ea73ba90dc83ab7efcbb733b1a7) commit a549dc219cba5bd61969e4919ae4142f52c133ea Author: Jeremy Allison <j...@samba.org> Date: Mon Oct 25 12:42:02 2021 -0700 s3: docs-xml: Clarify the "delete veto files" paramter. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14879 Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> Autobuild-User(master): Ralph Böhme <s...@samba.org> Autobuild-Date(master): Fri Oct 29 14:57:14 UTC 2021 on sn-devel-184 (cherry picked from commit 0b818c6b77e972626d0b071bebcf4ce55619fb84) commit 5023dbc04bfad7cc39e8c4de96f40c82e7a0288e Author: Jeremy Allison <j...@samba.org> Date: Mon Oct 25 12:36:57 2021 -0700 s3: smbd: Fix logic in can_delete_directory_fsp() to cope with dangling symlinks. Remove knownfail. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14879 Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> (cherry picked from commit e9ef970eee5eca8ab3720279c54098e91d2dfda9) commit 4793c4d5307472f0eb72f70f7dbf7324744e3f91 Author: Jeremy Allison <j...@samba.org> Date: Mon Oct 25 12:32:29 2021 -0700 s3: smbd: Fix logic in rmdir_internals() to cope with dangling symlinks. Still need to add the same logic in can_delete_directory_fsp() before we can delete the knownfail. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14879 Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> (cherry picked from commit 26fecad2e66e91a3913d88ee2e0889f266e91d89) commit e00fe095e8cf7ab54bc82870b913762d2fdddbad Author: Jeremy Allison <j...@samba.org> Date: Mon Oct 25 12:21:37 2021 -0700 s3: smbd: Fix rmdir_internals() to do an early return if lp_delete_veto_files() is not set. Fix the comments to match what the code actually does. The exit at the end of the scan directory loop if we find a client visible filename is a change in behavior, but the previous behavior (not exist on visible filename, but delete it) was a bug and in non-tested code. Now it's testd. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14879 Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> (cherry picked from commit a37d16e7c55f85e3f2c9c8614755ea6307092d5f) commit 0dba0917fd97e975d1daab5b0828644d026c2bc5 Author: Jeremy Allison <j...@samba.org> Date: Mon Oct 25 12:02:43 2021 -0700 s3: VFS: xattr_tdb. Allow unlinkat to cope with dangling symlinks. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14879 Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> (cherry picked from commit f254be19d6501a4f573843af97963e350a9ee2ed) commit 7a4173809a87350bc3580240232978042ec2ceca Author: Jeremy Allison <j...@samba.org> Date: Mon Oct 25 12:01:58 2021 -0700 s3: VFS: streams_depot. Allow unlinkat to cope with dangling symlinks. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14879 Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> (cherry picked from commit 295d7d026babe3cd5123d0f53adcb16868907f05) commit 359517877d6462ff4398401748f921c8b79357a6 Author: Jeremy Allison <j...@samba.org> Date: Thu Oct 21 16:37:27 2021 -0700 s3: smbd: Add two tests showing the ability to delete a directory containing a dangling symlink over SMB2 depends on "delete veto files" setting. Add knownfail. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14879 Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> (cherry picked from commit 942123b95923f35a32df4196a072a3ed3468396a) commit 9f76641627ffb0b7fe07e2a071b958a96ec87226 Author: Jeremy Allison <j...@samba.org> Date: Thu Oct 21 16:18:24 2021 -0700 s3: smbd: Fix recursive directory delete of a directory containing veto file and msdfs links. Remove knownfail. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14878 Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> (cherry picked from commit 73de1194c3c429ab93d722a852aa4f54213b112a) commit dab3fa1d8c27e696afa15e071331f646e06d9706 Author: Jeremy Allison <j...@samba.org> Date: Thu Oct 21 15:06:20 2021 -0700 s3: smbd: Add two tests showing recursive directory delete of a directory containing veto file and msdfs links over SMB2. Add knownfail. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14878 Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> (cherry picked from commit ad0082d79a681b981154747dcde5713e1933b88f) commit 71792ae9886c5605e4207337b12f032e33ee9bc5 Author: Martin Schwenke <mar...@meltin.net> Date: Tue Oct 19 11:00:22 2021 +1100 bootstrap: Debian 11 has liburing-dev BUG: https://bugzilla.samba.org/show_bug.cgi?id=14872 RN: Add Debian 11 CI bootstrap support Signed-off-by: Martin Schwenke <mar...@meltin.net> (backported from commit d8b6fbbd78690ae19d97cd88c5769c3edd358aaa) commit 6ea70022f20b6c03b58cacf628bba1cebedbcf9f Author: Martin Schwenke <mar...@meltin.net> Date: Thu Oct 14 14:50:41 2021 +1100 bootstrap: Add Debian 11 BUG: https://bugzilla.samba.org/show_bug.cgi?id=14872 Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Andrew Bartlett <abart...@samba.org> Autobuild-User(master): Andrew Bartlett <abart...@samba.org> Autobuild-Date(master): Mon Oct 18 17:19:17 UTC 2021 on sn-devel-184 (backported from commit c901adaa0d4526deff550806e49976d686122674) commit 651d79f109bb7774962f0e0db0b8206e2e0a93e5 Author: Andreas Schneider <a...@cryptomilk.org> Date: Wed Oct 27 13:45:15 2021 +0200 lib:cmdline: Fix -k option which doesn't expect anything BUG: https://bugzilla.samba.org/show_bug.cgi?id=14846 RN: Fix -k legacy option for client tools like smbclient, rpcclient, net, etc. Signed-off-by: Andreas Schneider <a...@cryptomilk.org> Reviewed-by: Ralph Boehme <s...@samba.org> (cherry picked from commit 16d43ccfddf0e67a0ae87e3f13b3114c858d64ac) commit d700a676cad09e23d55aac294b47cd5d227b8664 Author: Andreas Schneider <a...@cryptomilk.org> Date: Wed Oct 27 15:30:20 2021 +0200 testprogs: Use new cmdline option for kerberos BUG: https://bugzilla.samba.org/show_bug.cgi?id=14846 Signed-off-by: Andreas Schneider <a...@cryptomilk.org> Reviewed-by: Ralph Boehme <s...@samba.org> (cherry picked from commit 5c6640470aa845780fbf17961e67b0d9302c2fbc) commit c99eecaf2fb0390fd071c5636cf3bc64ae287b8d Author: Ralph Boehme <s...@samba.org> Date: Tue Oct 5 15:10:33 2021 +0200 lib: handle NTTIME_THAW in nt_time_to_full_timespec() Preliminary handling of NTTIME_THAW to avoid NTTIME_THAW is passed as some mangled value down to the VFS set timestamps function. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14127 RN: Avoid storing NTTIME_THAW (-2) as value on disk Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 6ed71ad7e6aa98a34cfde95d7d62c46694d58469) commit 204f1488e2c2314195d4988e625629058fe26978 Author: Ralph Boehme <s...@samba.org> Date: Thu Oct 28 12:55:39 2021 +0200 torture: add a test for NTTIME_FREEZE and NTTIME_THAW BUG: https://bugzilla.samba.org/show_bug.cgi?id=14127 Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 0659069f8292996be475d407b53d161aa3f35554) commit 6e42b2a1670c83e1e6dcb695841be1699db21278 Author: Ralph Boehme <s...@samba.org> Date: Thu Oct 28 10:18:54 2021 +0200 lib: add a test for null_nttime(NTTIME_THAW) BUG: https://bugzilla.samba.org/show_bug.cgi?id=14127 Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 194faa76161a12ae1eae2b471d6f159d97ef75a8) commit bfb893f5efcf9db1803e8cbc2c87f3b2606f6399 Author: Ralph Boehme <s...@samba.org> Date: Thu Oct 28 10:18:17 2021 +0200 lib: update null_nttime() of -1: -1 is NTTIME_FREEZE NTTIME_FREEZE is not a nil sentinel value, instead it implies special, yet unimplemented semantics. Callers must deal with those values specifically and null_nttime() must not lie about their nature. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14127 Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 5503bde93bddf3634b183e665773399c110251d4) commit 0b7c1089d1200fa2de6f2565548e8cc795d6685d Author: Ralph Boehme <s...@samba.org> Date: Thu Oct 28 10:17:01 2021 +0200 lib: use NTTIME_FREEZE in a null_nttime() test No change in behaviour. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14127 Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit e2740e4868f2a49877a86a8666d26226b5657317) commit 60adfb19d9d13df0a4127214f0a80d219d85d5f1 Author: Ralph Boehme <s...@samba.org> Date: Wed Oct 27 17:02:48 2021 +0200 lib: fix null_nttime() tests The test was checking -1 twice: torture_assert(tctx, null_nttime(-1), "-1"); torture_assert(tctx, null_nttime(-1), "-1"); The first line was likely supposed to test the value "0". BUG: https://bugzilla.samba.org/show_bug.cgi?id=14127 Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit d84779302cc54a7b84c05ccc458e04b27fd142f4) commit 0acbd644fcd2ea48ff674f8ad031069c50706a5e Author: Ralph Boehme <s...@samba.org> Date: Tue Oct 5 15:10:10 2021 +0200 lib: add NTTIME_THAW BUG: https://bugzilla.samba.org/show_bug.cgi?id=14127 Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit f73aff502cadabb7fe6b94a697f0a2256d1d4aca) ----------------------------------------------------------------------- Summary of changes: .gitlab-ci-main.yml | 8 +- bootstrap/.gitlab-ci.yml | 3 + bootstrap/config.py | 7 + bootstrap/generated-dists/Vagrantfile | 7 + .../{centos7 => debian11}/Dockerfile | 2 +- .../{debian10 => debian11}/bootstrap.sh | 1 + .../{centos7 => debian11}/locale.sh | 0 .../{debian10 => debian11}/packages.yml | 1 + bootstrap/sha1sum.txt | 2 +- docs-xml/smbdotconf/filename/deletevetofiles.xml | 9 +- examples/winexe/winexe.c | 16 +- lib/cmdline/cmdline.c | 2 +- lib/dbwrap/dbwrap.c | 9 +- lib/util/tests/time.c | 5 +- lib/util/time.c | 8 +- lib/util/time.h | 1 + selftest/target/Samba3.pm | 20 ++ source3/lib/adouble.c | 7 - source3/libsmb/clientgen.c | 9 +- source3/modules/vfs_streams_depot.c | 10 + source3/modules/vfs_xattr_tdb.c | 10 + .../tests/test_delete_veto_files_only_rmdir.sh | 183 +++++++++++++++++ .../script/tests/test_smbXsrv_client_dead_rec.sh | 76 ++++++++ source3/script/tests/test_veto_rmdir.sh | 217 +++++++++++++++++++++ source3/selftest/tests.py | 13 ++ source3/smbd/close.c | 94 +++++++-- source3/smbd/dir.c | 55 +++++- source4/torture/smb2/timestamps.c | 208 ++++++++++++++++++++ testprogs/blackbox/test_kpasswd_heimdal.sh | 6 +- testprogs/blackbox/test_kpasswd_mit.sh | 2 +- 30 files changed, 930 insertions(+), 61 deletions(-) copy bootstrap/generated-dists/{centos7 => debian11}/Dockerfile (92%) copy bootstrap/generated-dists/{debian10 => debian11}/bootstrap.sh (98%) copy bootstrap/generated-dists/{centos7 => debian11}/locale.sh (100%) copy bootstrap/generated-dists/{debian10 => debian11}/packages.yml (97%) create mode 100755 source3/script/tests/test_delete_veto_files_only_rmdir.sh create mode 100755 source3/script/tests/test_smbXsrv_client_dead_rec.sh create mode 100755 source3/script/tests/test_veto_rmdir.sh Changeset truncated at 500 lines: diff --git a/.gitlab-ci-main.yml b/.gitlab-ci-main.yml index 0cbcc17c94c..125b3901832 100644 --- a/.gitlab-ci-main.yml +++ b/.gitlab-ci-main.yml @@ -42,7 +42,7 @@ variables: # Set this to the contents of bootstrap/sha1sum.txt # which is generated by bootstrap/template.py --render # - SAMBA_CI_CONTAINER_TAG: 733f8fa83c921e5a7ec8f5470b2ca7d52548f4b0 + SAMBA_CI_CONTAINER_TAG: dd2b9a1848eed2d200e1a525695e40f06c23d888 # # We use the ubuntu1804 image as default as # it matches what we have on sn-devel-184. @@ -58,6 +58,7 @@ variables: SAMBA_CI_CONTAINER_IMAGE_ubuntu2004: ubuntu2004 SAMBA_CI_CONTAINER_IMAGE_debian9: debian9 SAMBA_CI_CONTAINER_IMAGE_debian10: debian10 + SAMBA_CI_CONTAINER_IMAGE_debian11: debian11 SAMBA_CI_CONTAINER_IMAGE_opensuse151: opensuse151 SAMBA_CI_CONTAINER_IMAGE_opensuse152: opensuse152 SAMBA_CI_CONTAINER_IMAGE_fedora33: fedora33 @@ -569,6 +570,11 @@ debian10-samba-o3: variables: SAMBA_CI_JOB_IMAGE: ${SAMBA_CI_CONTAINER_IMAGE_debian10} +debian11-samba-o3: + extends: .samba-o3-template + variables: + SAMBA_CI_JOB_IMAGE: ${SAMBA_CI_CONTAINER_IMAGE_debian11} + opensuse151-samba-o3: extends: .samba-o3-template variables: diff --git a/bootstrap/.gitlab-ci.yml b/bootstrap/.gitlab-ci.yml index 5e5856b1e90..33534f5f1dd 100644 --- a/bootstrap/.gitlab-ci.yml +++ b/bootstrap/.gitlab-ci.yml @@ -103,6 +103,9 @@ ubuntu2004: debian10: extends: .build_image_template +debian11: + extends: .build_image_template + fedora33: extends: .build_image_template diff --git a/bootstrap/config.py b/bootstrap/config.py index ba4304bb9f8..fd75a771252 100644 --- a/bootstrap/config.py +++ b/bootstrap/config.py @@ -399,6 +399,13 @@ DEB_DISTS = { 'liburing-dev': '', # not available } }, + 'debian11': { + 'docker_image': 'debian:11', + 'vagrant_box': 'debian/bullseye64', + 'replace': { + 'language-pack-en': '', # included in locales + } + }, 'ubuntu1604': { 'docker_image': 'ubuntu:16.04', 'vagrant_box': 'ubuntu/xenial64', diff --git a/bootstrap/generated-dists/Vagrantfile b/bootstrap/generated-dists/Vagrantfile index 42da0161e40..780320ec7c8 100644 --- a/bootstrap/generated-dists/Vagrantfile +++ b/bootstrap/generated-dists/Vagrantfile @@ -31,6 +31,13 @@ Vagrant.configure("2") do |config| v.vm.provision :shell, path: "debian10/locale.sh" end + config.vm.define "debian11" do |v| + v.vm.box = "debian/bullseye64" + v.vm.hostname = "debian11" + v.vm.provision :shell, path: "debian11/bootstrap.sh" + v.vm.provision :shell, path: "debian11/locale.sh" + end + config.vm.define "fedora33" do |v| v.vm.box = "fedora/33-cloud-base" v.vm.hostname = "fedora33" diff --git a/bootstrap/generated-dists/centos7/Dockerfile b/bootstrap/generated-dists/debian11/Dockerfile similarity index 92% copy from bootstrap/generated-dists/centos7/Dockerfile copy to bootstrap/generated-dists/debian11/Dockerfile index 2f171ad1c62..6a16324f201 100644 --- a/bootstrap/generated-dists/centos7/Dockerfile +++ b/bootstrap/generated-dists/debian11/Dockerfile @@ -3,7 +3,7 @@ # See also bootstrap/config.py # -FROM centos:7 +FROM debian:11 # pass in with --build-arg while build ARG SHA1SUM diff --git a/bootstrap/generated-dists/debian10/bootstrap.sh b/bootstrap/generated-dists/debian11/bootstrap.sh similarity index 98% copy from bootstrap/generated-dists/debian10/bootstrap.sh copy to bootstrap/generated-dists/debian11/bootstrap.sh index 84f5f6855b7..07d6209c072 100755 --- a/bootstrap/generated-dists/debian10/bootstrap.sh +++ b/bootstrap/generated-dists/debian11/bootstrap.sh @@ -70,6 +70,7 @@ apt-get -y install \ libtasn1-dev \ libtracker-sparql-2.0-dev \ libunwind-dev \ + liburing-dev \ lmdb-utils \ locales \ lsb-release \ diff --git a/bootstrap/generated-dists/centos7/locale.sh b/bootstrap/generated-dists/debian11/locale.sh similarity index 100% copy from bootstrap/generated-dists/centos7/locale.sh copy to bootstrap/generated-dists/debian11/locale.sh diff --git a/bootstrap/generated-dists/debian10/packages.yml b/bootstrap/generated-dists/debian11/packages.yml similarity index 97% copy from bootstrap/generated-dists/debian10/packages.yml copy to bootstrap/generated-dists/debian11/packages.yml index 32f37eeb013..6d3c2385339 100644 --- a/bootstrap/generated-dists/debian10/packages.yml +++ b/bootstrap/generated-dists/debian11/packages.yml @@ -59,6 +59,7 @@ packages: - libtasn1-dev - libtracker-sparql-2.0-dev - libunwind-dev + - liburing-dev - lmdb-utils - locales - lsb-release diff --git a/bootstrap/sha1sum.txt b/bootstrap/sha1sum.txt index e433f698b68..11369ced5f7 100644 --- a/bootstrap/sha1sum.txt +++ b/bootstrap/sha1sum.txt @@ -1 +1 @@ -733f8fa83c921e5a7ec8f5470b2ca7d52548f4b0 +dd2b9a1848eed2d200e1a525695e40f06c23d888 diff --git a/docs-xml/smbdotconf/filename/deletevetofiles.xml b/docs-xml/smbdotconf/filename/deletevetofiles.xml index 581dc05396d..570d4ac60a0 100644 --- a/docs-xml/smbdotconf/filename/deletevetofiles.xml +++ b/docs-xml/smbdotconf/filename/deletevetofiles.xml @@ -4,9 +4,12 @@ xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> <description> <para>This option is used when Samba is attempting to - delete a directory that contains one or more vetoed directories - (see the <smbconfoption name="veto files"/> - option). If this option is set to <constant>no</constant> (the default) then if a vetoed + delete a directory that contains one or more vetoed files + or directories or non-visible files or directories (such + as dangling symlinks that point nowhere). + (see the <smbconfoption name="veto files"/>, <smbconfoption name="hide special files"/>, + <smbconfoption name="hide unreadable"/>, <smbconfoption name="hide unwriteable files"/> + options). If this option is set to <constant>no</constant> (the default) then if a vetoed directory contains any non-vetoed files or directories then the directory delete will fail. This is usually what you want.</para> diff --git a/examples/winexe/winexe.c b/examples/winexe/winexe.c index 3e0813a4091..59fb9dbdebb 100644 --- a/examples/winexe/winexe.c +++ b/examples/winexe/winexe.c @@ -220,8 +220,6 @@ static void parse_args(int argc, const char *argv[], *port_str = '\0'; } - poptFreeContext(pc); - if (options->runas == NULL && options->runas_file != NULL) { struct cli_credentials *runas_cred; const char *user; @@ -253,9 +251,19 @@ static void parse_args(int argc, const char *argv[], options->credentials = samba_cmdline_get_creds(); - options->hostname = argv_new[0] + 2; + options->hostname = talloc_strdup(mem_ctx, argv_new[0] + 2); + if (options->hostname == NULL) { + DBG_ERR("Out of memory\n"); + exit(1); + } options->port = port; - options->cmd = argv_new[1]; + options->cmd = talloc_strdup(mem_ctx, argv_new[1]); + if (options->cmd == NULL) { + DBG_ERR("Out of memory\n"); + exit(1); + } + + poptFreeContext(pc); options->flags = flag_interactive; if (flag_reinstall) { diff --git a/lib/cmdline/cmdline.c b/lib/cmdline/cmdline.c index 40292a6a332..63e81bc0a7f 100644 --- a/lib/cmdline/cmdline.c +++ b/lib/cmdline/cmdline.c @@ -1251,7 +1251,7 @@ static struct poptOption popt_legacy_s3[] = { { .longName = "kerberos", .shortName = 'k', - .argInfo = POPT_ARG_STRING, + .argInfo = POPT_ARG_NONE, .val = 'k', .descrip = "DEPRECATED: Migrate to --use-kerberos", }, diff --git a/lib/dbwrap/dbwrap.c b/lib/dbwrap/dbwrap.c index cc685a2fa69..7555efaa3ab 100644 --- a/lib/dbwrap/dbwrap.c +++ b/lib/dbwrap/dbwrap.c @@ -110,16 +110,13 @@ NTSTATUS dbwrap_record_delete(struct db_record *rec) { NTSTATUS status; - /* - * Invalidate before rec->delete_rec() is called, give - * rec->delete_rec() the chance to re-validate rec->value. - */ - rec->value_valid = false; - status = rec->delete_rec(rec); if (!NT_STATUS_IS_OK(status)) { return status; } + + rec->value = tdb_null; + return NT_STATUS_OK; } diff --git a/lib/util/tests/time.c b/lib/util/tests/time.c index 039f7f4ccf8..ec27f567a71 100644 --- a/lib/util/tests/time.c +++ b/lib/util/tests/time.c @@ -34,8 +34,9 @@ static bool test_null_time(struct torture_context *tctx) static bool test_null_nttime(struct torture_context *tctx) { - torture_assert(tctx, null_nttime(-1), "-1"); - torture_assert(tctx, null_nttime(-1), "-1"); + torture_assert(tctx, null_nttime(0), "0"); + torture_assert(tctx, !null_nttime(NTTIME_FREEZE), "-1"); + torture_assert(tctx, !null_nttime(NTTIME_THAW), "-2"); torture_assert(tctx, !null_nttime(42), "42"); return true; } diff --git a/lib/util/time.c b/lib/util/time.c index 53bf194fe0b..cec91c14791 100644 --- a/lib/util/time.c +++ b/lib/util/time.c @@ -178,7 +178,7 @@ check if it's a null NTTIME **/ _PUBLIC_ bool null_nttime(NTTIME t) { - return t == 0 || t == (NTTIME)-1; + return t == 0; } /******************************************************************* @@ -1128,10 +1128,10 @@ struct timespec nt_time_to_full_timespec(NTTIME nt) if (nt == NTTIME_OMIT) { return make_omit_timespec(); } - if (nt == NTTIME_FREEZE) { + if (nt == NTTIME_FREEZE || nt == NTTIME_THAW) { /* - * This should be returned as SAMBA_UTIME_FREEZE in the - * future. + * This should be returned as SAMBA_UTIME_FREEZE or + * SAMBA_UTIME_THAW in the future. */ return make_omit_timespec(); } diff --git a/lib/util/time.h b/lib/util/time.h index 6726f39c7cc..72347b39b99 100644 --- a/lib/util/time.h +++ b/lib/util/time.h @@ -63,6 +63,7 @@ * implement this yet. */ #define NTTIME_FREEZE UINT64_MAX +#define NTTIME_THAW (UINT64_MAX - 1) #define SAMBA_UTIME_NOW UTIME_NOW #define SAMBA_UTIME_OMIT UTIME_OMIT diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm index 6fd8ab77650..c0ed379bf3f 100755 --- a/selftest/target/Samba3.pm +++ b/selftest/target/Samba3.pm @@ -1675,6 +1675,9 @@ sub setup_fileserver my $bad_iconv_sharedir="$share_dir/bad_iconv"; push(@dirs, $bad_iconv_sharedir); + my $veto_sharedir="$share_dir/veto"; + push(@dirs,$veto_sharedir); + my $ip4 = Samba::get_ipv4_addr("FILESERVER"); my $fileserver_options = " kernel change notify = yes @@ -1783,6 +1786,23 @@ sub setup_fileserver comment = smb username is [%U] vfs objects = +[veto_files_nodelete] + path = $veto_sharedir + read only = no + msdfs root = yes + veto files = /veto_name*/ + delete veto files = no + +[veto_files_delete] + path = $veto_sharedir + msdfs root = yes + veto files = /veto_name*/ + delete veto files = yes + +[delete_veto_files_only] + path = $veto_sharedir + delete veto files = yes + [homes] comment = Home directories browseable = No diff --git a/source3/lib/adouble.c b/source3/lib/adouble.c index fd435b6592d..f809a445081 100644 --- a/source3/lib/adouble.c +++ b/source3/lib/adouble.c @@ -2591,13 +2591,6 @@ int ad_fset(struct vfs_handle_struct *handle, DBG_DEBUG("Path [%s]\n", fsp_str_dbg(fsp)); - if ((fsp == NULL) - || (fsp->fh == NULL) - || (fsp_get_io_fd(fsp) == -1)) - { - smb_panic("bad fsp"); - } - ok = ad_pack(handle, ad, fsp); if (!ok) { return -1; diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c index b9b2bacaa76..6819e532349 100644 --- a/source3/libsmb/clientgen.c +++ b/source3/libsmb/clientgen.c @@ -79,7 +79,14 @@ struct cli_state *cli_state_create(TALLOC_CTX *mem_ctx, if (!GUID_all_zero(&cli_state_client_guid)) { client_guid = cli_state_client_guid; } else { - client_guid = GUID_random(); + const char *str = NULL; + + str = lp_parm_const_string(-1, "libsmb", "client_guid", NULL); + if (str != NULL) { + GUID_from_string(str, &client_guid); + } else { + client_guid = GUID_random(); + } } /* Check the effective uid - make sure we are not setuid */ diff --git a/source3/modules/vfs_streams_depot.c b/source3/modules/vfs_streams_depot.c index 973edeeda24..ae73ba965a5 100644 --- a/source3/modules/vfs_streams_depot.c +++ b/source3/modules/vfs_streams_depot.c @@ -823,6 +823,16 @@ static int streams_depot_unlink_internal(vfs_handle_struct *handle, ret = SMB_VFS_NEXT_LSTAT(handle, full_fname); } else { ret = SMB_VFS_NEXT_STAT(handle, full_fname); + if (ret == -1 && (errno == ENOENT || errno == ELOOP)) { + if (VALID_STAT(smb_fname->st) && + S_ISLNK(smb_fname->st.st_ex_mode)) { + /* + * Original name was a link - Could be + * trying to remove a dangling symlink. + */ + ret = SMB_VFS_NEXT_LSTAT(handle, full_fname); + } + } } if (ret == -1) { TALLOC_FREE(full_fname); diff --git a/source3/modules/vfs_xattr_tdb.c b/source3/modules/vfs_xattr_tdb.c index daa99b2cc3e..42c570b54b3 100644 --- a/source3/modules/vfs_xattr_tdb.c +++ b/source3/modules/vfs_xattr_tdb.c @@ -520,6 +520,16 @@ static int xattr_tdb_unlinkat(vfs_handle_struct *handle, ret = SMB_VFS_NEXT_LSTAT(handle, full_fname); } else { ret = SMB_VFS_NEXT_STAT(handle, full_fname); + if (ret == -1 && (errno == ENOENT || errno == ELOOP)) { + if (VALID_STAT(smb_fname->st) && + S_ISLNK(smb_fname->st.st_ex_mode)) { + /* + * Original name was a link - Could be + * trying to remove a dangling symlink. + */ + ret = SMB_VFS_NEXT_LSTAT(handle, full_fname); + } + } } if (ret == -1) { goto out; diff --git a/source3/script/tests/test_delete_veto_files_only_rmdir.sh b/source3/script/tests/test_delete_veto_files_only_rmdir.sh new file mode 100755 index 00000000000..d2c3b2198f7 --- /dev/null +++ b/source3/script/tests/test_delete_veto_files_only_rmdir.sh @@ -0,0 +1,183 @@ +#!/bin/sh +# +# Check smbclient can (or cannot) delete a directory containing dangling symlinks. +# BUG: https://bugzilla.samba.org/show_bug.cgi?id=14879 +# + +if [ $# -lt 6 ]; then +cat <<EOF +Usage: $0 SERVER SERVER_IP USERNAME PASSWORD SHAREPATH SMBCLIENT +EOF +exit 1; +fi + +SERVER=${1} +SERVER_IP=${2} +USERNAME=${3} +PASSWORD=${4} +SHAREPATH=${5} +SMBCLIENT=${6} +shift 6 +SMBCLIENT="$VALGRIND ${SMBCLIENT}" +ADDARGS="$@" + +incdir=$(dirname "$0")/../../../testprogs/blackbox +. $incdir/subunit.sh + +failed=0 + +rmdir_path="$SHAREPATH/dir" + +# +# Using the share "[delete_veto_files_only]" we CAN delete +# a directory containing only a dangling symlink. +# +test_dangle_symlink_delete_veto_rmdir() +{ + local dangle_symlink_path="$rmdir_path/bad_link" + local tmpfile=$PREFIX/smbclient.in.$$ + + # Create rmdir directory. + mkdir -p "$rmdir_path" + # Create dangling symlink underneath. + ln -s "nowhere-foo" "$dangle_symlink_path" + + cat > "$tmpfile" <<EOF +cd dir +ls +quit +EOF + + local cmd='CLI_FORCE_INTERACTIVE=yes $SMBCLIENT //$SERVER/delete_veto_files_only -U$USERNAME%$PASSWORD $ADDARGS < $tmpfile 2>&1' + eval echo "$cmd" + out=$(eval "$cmd") + ret=$? + + # Check for smbclient error. + if [ $ret != 0 ] ; then + echo "Failed accessing share delete_veto_files_only - $ret" + echo "$out" + return 1 + fi + + # We should NOT see the dangling symlink file. + echo "$out" | grep bad_link + ret=$? + if [ $ret -eq 0 ] ; then + echo "Saw dangling symlink bad_link in share delete_veto_files_only" + echo "$out" + return 1 + fi + + # Try and remove the directory, should succeed. + cat > "$tmpfile" <<EOF +rd dir +quit +EOF + + local cmd='CLI_FORCE_INTERACTIVE=yes $SMBCLIENT //$SERVER/delete_veto_files_only -U$USERNAME%$PASSWORD $ADDARGS < $tmpfile 2>&1' + eval echo "$cmd" + out=$(eval "$cmd") + ret=$? + + # Check for smbclient error. + if [ $ret != 0 ] ; then + echo "Failed accessing share delete_veto_files_only - $ret" + echo "$out" + return 1 + fi + -- Samba Shared Repository