[SCM] Samba Shared Repository - branch v4-10-stable updated
Karolin Seeger
kseeger at samba.org
Thu Oct 17 10:29:35 UTC 2019
The branch, v4-10-stable has been updated
via a1cdfe58b70 VERSION: Disable GIT_SNAPSHOT for the 4.9.10 release.
via d2908f256cc WHATSNEW: Add release notes for Samba 4.10.9.
via 3ad42536f87 s3:libads: Do not turn on canonicalization flag for MIT Kerberos
via d533a588b62 lib:krb5_wrap: Do not create a temporary file for MEMORY keytabs
via 8939186345f spnego: fix server handling of no optimistic exchange
via 68d91436d85 python/tests/gensec: add spnego downgrade python tests
via 3a06edfe4fa python/tests/gensec: make it possible to add knownfail tests for gensec.update()
via 5c411a2f9f5 selftest: add tests for no optimistic spnego exchange
via a403e4d63e0 spnego: add client option to omit sending an optimistic token
via 9d2d4cf9c93 selftest: s3: add a test for spnego downgrade from krb5 to ntlm
via 24a43d7c742 s3:libsmb: Do not check the SPNEGO neg token for KRB5
via f340056428a spnego: ignore server mech_types list
via de0841138e6 testprogs: Add test for 'net ads join createcomputer='
via f65a755bdd1 s3:libads: Just change the machine password if account already exists
via 9d984cebde3 s3:libnet: Improve debug messages
via 1e384434960 s3:libads: Fix creating machine account using LDAP
via ac8c51fbb56 s3:libads: Don't set supported encryption types during account creation
via f5216b70c37 s3:libads: Fix detection if acount already exists in ads_find_machine_count()
via 60c5d1d3de6 s3:libads: Use a talloc_asprintf in ads_find_machine_acct()
via ddd4a6af621 s3:libads: Cleanup error code paths in ads_create_machine_acct()
via 39959813881 s3:libnet: Require sealed LDAP SASL connections for joining
via 377483859c0 s3:libads: Use ldap_add_ext_s() in ads_gen_add()
via c68763bff35 testprogs: Fix failure count in test_net_ads.sh
via eafb3a20b9d s3: smbclient: Stop an SMB2-connection from blundering into SMB1-specific calls.
via 59c3bd1b15d ctdb-vacuum: Process all records not deleted on a remote node
via fc89f8f54ba s3:libsmb: Link libsmb against pthread
via 0fe766a4f62 nsswitch: Link stress-nss-libwbclient against pthread
via 308c2c9cd48 waf:replace: Do not link against libpthread if not necessary
via cade53a1558 third_party: Link uid_wrapper against pthread
via e405ed01b02 third_party: Link nss_wrapper against pthread
via 171ff620cd0 third_party: Only link cmocka against librt if really needed
via 93ab3efe769 pthreadpool: Only link pthreadpool against librt if we have to
via a1309d360b9 replace: Only link against librt if really needed
via b0362fd07f8 s3:waf: Do not check for nanosleep() as we don't use it anywhere
via 1ad8c6f4b08 winbind: provide passwd struct for group sid with ID_TYPE_BOTH mapping (again)
via 8a2ca386dfb selftest: Test ID_TYPE_BOTH with idmap_rid module
via d689042dffe s3-winbindd: fix forest trusts with additional trust attributes.
via f19881f6198 fault.c: improve fault_report message text pointing to our wiki
via 56379945161 selftest/Samba3.pm: use "winbind use krb5 enterprise principals = yes" for ad_member
via abd2d22cdda selftest/Samba3.pm: use "winbind scan trusted domains = no" for ad_member
via fd097f0b3bb selftest/tests.py: test pam_winbind with a lot of username variations
via fe13bfcdfdc selftest/tests.py: test pam_winbind with krb5_auth
via 9bb73edc69c selftest/tests.py: prepare looping over pam_winbindd tests
via 8118fc89262 test_pam_winbind.sh: allow different pam_winbindd config options to be specified
via 6bc0549bfde tests/pam_winbind.py: allow upn names to be used in USERNAME with an empty DOMAIN value
via f2283616011 tests/pam_winbind.py: turn pypamtest.PamTestError into a failure
via 956618ac6da s3:winbindd: implement the "winbind use krb5 enterprise principals" logic
via 4760bbaae22 docs-xml: add "winbind use krb5 enterprise principals" option
via aa1e8e53551 krb5_wrap: let smb_krb5_parse_name() accept enterprise principals
via d7f0baf2f54 s3:libads: ads_krb5_chg_password() should always use the canonicalized principal
via 73608fced20 s4:auth: kinit_to_ccache() should always use the canonicalized principal
via be9ea381530 krb5_wrap: smb_krb5_kinit_password_ccache() should always use the canonicalized principal
via 03477632b62 s3:libads/kerberos: always use the canonicalized principal after kinit
via aeaffacb9c8 s3:libsmb: let cli_session_creds_prepare_krb5() update the canonicalized principal to cli_credentials
via 45a078db792 s3:libsmb: avoid wrong debug message in cli_session_creds_prepare_krb5()
via e620cad350e s3:libads: let kerberos_kinit_password_ext() return the canonicalized principal/realm
via 9f2d5ae0c59 s4:auth: use the correct client realm in gensec_gssapi_update_internal()
via 05eb45e1d37 s3/libads: clang: Fix Value stored to 'canon_princ' is never read
via eaecffd63db classicupgrade: fix a a bytes-like object is required, not 'str' error
via 1b4ccd961f1 ctdb-tools: Stop deleted nodes from influencing ctdb nodestatus exit code
via 1d749a02fc9 s3:client:Use DEVICE_URI, instead of argv[0],for Device URI
via 075b3fd1143 s3/4: libsmbclient test. Test using smbc_telldir/smbc_lseekdir with smbc_readdir/smbc_readdirplus/smbc_getdents.
via 71b963ec4b3 s3: libsmbclient: Fix smbc_lseekdir() to work with smbc_readdirplus().
via 6dd57f679f8 s3: libsmbclient: Ensure SMBC_getdents_ctx() also updates the readdirplus pointers.
via 3f7c5daa06b s3: libsmbclient: Ensure SMBC_readdirplus_ctx() also updates the readdir pointers.
via b47a9b9301f s3: libsmbclient: Ensure SMBC_readdir_ctx() also updates the readdirplus pointers.
via e3f51924971 libcli/smb: send SMB2_NETNAME_NEGOTIATE_CONTEXT_ID
via b6a50185389 libcli/smb: add new COMPRESSION and NETNAME negotiate context ids
via cb6a155b385 s3:ldap: Fix join with don't exists machine account
via 2dbc9dce493 ctdb: fix compilation on systems with glibc robust mutexes
via 7e07bc4f289 vfs_glusterfs: Use pthreadpool for scheduling aio operations
via f5017935a7b ctdb-recoverd: Fix typo in previous fix
via 25dacde5c8f ctdb-tests: Clear deleted record via recovery instead of vacuuming
via f39a9c2a4be ctdb-tests: Strengthen volatile DB traverse test
via 530119888c6 ctdb-recoverd: Only check for LMASTER nodes in the VNN map
via 9cbb50d2e9d ctdb-tests: Don't retrieve the VNN map from target node for notlmaster
via 3e0205ec026 ctdb-tests: Handle special cases first and return
via 576f5e30351 ctdb-tests: Inline handling of recovered and notlmaster statuses
via d0b666a1a8d ctdb-tests: Drop unused node statuses frozen/unfrozen
via 594a2a95cea ctdb-tests: Reformat node_has_status()
via 981f8b164d3 VERSION: Bump version up to 4.10.9.
via 2aa3ab95763 Merge tag 'samba-4.10.8' into v4-10-test
via 040a483956a ctdb-daemon: Make node inactive in the NODE_STOP control
via 7dd839c7f2a ctdb-daemon: Drop unused function ctdb_local_node_got_banned()
via d14e656f21b ctdb-daemon: Switch banning code to use ctdb_node_become_inactive()
via 916f0db0d1b ctdb-daemon: Factor out new function ctdb_node_become_inactive()
via e224ff934e1 ctdb-tcp: Mark node as disconnected if incoming connection goes away
via 7f0af1f925f ctdb-tcp: Only mark a node connected if both directions are up
via cd0d85bb4e4 ctdb-tcp: Create outbound queue when the connection becomes writable
via e41e2feba0a ctdb-tcp: Use TALLOC_FREE()
via b31d8dc286c ctdb-tcp: Move incoming fd and queue into struct ctdb_tcp_node
via bf08a2d958b ctdb-tcp: Rename fd -> out_fd
via 611610cff8d ctdb-daemon: Add function ctdb_ip_to_node()
via 5684a9b8ab9 ctdb-daemon: Replace function ctdb_ip_to_nodeid() with ctdb_ip_to_pnn()
via 52f6e7cd578 vfs_glusterfs: Enable profiling for file system operations
via a5fe60748c9 undoguidx: blackbox test
via fc4d63d657e undoduididx: Add "or later" to warning about using tools from Samba 4.8
via 718cfd14198 sambaundoguididx: fix for -s
via 45f05dc5363 sambaundoguididx: Add flags=ldb.FLG_DONT_CREATE_DB and port to Python3
via 4861e7acf57 s4/scripting: MORE py3 compatible print functions
via fe99db5c349 ldb: Release ldb 1.5.6
via ded3ef299c7 ldb: ldbdump key and pack format version comments
via f74bea537bc ldb: baseinfo pack format check on init
via abf29c23941 ldb: Fix segfault parsing new pack formats
via 237bebf28e1 ldb: test for parse errors
via ea4371d020d vfs_gpfs: Implement special case for denying owner access to ACL
via 13195dff232 vfs_gpfs: Move mapping from generic NFSv ACL to GPFS ACL to separate function
via 0ec7ac3eb18 docs: Remove gpfs:merge_writeappend from vfs_gpfs manpage
via b1eb79b9ccc vfs_gpfs: Remove merge_writeappend parameter
via 37eebf44451 nfs4_acls: Use correct owner information for ACL after owner change
via cf26e075382 nfs4_acls: Add test for merging duplicates when mapping from NFS4 ACL to DACL
via 1a9b67dbafc nfs4_acls: Remove duplicate entries when mapping from NFS4 ACL to DACL
via a10f9e6b461 nfs4_acls: Rename smbacl4_fill_ace4 function
via e637a2213e5 nfs4_acls: Add additional owner entry when mapping to NFS4 ACL with IDMAP_TYPE_BOTH
via 6996ae8fd6b nfs4_acls: Remove redundant pointer variable
via e64fee96fa2 nfs4_acls: Remove redundant logging from smbacl4_fill_ace4
via 8eb5b3964ad nfs4_acls: Move adding of NFS4 ACE to ACL to smbacl4_fill_ace4
via 5a384b89fd6 nfs4_acls: Move smbacl4_MergeIgnoreReject function
via af3d3b02bbc nfs4_acls: Remove i argument from smbacl4_MergeIgnoreReject
via 8f9b1a92f28 nfs4_acls: Add missing braces in smbacl4_win2nfs4
via e9b2e353778 nfs4_acls: Add helper function for checking INHERIT flags.
via 5095221e8df nfs4_acls: Use correct type when checking ownerGID
via f321f066d19 nfs4_acls: Use switch/case for checking idmap type
via 8acc4979817 nfs4_acls: Use sids_to_unixids to lookup uid or gid
via ab0443b684e test_nfs4_acls: Add test for mapping from DACL to NFS4 ACL with IDMAP_TYPE_BOTH
via b3485711137 test_nfs4_acls: Add test for mapping from NFS4 ACL to DACL with IDMAP_TYPE_BOTH
via 753f986f514 test_nfs4_acls: Add test for mapping from NFS4 to DACL in config mode special
via db82829628f test_nfs4_acls: Add test for mapping from DACL to NFS4 ACL with config special
via 348d662474a test_nfs4_acls: Add test for matching DACL entries for acedup
via a37db7d7494 test_nfs4_acls: Add test for acedup settings
via 5b591773bcc test_nfs4_acls: Add test for 'map full control' option
via 74cf7490384 test_nfs4_acls: Add test for mapping from NFS4 to DACL CREATOR entries
via c437f74a6d3 test_nfs4_acls: Add test for mapping CREATOR entries to NFS4 ACL entries
via 060d32a223a test_nfs4_acls: Add test for mapping from DACL to special NFS4 ACL entries
via 4ab8b0eb754 test_nfs4_acls: Add test for mapping of special NFS4 ACL entries to DACL entries
via b99bf6e4638 test_nfs4_acls: Add test for mapping permissions from DACL to NFS4 ACL
via 95138d57872 test_nfs4_acls: Add test for mapping permissions from NFS4 ACL to DACL
via 8d378ce76c6 test_nfs4_acls: Add test for flags mapping from DACL to NFS4 ACL
via 248f8f2de5a test_nfs4_acls: Add test for flags mapping from NFS4 ACL to DACL
via c1e2f6d9ed8 test_nfs4_acls: Add tests for mapping of ACL types
via bfed986cd00 test_nfs4_acls: Add tests for mapping of empty ACLs
via fe19ee91c22 selftest: Start implementing unit test for nfs4_acls
via 6ce0e2aa39e nfs4_acls: Remove fsp from smbacl4_win2nfs4
via 8c1ae65b581 Revert "nfs4acl: Fix owner mapping with ID_TYPE_BOTH"
via 836e7ef2078 Add PrimaryGroupId to group array in DC response
via cbd749ec05f selftest: check for PrimaryGroupId in DC returned group array
via 5d48bbd8c53 selftest: remote_pac: s/s2u4self/s4u2self/g
via 505297b3909 vfs:glusterfs_fuse: build only if we have setmntent()
via f7058626876 vfs:glusterfs_fuse: ensure fileids are constant across nodes
via baafb6fc060 VERSION: Bump version up to 4.10.8...
from 2d587a11d5f VERSION: Disable GIT_SNAPSHOT for the 4.10.8 release.
https://git.samba.org/?p=samba.git;a=shortlog;h=v4-10-stable
- Log -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
VERSION | 2 +-
WHATSNEW.txt | 120 +-
auth/auth_sam_reply.c | 8 +-
auth/gensec/spnego.c | 55 +-
ctdb/include/ctdb_private.h | 8 +-
ctdb/server/ctdb_banning.c | 26 +-
ctdb/server/ctdb_daemon.c | 11 +-
ctdb/server/ctdb_recover.c | 45 +
ctdb/server/ctdb_recoverd.c | 14 +-
ctdb/server/ctdb_server.c | 28 +-
ctdb/server/ctdb_vacuum.c | 2 +-
ctdb/tcp/ctdb_tcp.h | 16 +-
ctdb/tcp/tcp_connect.c | 212 ++-
ctdb/tcp/tcp_init.c | 21 +-
ctdb/tcp/tcp_io.c | 17 +-
ctdb/tests/scripts/integration.bash | 80 +-
ctdb/tests/simple/69_recovery_resurrect_deleted.sh | 17 +-
ctdb/tests/simple/79_volatile_db_traverse.sh | 67 +-
ctdb/tools/ctdb.c | 8 +-
ctdb/wscript | 2 +-
docs-xml/manpages/vfs_glusterfs_fuse.8.xml | 8 +
docs-xml/manpages/vfs_gpfs.8.xml | 20 -
.../winbind/winbindusekrb5enterpriseprincipals.xml | 34 +
lib/krb5_wrap/krb5_samba.c | 23 +-
lib/ldb/ABI/{ldb-1.5.1.sigs => ldb-1.5.6.sigs} | 1 +
...yldb-util-1.1.10.sigs => pyldb-util-1.5.6.sigs} | 0
...-util-1.1.10.sigs => pyldb-util.py3-1.5.6.sigs} | 0
lib/ldb/common/ldb_pack.c | 23 +-
lib/ldb/include/ldb_module.h | 9 +
lib/ldb/ldb_key_value/ldb_kv.c | 2 +
lib/ldb/ldb_key_value/ldb_kv.h | 1 +
lib/ldb/ldb_key_value/ldb_kv_cache.c | 37 +
lib/ldb/ldb_tdb/ldb_tdb.c | 8 +-
lib/ldb/tests/ldb_kv_ops_test.c | 23 +
lib/ldb/tools/ldbdump.c | 24 +
lib/ldb/wscript | 2 +-
lib/pthreadpool/wscript_build | 7 +-
lib/replace/wscript | 34 +-
lib/util/fault.c | 6 +-
libcli/smb/smb2_constants.h | 2 +
libcli/smb/smbXcli_base.c | 17 +
libgpo/pygpo.c | 2 +-
nsswitch/tests/test_idmap_rid.sh | 132 ++
nsswitch/wscript_build | 2 +-
python/samba/tests/blackbox/undoguididx.py | 107 ++
python/samba/tests/gensec.py | 34 +-
python/samba/tests/pam_winbind.py | 25 +-
python/samba/tests/pam_winbind_chauthtok.py | 10 +-
python/samba/tests/pam_winbind_warn_pwd_expire.py | 10 +-
python/samba/tests/test_pam_winbind.sh | 12 +-
python/samba/tests/test_pam_winbind_chauthtok.sh | 4 +-
.../tests/test_pam_winbind_warn_pwd_expire.sh | 20 +-
python/samba/upgrade.py | 2 +-
selftest/target/Samba3.pm | 11 +
selftest/tests.py | 87 +-
source3/client/client.c | 4 +
source3/client/smbspool.c | 16 +-
source3/lib/netapi/joindomain.c | 5 +-
source3/libads/ads_proto.h | 13 +-
source3/libads/ads_struct.c | 14 +-
source3/libads/authdata.c | 1 +
source3/libads/kerberos.c | 54 +-
source3/libads/kerberos_proto.h | 5 +-
source3/libads/kerberos_util.c | 3 +-
source3/libads/krb5_setpw.c | 21 +
source3/libads/ldap.c | 340 +++-
source3/libnet/libnet_join.c | 31 +-
source3/libsmb/cliconnect.c | 91 +-
source3/libsmb/libsmb_dir.c | 102 +-
source3/libsmb/namequery_dc.c | 2 +-
source3/libsmb/wscript | 1 +
source3/modules/nfs4_acls.c | 361 ++--
source3/modules/nfs4_acls.h | 2 +
source3/modules/test_nfs4_acls.c | 1898 ++++++++++++++++++++
source3/modules/vfs_glusterfs.c | 884 +++++----
source3/modules/vfs_glusterfs_fuse.c | 193 +-
source3/modules/vfs_gpfs.c | 121 +-
source3/modules/wscript_build | 5 +
source3/printing/nt_printing_ads.c | 6 +-
source3/script/tests/test_smbd_no_krb5.sh | 46 +
source3/selftest/tests.py | 11 +-
source3/utils/net_ads.c | 16 +-
source3/winbindd/wb_queryuser.c | 18 +-
source3/winbindd/winbindd_ads.c | 7 +-
source3/winbindd/winbindd_cm.c | 5 +-
source3/winbindd/winbindd_cred_cache.c | 6 +
source3/winbindd/winbindd_pam.c | 57 +-
source3/winbindd/winbindd_util.c | 2 +-
source3/wscript | 5 +-
source4/auth/gensec/gensec_gssapi.c | 6 +-
source4/auth/kerberos/kerberos_util.c | 2 +
source4/scripting/bin/autoidl | 19 +-
source4/scripting/bin/fullschema | 9 +-
source4/scripting/bin/get-descriptors | 9 +-
source4/scripting/bin/minschema | 47 +-
source4/scripting/bin/sambaundoguididx | 28 +-
source4/scripting/bin/smbstatus | 19 +-
source4/scripting/devel/addlotscontacts | 4 +-
source4/scripting/devel/crackname | 10 +-
source4/scripting/devel/getncchanges | 8 +-
source4/selftest/tests.py | 6 +
source4/torture/libsmbclient/libsmbclient.c | 340 ++++
source4/torture/rpc/remote_pac.c | 114 +-
testprogs/blackbox/test_net_ads.sh | 36 +-
third_party/cmocka/wscript | 7 +-
third_party/nss_wrapper/wscript | 2 +-
third_party/uid_wrapper/wscript | 2 +-
107 files changed, 5371 insertions(+), 1141 deletions(-)
create mode 100644 docs-xml/smbdotconf/winbind/winbindusekrb5enterpriseprincipals.xml
copy lib/ldb/ABI/{ldb-1.5.1.sigs => ldb-1.5.6.sigs} (99%)
copy lib/ldb/ABI/{pyldb-util-1.1.10.sigs => pyldb-util-1.5.6.sigs} (100%)
copy lib/ldb/ABI/{pyldb-util-1.1.10.sigs => pyldb-util.py3-1.5.6.sigs} (100%)
create mode 100644 python/samba/tests/blackbox/undoguididx.py
create mode 100644 source3/modules/test_nfs4_acls.c
create mode 100755 source3/script/tests/test_smbd_no_krb5.sh
Changeset truncated at 500 lines:
diff --git a/VERSION b/VERSION
index 59006453795..c843870dd4f 100644
--- a/VERSION
+++ b/VERSION
@@ -25,7 +25,7 @@
########################################################
SAMBA_VERSION_MAJOR=4
SAMBA_VERSION_MINOR=10
-SAMBA_VERSION_RELEASE=8
+SAMBA_VERSION_RELEASE=9
########################################################
# If a official release has a serious bug #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 54c9c8fcabe..085acc45245 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,3 +1,119 @@
+ ==============================
+ Release Notes for Samba 4.10.9
+ October 17, 2019
+ ==============================
+
+
+
+Changes since 4.10.8:
+---------------------
+
+o Michael Adam <obnox at samba.org>
+ * BUG 13972: Different Device Id for GlusterFS FUSE mount is causing data
+ loss in CTDB cluster.
+ * BUG 14141: winbind: Provide passwd struct for group sid with ID_TYPE_BOTH
+ mapping (again).
+
+o Jeremy Allison <jra at samba.org>
+ * BUG 14094: smbc_readdirplus() is incompatible with smbc_telldir() and
+ smbc_lseekdir().
+ * BUG 14152: s3: smbclient: Stop an SMB2-connection from blundering into
+ SMB1-specific calls.
+
+o Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
+ * BUG 13978: s4/scripting: MORE py3 compatible print functions.
+
+o Andrew Bartlett <abartlet at samba.org>
+ * ldb: Release ldb 1.5.6
+ * BUG 13978: undoduididx: Add "or later" to warning about using tools from
+ Samba 4.8.
+ * BUG 13959: ldb_tdb fails to check error return when parsing pack formats.
+
+o Ralph Boehme <slow at samba.org>
+ * BUG 14038: ctdb: Fix compilation on systems with glibc robust mutexes.
+
+o Isaac Boukris <iboukris at gmail.com>
+ * BUG 11362: GPO security filtering based on the groups in Kerberos PAC (but
+ primary group is missing).
+ * BUG 14106: Fix spnego fallback from kerberos to ntlmssp in smbd server.
+
+o Günther Deschner <gd at samba.org>
+ * BUG 14130: s3-winbindd: fix forest trusts with additional trust attributes.
+
+o Poornima G <pgurusid at redhat.com>
+ * BUG 14098: vfs_glusterfs: Use pthreadpool for scheduling aio operations.
+
+o Aaron Haslett <aaronhaslett at catalyst.net.nz>
+ * BUG 13977: ldb: baseinfo pack format check on init.
+ * BUG 13978: ldb: ldbdump key and pack format version comments.
+
+o Amitay Isaacs <amitay at gmail.com>
+ * BUG 14140: Overlinking libreplace against librt and pthread against every
+ binary or library causes issues.
+ * BUG 14147: ctdb-vacuum: Process all records not deleted on a remote node.
+
+o Björn Jacke <bj at sernet.de>
+ * BUG 14136: classicupgrade: Fix uncaught exception.
+ * BUG 14139: fault.c: Improve fault_report message text pointing to our wiki.
+
+o Bryan Mason <bmason at redhat.com>
+ * BUG 14128: s3:client:Use DEVICE_URI, instead of argv[0],for Device URI.
+
+o Stefan Metzmacher <metze at samba.org>
+ * BUG 14055: We should send SMB2_NETNAME_NEGOTIATE_CONTEXT_ID negotiation
+ context.
+ * BUG 14124: 'pam_winbind' with 'krb5_auth' or 'wbinfo -K' doesn't work for
+ users of trusted domains/forests principals" logic.
+
+o Anoop C S <anoopcs at redhat.com>
+ * BUG 14093: vfs_glusterfs: Enable profiling for file system operations.
+
+o Christof Schmitt <cs at samba.org>
+ * BUG 14032: vfs_gpfs: Implement special case for denying owner access to
+ ACL.
+
+o Andreas Schneider <asn at samba.org>
+ * BUG 13884: Joining Active Directory should not use SAMR to set the
+ password.
+ * BUG 14106: s3:libsmb: Do not check the SPNEGO neg token for KRB5.
+ * BUG 14140: Overlinking libreplace against librt and pthread against every
+ binary or library causes issues.
+ * BUG 14155: 'kpasswd' fails when built with MIT Kerberos.
+
+o Martin Schwenke <martin at meltin.net>
+ * BUG 14084: CTDB replies can be lost before nodes are bidirectionally
+ connected.
+ * BUG 14087: "ctdb stop" command completes before databases are frozen.
+ * BUG 14129: ctdb-tools: Stop deleted nodes from influencing ctdb nodestatus
+ exit code.
+
+o Evgeny Sinelnikov <sin at altlinux.org>
+ * BUG 14007: s3:ldap: Fix join with don't exists machine account.
+
+
+#######################################
+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.10.8
September 3, 2019
@@ -53,8 +169,8 @@ database (https://bugzilla.samba.org/).
======================================================================
-Release notes for older releases follow:
-----------------------------------------
+----------------------------------------------------------------------
+
==============================
Release Notes for Samba 4.10.7
diff --git a/auth/auth_sam_reply.c b/auth/auth_sam_reply.c
index bd695151dc0..b5b6362dc93 100644
--- a/auth/auth_sam_reply.c
+++ b/auth/auth_sam_reply.c
@@ -89,7 +89,7 @@ static NTSTATUS auth_convert_user_info_dc_sambaseinfo(TALLOC_CTX *mem_ctx,
sam->groups.count = 0;
sam->groups.rids = NULL;
- if (user_info_dc->num_sids > 2) {
+ if (user_info_dc->num_sids > PRIMARY_GROUP_SID_INDEX) {
size_t i;
sam->groups.rids = talloc_array(mem_ctx, struct samr_RidWithAttribute,
user_info_dc->num_sids);
@@ -97,7 +97,7 @@ static NTSTATUS auth_convert_user_info_dc_sambaseinfo(TALLOC_CTX *mem_ctx,
if (sam->groups.rids == NULL)
return NT_STATUS_NO_MEMORY;
- for (i=2; i<user_info_dc->num_sids; i++) {
+ for (i=PRIMARY_GROUP_SID_INDEX; i<user_info_dc->num_sids; i++) {
struct dom_sid *group_sid = &user_info_dc->sids[i];
if (!dom_sid_in_domain(sam->domain_sid, group_sid)) {
/* We handle this elsewhere */
@@ -451,6 +451,10 @@ NTSTATUS make_user_info_dc_netlogon_validation(TALLOC_CTX *mem_ctx,
}
for (i = 0; i < base->groups.count; i++) {
+ /* Skip primary group, already added above */
+ if (base->groups.rids[i].rid == base->primary_gid) {
+ continue;
+ }
user_info_dc->sids[user_info_dc->num_sids] = *base->domain_sid;
if (!sid_append_rid(&user_info_dc->sids[user_info_dc->num_sids], base->groups.rids[i].rid)) {
return NT_STATUS_INVALID_PARAMETER;
diff --git a/auth/gensec/spnego.c b/auth/gensec/spnego.c
index 0b3fbdce7ac..ddbe03c5d6b 100644
--- a/auth/gensec/spnego.c
+++ b/auth/gensec/spnego.c
@@ -136,6 +136,7 @@ struct spnego_state {
bool done_mic_check;
bool simulate_w2k;
+ bool no_optimistic;
/*
* The following is used to implement
@@ -187,6 +188,10 @@ static NTSTATUS gensec_spnego_client_start(struct gensec_security *gensec_securi
spnego_state->simulate_w2k = gensec_setting_bool(gensec_security->settings,
"spnego", "simulate_w2k", false);
+ spnego_state->no_optimistic = gensec_setting_bool(gensec_security->settings,
+ "spnego",
+ "client_no_optimistic",
+ false);
gensec_security->private_data = spnego_state;
return NT_STATUS_OK;
@@ -511,7 +516,11 @@ static NTSTATUS gensec_spnego_client_negTokenInit_start(
}
n->mech_idx = 0;
- n->mech_types = spnego_in->negTokenInit.mechTypes;
+
+ /* Do not use server mech list as it isn't protected. Instead, get all
+ * supported mechs (excluding SPNEGO). */
+ n->mech_types = gensec_security_oids(gensec_security, n,
+ GENSEC_OID_SPNEGO);
if (n->mech_types == NULL) {
return NT_STATUS_INVALID_PARAMETER;
}
@@ -658,13 +667,30 @@ static NTSTATUS gensec_spnego_client_negTokenInit_finish(
DATA_BLOB *out)
{
struct spnego_data spnego_out;
- const char *my_mechs[] = {NULL, NULL};
+ const char * const *mech_types = NULL;
bool ok;
- my_mechs[0] = spnego_state->neg_oid;
+ if (n->mech_types == NULL) {
+ DBG_WARNING("No mech_types list\n");
+ return NT_STATUS_INVALID_PARAMETER;
+ }
+
+ for (mech_types = n->mech_types; *mech_types != NULL; mech_types++) {
+ int cmp = strcmp(*mech_types, spnego_state->neg_oid);
+
+ if (cmp == 0) {
+ break;
+ }
+ }
+
+ if (*mech_types == NULL) {
+ DBG_ERR("Can't find selected sub mechanism in mech_types\n");
+ return NT_STATUS_INVALID_PARAMETER;
+ }
+
/* compose reply */
spnego_out.type = SPNEGO_NEG_TOKEN_INIT;
- spnego_out.negTokenInit.mechTypes = my_mechs;
+ spnego_out.negTokenInit.mechTypes = mech_types;
spnego_out.negTokenInit.reqFlags = data_blob_null;
spnego_out.negTokenInit.reqFlagsPadding = 0;
spnego_out.negTokenInit.mechListMIC = data_blob_null;
@@ -676,7 +702,7 @@ static NTSTATUS gensec_spnego_client_negTokenInit_finish(
}
ok = spnego_write_mech_types(spnego_state,
- my_mechs,
+ mech_types,
&spnego_state->mech_types);
if (!ok) {
DBG_ERR("failed to write mechTypes\n");
@@ -1295,6 +1321,10 @@ static NTSTATUS gensec_spnego_server_negTokenInit_step(
spnego_state->mic_requested = true;
}
+ if (sub_in.length == 0) {
+ spnego_state->no_optimistic = true;
+ }
+
/*
* Note that 'cur_sec' is temporary memory, but
* cur_sec->oid points to a const string in the
@@ -1923,6 +1953,21 @@ static void gensec_spnego_update_pre(struct tevent_req *req)
* blob and NT_STATUS_OK.
*/
state->sub.status = NT_STATUS_OK;
+ } else if (spnego_state->state_position == SPNEGO_CLIENT_START &&
+ spnego_state->no_optimistic) {
+ /*
+ * Skip optimistic token per conf.
+ */
+ state->sub.status = NT_STATUS_MORE_PROCESSING_REQUIRED;
+ } else if (spnego_state->state_position == SPNEGO_SERVER_START &&
+ state->sub.in.length == 0 && spnego_state->no_optimistic) {
+ /*
+ * If we didn't like the mechanism for which the client sent us
+ * an optimistic token, or if he didn't send any, don't call
+ * the sub mechanism just yet.
+ */
+ state->sub.status = NT_STATUS_MORE_PROCESSING_REQUIRED;
+ spnego_state->no_optimistic = false;
} else {
/*
* MORE_PROCESSING_REQUIRED =>
diff --git a/ctdb/include/ctdb_private.h b/ctdb/include/ctdb_private.h
index ea00bb12128..0c66725d36c 100644
--- a/ctdb/include/ctdb_private.h
+++ b/ctdb/include/ctdb_private.h
@@ -481,7 +481,6 @@ int ctdb_ibw_init(struct ctdb_context *ctdb);
/* from ctdb_banning.c */
-void ctdb_local_node_got_banned(struct ctdb_context *ctdb);
int32_t ctdb_control_set_ban_state(struct ctdb_context *ctdb, TDB_DATA indata);
int32_t ctdb_control_get_ban_state(struct ctdb_context *ctdb, TDB_DATA *outdata);
void ctdb_ban_self(struct ctdb_context *ctdb);
@@ -829,6 +828,8 @@ int32_t ctdb_control_recd_ping(struct ctdb_context *ctdb);
int32_t ctdb_control_set_recmaster(struct ctdb_context *ctdb,
uint32_t opcode, TDB_DATA indata);
+void ctdb_node_become_inactive(struct ctdb_context *ctdb);
+
int32_t ctdb_control_stop_node(struct ctdb_context *ctdb);
int32_t ctdb_control_continue_node(struct ctdb_context *ctdb);
@@ -841,7 +842,10 @@ void ctdb_stop_recoverd(struct ctdb_context *ctdb);
int ctdb_set_transport(struct ctdb_context *ctdb, const char *transport);
-int ctdb_ip_to_nodeid(struct ctdb_context *ctdb, const ctdb_sock_addr *nodeip);
+struct ctdb_node *ctdb_ip_to_node(struct ctdb_context *ctdb,
+ const ctdb_sock_addr *nodeip);
+uint32_t ctdb_ip_to_pnn(struct ctdb_context *ctdb,
+ const ctdb_sock_addr *nodeip);
void ctdb_load_nodes_file(struct ctdb_context *ctdb);
diff --git a/ctdb/server/ctdb_banning.c b/ctdb/server/ctdb_banning.c
index 9cd163645a1..3c711575e8c 100644
--- a/ctdb/server/ctdb_banning.c
+++ b/ctdb/server/ctdb_banning.c
@@ -57,30 +57,6 @@ static void ctdb_ban_node_event(struct tevent_context *ev,
}
}
-void ctdb_local_node_got_banned(struct ctdb_context *ctdb)
-{
- struct ctdb_db_context *ctdb_db;
-
- DEBUG(DEBUG_NOTICE, ("This node has been banned - releasing all public "
- "IPs and setting the generation to INVALID.\n"));
-
- /* Reset the generation id to 1 to make us ignore any
- REQ/REPLY CALL/DMASTER someone sends to us.
- We are now banned so we shouldnt service database calls
- anymore.
- */
- ctdb->vnn_map->generation = INVALID_GENERATION;
- for (ctdb_db = ctdb->db_list; ctdb_db != NULL; ctdb_db = ctdb_db->next) {
- ctdb_db->generation = INVALID_GENERATION;
- }
-
- /* Recovery daemon will set the recovery mode ACTIVE and freeze
- * databases.
- */
-
- ctdb_release_all_ips(ctdb);
-}
-
int32_t ctdb_control_set_ban_state(struct ctdb_context *ctdb, TDB_DATA indata)
{
struct ctdb_ban_state *bantime = (struct ctdb_ban_state *)indata.dptr;
@@ -129,7 +105,7 @@ int32_t ctdb_control_set_ban_state(struct ctdb_context *ctdb, TDB_DATA indata)
ctdb_ban_node_event, ctdb);
if (!already_banned) {
- ctdb_local_node_got_banned(ctdb);
+ ctdb_node_become_inactive(ctdb);
}
return 0;
}
diff --git a/ctdb/server/ctdb_daemon.c b/ctdb/server/ctdb_daemon.c
index aa0694548f8..95b5b6381de 100644
--- a/ctdb/server/ctdb_daemon.c
+++ b/ctdb/server/ctdb_daemon.c
@@ -1251,21 +1251,18 @@ static void ctdb_initialise_vnn_map(struct ctdb_context *ctdb)
static void ctdb_set_my_pnn(struct ctdb_context *ctdb)
{
- int nodeid;
-
if (ctdb->address == NULL) {
ctdb_fatal(ctdb,
"Can not determine PNN - node address is not set\n");
}
- nodeid = ctdb_ip_to_nodeid(ctdb, ctdb->address);
- if (nodeid == -1) {
+ ctdb->pnn = ctdb_ip_to_pnn(ctdb, ctdb->address);
+ if (ctdb->pnn == CTDB_UNKNOWN_PNN) {
ctdb_fatal(ctdb,
- "Can not determine PNN - node address not found in node list\n");
+ "Can not determine PNN - unknown node address\n");
}
- ctdb->pnn = ctdb->nodes[nodeid]->pnn;
- DEBUG(DEBUG_NOTICE, ("PNN is %u\n", ctdb->pnn));
+ D_NOTICE("PNN is %u\n", ctdb->pnn);
}
/*
diff --git a/ctdb/server/ctdb_recover.c b/ctdb/server/ctdb_recover.c
index cfe77f643a6..f7a73982a71 100644
--- a/ctdb/server/ctdb_recover.c
+++ b/ctdb/server/ctdb_recover.c
@@ -1418,12 +1418,57 @@ int32_t ctdb_control_set_recmaster(struct ctdb_context *ctdb, uint32_t opcode, T
return 0;
}
+void ctdb_node_become_inactive(struct ctdb_context *ctdb)
+{
+ struct ctdb_db_context *ctdb_db;
+
+ D_WARNING("Making node INACTIVE\n");
+
+ /*
+ * Do not service database calls - reset generation to invalid
+ * so this node ignores any REQ/REPLY CALL/DMASTER
+ */
+ ctdb->vnn_map->generation = INVALID_GENERATION;
+ for (ctdb_db = ctdb->db_list; ctdb_db != NULL; ctdb_db = ctdb_db->next) {
+ ctdb_db->generation = INVALID_GENERATION;
+ }
+
+ /*
+ * Although this bypasses the control, the only thing missing
+ * is the deferred drop of all public IPs, which isn't
+ * necessary because they are dropped below
+ */
+ if (ctdb->recovery_mode != CTDB_RECOVERY_ACTIVE) {
+ D_NOTICE("Recovery mode set to ACTIVE\n");
+ ctdb->recovery_mode = CTDB_RECOVERY_ACTIVE;
+ }
+
+ /*
+ * Initiate database freeze - this will be scheduled for
+ * immediate execution and will be in progress long before the
+ * calling control returns
+ */
+ ctdb_daemon_send_control(ctdb,
+ ctdb->pnn,
+ 0,
+ CTDB_CONTROL_FREEZE,
+ 0,
+ CTDB_CTRL_FLAG_NOREPLY,
+ tdb_null,
+ NULL,
+ NULL);
+
+ D_NOTICE("Dropping all public IP addresses\n");
+ ctdb_release_all_ips(ctdb);
+}
int32_t ctdb_control_stop_node(struct ctdb_context *ctdb)
{
DEBUG(DEBUG_ERR, ("Stopping node\n"));
ctdb->nodes[ctdb->pnn]->flags |= NODE_FLAGS_STOPPED;
+ ctdb_node_become_inactive(ctdb);
+
return 0;
}
diff --git a/ctdb/server/ctdb_recoverd.c b/ctdb/server/ctdb_recoverd.c
index 3e63bd1e7a5..31e72f139ff 100644
--- a/ctdb/server/ctdb_recoverd.c
+++ b/ctdb/server/ctdb_recoverd.c
@@ -2981,13 +2981,19 @@ static void main_loop(struct ctdb_context *ctdb, struct ctdb_recoverd *rec,
return;
}
- /* verify that all active nodes in the nodemap also exist in
- the vnnmap.
+ /*
+ * Verify that all active lmaster nodes in the nodemap also
+ * exist in the vnnmap
*/
for (j=0; j<nodemap->num; j++) {
if (nodemap->nodes[j].flags & NODE_FLAGS_INACTIVE) {
continue;
}
+ if (! ctdb_node_has_capabilities(rec->caps,
+ nodemap->nodes[j].pnn,
+ CTDB_CAP_LMASTER)) {
+ continue;
+ }
if (nodemap->nodes[j].pnn == pnn) {
continue;
}
@@ -2998,8 +3004,8 @@ static void main_loop(struct ctdb_context *ctdb, struct ctdb_recoverd *rec,
}
}
if (i == vnnmap->size) {
- DEBUG(DEBUG_ERR, (__location__ " Node %u is active in the nodemap but did not exist in the vnnmap\n",
- nodemap->nodes[j].pnn));
+ D_ERR("Active LMASTER node %u is not in the vnnmap\n",
+ nodemap->nodes[j].pnn);
ctdb_set_culprit(rec, nodemap->nodes[j].pnn);
do_recovery(rec, mem_ctx, pnn, nodemap, vnnmap);
return;
diff --git a/ctdb/server/ctdb_server.c b/ctdb/server/ctdb_server.c
--
Samba Shared Repository
More information about the samba-cvs
mailing list