Merge ~ahasenack/ubuntu/+source/samba:groovy-samba-4.12.2-update into ubuntu/+source/samba:ubuntu/devel

Proposed by Andreas Hasenack
Status: Merged
Approved by: Andreas Hasenack
Approved revision: 3365590314bb07f349bb13268085b86371203b86
Merged at revision: 3365590314bb07f349bb13268085b86371203b86
Proposed branch: ~ahasenack/ubuntu/+source/samba:groovy-samba-4.12.2-update
Merge into: ubuntu/+source/samba:ubuntu/devel
Diff against target: 259708 lines (+82464/-30805)
1973 files modified
.gitlab-ci.yml (+60/-18)
Makefile (+1/-1)
SECURITY.md (+15/-0)
VERSION (+2/-2)
WHATSNEW.txt (+270/-708)
auth/common_auth.h (+0/-6)
auth/credentials/credentials.c (+7/-7)
auth/credentials/credentials_ntlm.c (+22/-9)
auth/credentials/pycredentials.c (+261/-50)
auth/credentials/pycredentials.h (+12/-3)
auth/gensec/gensec_util.c (+1/-1)
auth/gensec/schannel.c (+140/-4)
auth/gensec/spnego.c (+2/-4)
auth/ntlmssp/ntlmssp_client.c (+40/-6)
auth/ntlmssp/ntlmssp_private.h (+3/-2)
auth/ntlmssp/ntlmssp_server.c (+17/-51)
auth/ntlmssp/ntlmssp_sign.c (+171/-41)
bootstrap/.gitlab-ci.yml (+12/-3)
bootstrap/READMD.md (+1/-1)
bootstrap/config.py (+67/-19)
bootstrap/generated-dists/Vagrantfile (+21/-7)
bootstrap/generated-dists/centos6/bootstrap.sh (+3/-8)
bootstrap/generated-dists/centos6/packages.yml (+1/-8)
bootstrap/generated-dists/centos7/bootstrap.sh (+4/-9)
bootstrap/generated-dists/centos7/packages.yml (+2/-9)
bootstrap/generated-dists/centos8/Dockerfile (+1/-1)
bootstrap/generated-dists/centos8/bootstrap.sh (+109/-0)
bootstrap/generated-dists/centos8/packages.yml (+92/-0)
bootstrap/generated-dists/debian10/Dockerfile (+27/-0)
bootstrap/generated-dists/debian10/bootstrap.sh (+105/-0)
bootstrap/generated-dists/debian10/locale.sh (+55/-0)
bootstrap/generated-dists/debian10/packages.yml (+90/-0)
bootstrap/generated-dists/debian7/bootstrap.sh (+1/-11)
bootstrap/generated-dists/debian7/packages.yml (+1/-11)
bootstrap/generated-dists/debian8/bootstrap.sh (+1/-11)
bootstrap/generated-dists/debian8/packages.yml (+1/-11)
bootstrap/generated-dists/debian9/bootstrap.sh (+1/-11)
bootstrap/generated-dists/debian9/packages.yml (+1/-11)
bootstrap/generated-dists/fedora29/bootstrap.sh (+1/-8)
bootstrap/generated-dists/fedora29/packages.yml (+1/-8)
bootstrap/generated-dists/fedora30/bootstrap.sh (+1/-8)
bootstrap/generated-dists/fedora30/packages.yml (+1/-8)
bootstrap/generated-dists/fedora31/Dockerfile (+27/-0)
bootstrap/generated-dists/fedora31/bootstrap.sh (+4/-10)
bootstrap/generated-dists/fedora31/locale.sh (+55/-0)
bootstrap/generated-dists/fedora31/packages.yml (+4/-10)
bootstrap/generated-dists/opensuse150/bootstrap.sh (+1/-8)
bootstrap/generated-dists/opensuse150/packages.yml (+1/-8)
bootstrap/generated-dists/opensuse151/bootstrap.sh (+1/-8)
bootstrap/generated-dists/opensuse151/packages.yml (+1/-8)
bootstrap/generated-dists/ubuntu1404/bootstrap.sh (+1/-11)
bootstrap/generated-dists/ubuntu1404/packages.yml (+1/-11)
bootstrap/generated-dists/ubuntu1604/bootstrap.sh (+1/-11)
bootstrap/generated-dists/ubuntu1604/packages.yml (+1/-11)
bootstrap/generated-dists/ubuntu1804/bootstrap.sh (+1/-11)
bootstrap/generated-dists/ubuntu1804/packages.yml (+1/-11)
bootstrap/sha1sum.txt (+1/-1)
buildtools/wafsamba/samba3.py (+4/-3)
buildtools/wafsamba/samba_abi.py (+1/-3)
buildtools/wafsamba/samba_autoconf.py (+29/-12)
buildtools/wafsamba/samba_autoproto.py (+2/-2)
buildtools/wafsamba/samba_bundled.py (+2/-2)
buildtools/wafsamba/samba_deps.py (+6/-8)
buildtools/wafsamba/samba_dist.py (+2/-2)
buildtools/wafsamba/samba_headers.py (+4/-4)
buildtools/wafsamba/samba_install.py (+3/-3)
buildtools/wafsamba/samba_patterns.py (+2/-0)
buildtools/wafsamba/samba_pidl.py (+27/-3)
buildtools/wafsamba/samba_python.py (+5/-1)
buildtools/wafsamba/samba_third_party.py (+2/-20)
buildtools/wafsamba/samba_utils.py (+3/-21)
buildtools/wafsamba/samba_version.py (+4/-4)
buildtools/wafsamba/samba_wildcard.py (+2/-2)
buildtools/wafsamba/symbols.py (+2/-2)
buildtools/wafsamba/wafsamba.py (+23/-2)
buildtools/wafsamba/wscript (+38/-10)
ctdb/client/client.h (+1/-1)
ctdb/client/client_db.c (+26/-21)
ctdb/client/client_private.h (+4/-0)
ctdb/common/cmdline.c (+124/-44)
ctdb/common/cmdline.h (+15/-0)
ctdb/common/common.h (+1/-1)
ctdb/common/conf.c (+8/-0)
ctdb/common/conf_tool.c (+6/-1)
ctdb/common/ctdb_io.c (+4/-7)
ctdb/common/ctdb_ltdb.c (+72/-31)
ctdb/common/path_tool.c (+6/-1)
ctdb/common/srvid.h (+1/-1)
ctdb/common/system_socket.c (+1/-1)
ctdb/common/tunable.c (+1/-1)
ctdb/config/events/legacy/01.reclock.script (+19/-59)
ctdb/config/events/legacy/11.routing.script (+1/-1)
ctdb/config/events/legacy/13.per_ip_routing.script (+8/-7)
ctdb/config/events/legacy/60.nfs.script (+2/-2)
ctdb/config/functions (+0/-2)
ctdb/doc/ctdb-etcd.7 (+2/-2)
ctdb/doc/ctdb-script.options.5 (+2/-2)
ctdb/doc/ctdb-statistics.7 (+4/-4)
ctdb/doc/ctdb-statistics.7.html (+2/-2)
ctdb/doc/ctdb-statistics.7.xml (+2/-2)
ctdb/doc/ctdb-tunables.7 (+8/-26)
ctdb/doc/ctdb-tunables.7.html (+20/-30)
ctdb/doc/ctdb-tunables.7.xml (+7/-25)
ctdb/doc/ctdb.1 (+8/-9)
ctdb/doc/ctdb.1.html (+6/-7)
ctdb/doc/ctdb.1.xml (+6/-7)
ctdb/doc/ctdb.7 (+2/-2)
ctdb/doc/ctdb.conf.5 (+3/-3)
ctdb/doc/ctdb.conf.5.html (+1/-1)
ctdb/doc/ctdb.conf.5.xml (+1/-1)
ctdb/doc/ctdb.sysconfig.5 (+2/-2)
ctdb/doc/ctdb_diagnostics.1 (+2/-2)
ctdb/doc/ctdb_mutex_ceph_rados_helper.7 (+2/-2)
ctdb/doc/ctdbd.1 (+2/-2)
ctdb/doc/ctdbd_wrapper.1 (+2/-2)
ctdb/doc/examples/config_migrate.sh (+1/-1)
ctdb/doc/ltdbtool.1 (+2/-2)
ctdb/doc/onnode.1 (+2/-2)
ctdb/doc/ping_pong.1 (+2/-2)
ctdb/doc/readonlyrecords.txt (+3/-3)
ctdb/event/event_tool.c (+1/-0)
ctdb/ib/ibw_ctdb.c (+9/-4)
ctdb/ib/ibw_ctdb_init.c (+8/-5)
ctdb/ib/ibwrapper.c (+0/-1)
ctdb/ib/ibwrapper_test.c (+3/-3)
ctdb/include/ctdb_client.h (+0/-34)
ctdb/include/ctdb_private.h (+14/-4)
ctdb/protocol/protocol.h (+10/-0)
ctdb/protocol/protocol_api.h (+8/-0)
ctdb/protocol/protocol_client.c (+52/-9)
ctdb/protocol/protocol_control.c (+47/-60)
ctdb/protocol/protocol_debug.c (+2/-0)
ctdb/protocol/protocol_private.h (+10/-0)
ctdb/protocol/protocol_types.c (+63/-0)
ctdb/server/ctdb_call.c (+6/-6)
ctdb/server/ctdb_client.c (+3/-245)
ctdb/server/ctdb_cluster_mutex.c (+50/-16)
ctdb/server/ctdb_control.c (+12/-0)
ctdb/server/ctdb_daemon.c (+5/-7)
ctdb/server/ctdb_freeze.c (+8/-1)
ctdb/server/ctdb_ltdb_server.c (+16/-11)
ctdb/server/ctdb_mutex_fcntl_helper.c (+346/-15)
ctdb/server/ctdb_recoverd.c (+125/-351)
ctdb/server/ctdb_recovery_helper.c (+1107/-371)
ctdb/server/ctdb_server.c (+8/-8)
ctdb/server/ctdb_takeover.c (+1/-1)
ctdb/server/ctdb_vacuum.c (+461/-79)
ctdb/tcp/ctdb_tcp.h (+2/-1)
ctdb/tcp/tcp_connect.c (+71/-49)
ctdb/tcp/tcp_init.c (+9/-12)
ctdb/tcp/tcp_io.c (+2/-3)
ctdb/tests/CLUSTER/complex/11_ctdb_delip_removes_ip.sh (+3/-12)
ctdb/tests/CLUSTER/complex/18_ctdb_reloadips.sh (+12/-21)
ctdb/tests/CLUSTER/complex/30_nfs_tickle_killtcp.sh (+14/-23)
ctdb/tests/CLUSTER/complex/31_nfs_tickle.sh (+15/-24)
ctdb/tests/CLUSTER/complex/32_cifs_tickle.sh (+15/-24)
ctdb/tests/CLUSTER/complex/33_gratuitous_arp.sh (+74/-0)
ctdb/tests/CLUSTER/complex/34_nfs_tickle_restart.sh (+13/-22)
ctdb/tests/CLUSTER/complex/36_smb_reset_server.sh (+11/-20)
ctdb/tests/CLUSTER/complex/37_nfs_reset_server.sh (+11/-20)
ctdb/tests/CLUSTER/complex/41_failover_ping_discrete.sh (+56/-0)
ctdb/tests/CLUSTER/complex/42_failover_ssh_hostname.sh (+18/-27)
ctdb/tests/CLUSTER/complex/43_failover_nfs_basic.sh (+62/-0)
ctdb/tests/CLUSTER/complex/44_failover_nfs_oneway.sh (+24/-33)
ctdb/tests/CLUSTER/complex/45_failover_nfs_kill.sh (+22/-31)
ctdb/tests/CLUSTER/complex/60_rogueip_releaseip.sh (+5/-15)
ctdb/tests/CLUSTER/complex/61_rogueip_takeip.sh (+5/-15)
ctdb/tests/CLUSTER/complex/scripts/local.bash (+31/-14)
ctdb/tests/INTEGRATION/database/basics.001.attach.sh (+68/-0)
ctdb/tests/INTEGRATION/database/basics.002.attach.sh (+135/-0)
ctdb/tests/INTEGRATION/database/basics.004.wipe.sh (+75/-0)
ctdb/tests/INTEGRATION/database/basics.010.backup_restore.sh (+118/-0)
ctdb/tests/INTEGRATION/database/fetch.001.ring.sh (+44/-0)
ctdb/tests/INTEGRATION/database/recovery.001.volatile.sh (+130/-0)
ctdb/tests/INTEGRATION/database/recovery.002.large.sh (+124/-0)
ctdb/tests/INTEGRATION/database/recovery.003.no_resurrect.sh (+69/-0)
ctdb/tests/INTEGRATION/database/recovery.010.persistent.sh (+122/-0)
ctdb/tests/INTEGRATION/database/recovery.011.continue.sh (+86/-0)
ctdb/tests/INTEGRATION/database/scripts/local.bash (+84/-0)
ctdb/tests/INTEGRATION/database/transaction.001.ptrans.sh (+127/-0)
ctdb/tests/INTEGRATION/database/transaction.002.loop.sh (+39/-0)
ctdb/tests/INTEGRATION/database/transaction.003.loop_recovery.sh (+61/-0)
ctdb/tests/INTEGRATION/database/transaction.004.update_record.sh (+97/-0)
ctdb/tests/INTEGRATION/database/transaction.010.loop_recovery.sh (+62/-0)
ctdb/tests/INTEGRATION/database/traverse.001.one.sh (+128/-0)
ctdb/tests/INTEGRATION/database/traverse.002.many.sh (+70/-0)
ctdb/tests/INTEGRATION/database/vacuum.001.fast.sh (+159/-0)
ctdb/tests/INTEGRATION/database/vacuum.002.full.sh (+96/-0)
ctdb/tests/INTEGRATION/database/vacuum.003.recreate.sh (+139/-0)
ctdb/tests/INTEGRATION/database/vacuum.030.locked.sh (+102/-0)
ctdb/tests/INTEGRATION/database/vacuum.031.locked.sh (+114/-0)
ctdb/tests/INTEGRATION/database/vacuum.032.locked.sh (+102/-0)
ctdb/tests/INTEGRATION/database/vacuum.033.locked.sh (+117/-0)
ctdb/tests/INTEGRATION/database/vacuum.034.locked.sh (+129/-0)
ctdb/tests/INTEGRATION/failover/pubips.001.list.sh (+71/-0)
ctdb/tests/INTEGRATION/failover/pubips.010.addip.sh (+35/-0)
ctdb/tests/INTEGRATION/failover/pubips.011.delip.sh (+26/-0)
ctdb/tests/INTEGRATION/failover/pubips.012.reloadips.sh (+133/-0)
ctdb/tests/INTEGRATION/failover/pubips.013.failover_noop.sh (+49/-0)
ctdb/tests/INTEGRATION/failover/pubips.014.iface_gc.sh (+58/-0)
ctdb/tests/INTEGRATION/failover/pubips.020.moveip.sh (+80/-0)
ctdb/tests/INTEGRATION/failover/pubips.030.disable_enable.sh (+30/-0)
ctdb/tests/INTEGRATION/failover/pubips.032.stop_continue.sh (+28/-0)
ctdb/tests/INTEGRATION/failover/pubips.040.NoIPTakeover.sh (+80/-0)
ctdb/tests/INTEGRATION/failover/pubips.050.missing_ip.sh (+78/-0)
ctdb/tests/INTEGRATION/simple/README (+2/-0)
ctdb/tests/INTEGRATION/simple/basics.000.onnode.sh (+29/-0)
ctdb/tests/INTEGRATION/simple/basics.001.listnodes.sh (+60/-0)
ctdb/tests/INTEGRATION/simple/basics.002.tunables.sh (+74/-0)
ctdb/tests/INTEGRATION/simple/basics.003.ping.sh (+52/-0)
ctdb/tests/INTEGRATION/simple/basics.004.getpid.sh (+77/-0)
ctdb/tests/INTEGRATION/simple/basics.005.process_exists.sh (+90/-0)
ctdb/tests/INTEGRATION/simple/basics.010.statistics.sh (+38/-0)
ctdb/tests/INTEGRATION/simple/basics.011.statistics_reset.sh (+83/-0)
ctdb/tests/INTEGRATION/simple/cluster.001.isnotrecmaster.sh (+52/-0)
ctdb/tests/INTEGRATION/simple/cluster.002.recmaster_yield.sh (+51/-0)
ctdb/tests/INTEGRATION/simple/cluster.010.getrelock.sh (+34/-0)
ctdb/tests/INTEGRATION/simple/cluster.012.reclock_command.sh (+25/-0)
ctdb/tests/INTEGRATION/simple/cluster.015.reclock_remove_lock.sh (+90/-0)
ctdb/tests/INTEGRATION/simple/cluster.016.reclock_move_lock_dir.sh (+74/-0)
ctdb/tests/INTEGRATION/simple/cluster.020.message_ring.sh (+64/-0)
ctdb/tests/INTEGRATION/simple/cluster.021.tunnel_ring.sh (+45/-0)
ctdb/tests/INTEGRATION/simple/cluster.090.unreachable.sh (+67/-0)
ctdb/tests/INTEGRATION/simple/cluster.091.version_check.sh (+62/-0)
ctdb/tests/INTEGRATION/simple/debug.001.getdebug.sh (+62/-0)
ctdb/tests/INTEGRATION/simple/debug.002.setdebug.sh (+81/-0)
ctdb/tests/INTEGRATION/simple/debug.003.dumpmemory.sh (+38/-0)
ctdb/tests/INTEGRATION/simple/eventscripts.001.zero_scripts.sh (+23/-0)
ctdb/tests/INTEGRATION/simple/eventscripts.090.debug_hung.sh (+86/-0)
ctdb/tests/README (+41/-75)
ctdb/tests/UNIT/cunit/cluster_mutex_001.sh (+59/-0)
ctdb/tests/UNIT/cunit/cluster_mutex_002.sh (+91/-0)
ctdb/tests/UNIT/cunit/cluster_mutex_003.sh (+68/-0)
ctdb/tests/UNIT/cunit/cmdline_test_001.sh (+41/-1)
ctdb/tests/UNIT/cunit/comm_test_002.sh (+1/-1)
ctdb/tests/UNIT/cunit/conf_test_001.sh (+32/-4)
ctdb/tests/UNIT/cunit/config_test_001.sh (+1/-1)
ctdb/tests/UNIT/cunit/config_test_002.sh (+1/-1)
ctdb/tests/UNIT/cunit/config_test_003.sh (+1/-1)
ctdb/tests/UNIT/cunit/config_test_004.sh (+1/-1)
ctdb/tests/UNIT/cunit/config_test_005.sh (+1/-1)
ctdb/tests/UNIT/cunit/config_test_006.sh (+1/-1)
ctdb/tests/UNIT/cunit/config_test_007.sh (+1/-1)
ctdb/tests/UNIT/cunit/event_script_test_001.sh (+1/-1)
ctdb/tests/UNIT/cunit/line_test_001.sh (+1/-1)
ctdb/tests/UNIT/cunit/path_tests_001.sh (+1/-1)
ctdb/tests/UNIT/cunit/pidfile_test_001.sh (+1/-1)
ctdb/tests/UNIT/cunit/porting_tests_001.sh (+1/-1)
ctdb/tests/UNIT/cunit/protocol_test_101.sh (+1/-1)
ctdb/tests/UNIT/cunit/run_event_001.sh (+1/-1)
ctdb/tests/UNIT/cunit/run_proc_001.sh (+3/-3)
ctdb/tests/UNIT/cunit/sock_daemon_test_001.sh (+2/-2)
ctdb/tests/UNIT/cunit/sock_io_test_001.sh (+1/-1)
ctdb/tests/UNIT/cunit/system_socket_test_001.sh (+1/-1)
ctdb/tests/UNIT/eventd/scripts/local.sh (+2/-2)
ctdb/tests/UNIT/eventscripts/01.reclock.init.001.sh (+1/-3)
ctdb/tests/UNIT/eventscripts/01.reclock.init.002.sh (+2/-7)
ctdb/tests/UNIT/eventscripts/01.reclock.init.003.sh (+20/-0)
ctdb/tests/UNIT/eventscripts/13.per_ip_routing.012.sh (+29/-0)
ctdb/tests/UNIT/eventscripts/13.per_ip_routing.013.sh (+23/-0)
ctdb/tests/UNIT/eventscripts/13.per_ip_routing.014.sh (+29/-0)
ctdb/tests/UNIT/eventscripts/13.per_ip_routing.015.sh (+29/-0)
ctdb/tests/UNIT/eventscripts/13.per_ip_routing.018.sh (+21/-0)
ctdb/tests/UNIT/eventscripts/13.per_ip_routing.019.sh (+23/-0)
ctdb/tests/UNIT/eventscripts/13.per_ip_routing.021.sh (+15/-0)
ctdb/tests/UNIT/eventscripts/13.per_ip_routing.022.sh (+15/-0)
ctdb/tests/UNIT/eventscripts/13.per_ip_routing.023.sh (+25/-0)
ctdb/tests/UNIT/eventscripts/13.per_ip_routing.024.sh (+30/-0)
ctdb/tests/UNIT/eventscripts/20.multipathd.monitor.001.sh (+2/-1)
ctdb/tests/UNIT/eventscripts/20.multipathd.monitor.004.sh (+15/-0)
ctdb/tests/UNIT/eventscripts/31.clamd.monitor.002.sh (+16/-0)
ctdb/tests/UNIT/eventscripts/40.vsftpd.monitor.002.sh (+19/-0)
ctdb/tests/UNIT/eventscripts/40.vsftpd.shutdown.002.sh (+12/-0)
ctdb/tests/UNIT/eventscripts/40.vsftpd.startup.002.sh (+12/-0)
ctdb/tests/UNIT/eventscripts/41.httpd.monitor.002.sh (+30/-0)
ctdb/tests/UNIT/eventscripts/41.httpd.shutdown.002.sh (+12/-0)
ctdb/tests/UNIT/eventscripts/41.httpd.startup.002.sh (+12/-0)
ctdb/tests/UNIT/eventscripts/49.winbind.monitor.101.sh (+2/-3)
ctdb/tests/UNIT/eventscripts/49.winbind.shutdown.002.sh (+12/-0)
ctdb/tests/UNIT/eventscripts/49.winbind.startup.002.sh (+12/-0)
ctdb/tests/UNIT/eventscripts/50.samba.monitor.101.sh (+11/-0)
ctdb/tests/UNIT/eventscripts/50.samba.monitor.103.sh (+13/-0)
ctdb/tests/UNIT/eventscripts/50.samba.monitor.104.sh (+13/-0)
ctdb/tests/UNIT/eventscripts/50.samba.monitor.105.sh (+12/-0)
ctdb/tests/UNIT/eventscripts/50.samba.monitor.106.sh (+15/-0)
ctdb/tests/UNIT/eventscripts/50.samba.monitor.110.sh (+20/-0)
ctdb/tests/UNIT/eventscripts/50.samba.monitor.111.sh (+25/-0)
ctdb/tests/UNIT/eventscripts/50.samba.monitor.112.sh (+3/-6)
ctdb/tests/UNIT/eventscripts/50.samba.monitor.113.sh (+4/-6)
ctdb/tests/UNIT/eventscripts/50.samba.shutdown.001.sh (+12/-0)
ctdb/tests/UNIT/eventscripts/50.samba.shutdown.002.sh (+6/-3)
ctdb/tests/UNIT/eventscripts/50.samba.shutdown.011.sh (+6/-3)
ctdb/tests/UNIT/eventscripts/50.samba.startup.011.sh (+15/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.101.sh (+11/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.102.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.103.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.104.sh (+17/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.105.sh (+10/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.106.sh (+11/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.107.sh (+5/-2)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.108.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.109.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.111.sh (+3/-1)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.112.sh (+13/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.113.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.114.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.121.sh (+15/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.122.sh (+18/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.131.sh (+11/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.132.sh (+15/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.141.sh (+13/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.142.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.143.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.144.sh (+13/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.151.sh (+3/-1)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.152.sh (+15/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.153.sh (+15/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.161.sh (+12/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.monitor.162.sh (+15/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.multi.001.sh (+19/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.multi.002.sh (+17/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.releaseip.001.sh (+5/-4)
ctdb/tests/UNIT/eventscripts/60.nfs.releaseip.002.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.shutdown.001.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.shutdown.002.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.startup.001.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.startup.002.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.takeip.001.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/60.nfs.takeip.002.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/91.lvs.001.sh (+54/-0)
ctdb/tests/UNIT/eventscripts/91.lvs.ipreallocated.011.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/91.lvs.ipreallocated.012.sh (+17/-0)
ctdb/tests/UNIT/eventscripts/91.lvs.ipreallocated.013.sh (+17/-0)
ctdb/tests/UNIT/eventscripts/91.lvs.ipreallocated.014.sh (+27/-0)
ctdb/tests/UNIT/eventscripts/91.lvs.monitor.001.sh (+11/-0)
ctdb/tests/UNIT/eventscripts/91.lvs.monitor.002.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/91.lvs.monitor.003.sh (+19/-0)
ctdb/tests/UNIT/eventscripts/91.lvs.shutdown.001.sh (+11/-0)
ctdb/tests/UNIT/eventscripts/91.lvs.shutdown.002.sh (+18/-0)
ctdb/tests/UNIT/eventscripts/91.lvs.startup.001.sh (+11/-0)
ctdb/tests/UNIT/eventscripts/91.lvs.startup.002.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/README (+46/-0)
ctdb/tests/UNIT/eventscripts/etc-ctdb/public_addresses (+9/-0)
ctdb/tests/UNIT/eventscripts/etc-ctdb/rc.local (+61/-0)
ctdb/tests/UNIT/eventscripts/etc/init.d/nfs (+7/-0)
ctdb/tests/UNIT/eventscripts/etc/init.d/nfslock (+7/-0)
ctdb/tests/UNIT/eventscripts/etc/samba/smb.conf (+42/-0)
ctdb/tests/UNIT/eventscripts/etc/sysconfig/nfs (+2/-0)
ctdb/tests/UNIT/eventscripts/scripts/00.ctdb.sh (+29/-0)
ctdb/tests/UNIT/eventscripts/scripts/01.reclock.sh (+16/-0)
ctdb/tests/UNIT/eventscripts/scripts/05.system.sh (+46/-0)
ctdb/tests/UNIT/eventscripts/scripts/06.nfs.sh (+4/-0)
ctdb/tests/UNIT/eventscripts/scripts/10.interface.sh (+72/-0)
ctdb/tests/UNIT/eventscripts/scripts/13.per_ip_routing.sh (+42/-0)
ctdb/tests/UNIT/eventscripts/scripts/20.multipathd.sh (+24/-0)
ctdb/tests/UNIT/eventscripts/scripts/31.clamd.sh (+8/-0)
ctdb/tests/UNIT/eventscripts/scripts/40.vsftpd.sh (+12/-0)
ctdb/tests/UNIT/eventscripts/scripts/41.httpd.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/scripts/49.winbind.sh (+26/-0)
ctdb/tests/UNIT/eventscripts/scripts/50.samba.sh (+54/-0)
ctdb/tests/UNIT/eventscripts/scripts/60.nfs.sh (+5/-5)
ctdb/tests/UNIT/eventscripts/scripts/91.lvs.sh (+76/-0)
ctdb/tests/UNIT/eventscripts/scripts/local.sh (+14/-21)
ctdb/tests/UNIT/eventscripts/scripts/statd-callout.sh (+65/-0)
ctdb/tests/UNIT/eventscripts/statd-callout.001.sh (+13/-0)
ctdb/tests/UNIT/eventscripts/statd-callout.002.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/statd-callout.003.sh (+16/-0)
ctdb/tests/UNIT/eventscripts/statd-callout.004.sh (+17/-0)
ctdb/tests/UNIT/eventscripts/statd-callout.005.sh (+25/-0)
ctdb/tests/UNIT/eventscripts/statd-callout.006.sh (+27/-0)
ctdb/tests/UNIT/eventscripts/statd-callout.007.sh (+14/-0)
ctdb/tests/UNIT/eventscripts/stubs/ctdb (+2/-2)
ctdb/tests/UNIT/eventscripts/stubs/ctdb-config (+2/-0)
ctdb/tests/UNIT/eventscripts/stubs/ctdb_killtcp (+9/-0)
ctdb/tests/UNIT/eventscripts/stubs/ctdb_lvs (+52/-0)
ctdb/tests/UNIT/eventscripts/stubs/ctdb_natgw (+34/-0)
ctdb/tests/UNIT/eventscripts/stubs/date (+7/-0)
ctdb/tests/UNIT/eventscripts/stubs/df (+38/-0)
ctdb/tests/UNIT/eventscripts/stubs/ethtool (+12/-0)
ctdb/tests/UNIT/eventscripts/stubs/exportfs (+13/-0)
ctdb/tests/UNIT/eventscripts/stubs/id (+3/-0)
ctdb/tests/UNIT/eventscripts/stubs/ip6tables (+5/-0)
ctdb/tests/UNIT/eventscripts/stubs/iptables (+5/-0)
ctdb/tests/UNIT/eventscripts/stubs/kill (+7/-0)
ctdb/tests/UNIT/eventscripts/stubs/killall (+7/-0)
ctdb/tests/UNIT/eventscripts/stubs/multipath (+36/-0)
ctdb/tests/UNIT/eventscripts/stubs/net (+5/-0)
ctdb/tests/UNIT/eventscripts/stubs/pidof (+16/-0)
ctdb/tests/UNIT/eventscripts/stubs/pkill (+7/-0)
ctdb/tests/UNIT/eventscripts/stubs/ps (+12/-0)
ctdb/tests/UNIT/eventscripts/stubs/rm (+6/-0)
ctdb/tests/UNIT/eventscripts/stubs/rpc.lockd (+6/-0)
ctdb/tests/UNIT/eventscripts/stubs/rpc.mountd (+6/-0)
ctdb/tests/UNIT/eventscripts/stubs/rpc.rquotad (+6/-0)
ctdb/tests/UNIT/eventscripts/stubs/rpc.statd (+6/-0)
ctdb/tests/UNIT/eventscripts/stubs/rpcinfo (+73/-0)
ctdb/tests/UNIT/eventscripts/stubs/service (+64/-0)
ctdb/tests/UNIT/eventscripts/stubs/sleep (+9/-0)
ctdb/tests/UNIT/eventscripts/stubs/smnotify (+38/-0)
ctdb/tests/UNIT/eventscripts/stubs/tdbdump (+9/-0)
ctdb/tests/UNIT/eventscripts/stubs/tdbtool (+33/-0)
ctdb/tests/UNIT/eventscripts/stubs/testparm (+85/-0)
ctdb/tests/UNIT/eventscripts/stubs/timeout (+8/-0)
ctdb/tests/UNIT/eventscripts/stubs/wbinfo (+7/-0)
ctdb/tests/UNIT/onnode/0001.sh (+24/-0)
ctdb/tests/UNIT/onnode/0002.sh (+16/-0)
ctdb/tests/UNIT/onnode/0003.sh (+16/-0)
ctdb/tests/UNIT/onnode/0004.sh (+16/-0)
ctdb/tests/UNIT/onnode/0005.sh (+13/-0)
ctdb/tests/UNIT/onnode/0006.sh (+15/-0)
ctdb/tests/UNIT/onnode/0010.sh (+13/-0)
ctdb/tests/UNIT/onnode/0011.sh (+13/-0)
ctdb/tests/UNIT/onnode/0070.sh (+32/-0)
ctdb/tests/UNIT/onnode/0071.sh (+29/-0)
ctdb/tests/UNIT/onnode/0072.sh (+29/-0)
ctdb/tests/UNIT/onnode/0075.sh (+29/-0)
ctdb/tests/UNIT/onnode/etc-ctdb/nodes (+4/-0)
ctdb/tests/UNIT/onnode/scripts/local.sh (+64/-0)
ctdb/tests/UNIT/onnode/stubs/ctdb (+19/-0)
ctdb/tests/UNIT/onnode/stubs/ssh (+2/-0)
ctdb/tests/UNIT/shellcheck/base_scripts.sh (+12/-0)
ctdb/tests/UNIT/shellcheck/ctdb_helpers.sh (+9/-0)
ctdb/tests/UNIT/shellcheck/ctdbd_wrapper.sh (+7/-0)
ctdb/tests/UNIT/shellcheck/event_scripts.sh (+7/-0)
ctdb/tests/UNIT/shellcheck/functions.sh (+7/-0)
ctdb/tests/UNIT/shellcheck/init_script.sh (+20/-0)
ctdb/tests/UNIT/shellcheck/scripts/local.sh (+37/-0)
ctdb/tests/UNIT/shellcheck/tests.sh (+29/-0)
ctdb/tests/UNIT/shellcheck/tools.sh (+9/-0)
ctdb/tests/UNIT/takeover/README (+5/-0)
ctdb/tests/UNIT/takeover/det.001.sh (+36/-0)
ctdb/tests/UNIT/takeover/det.002.sh (+33/-0)
ctdb/tests/UNIT/takeover/det.003.sh (+30/-0)
ctdb/tests/UNIT/takeover/lcp2.001.sh (+31/-0)
ctdb/tests/UNIT/takeover/lcp2.002.sh (+31/-0)
ctdb/tests/UNIT/takeover/lcp2.003.sh (+31/-0)
ctdb/tests/UNIT/takeover/lcp2.004.sh (+37/-0)
ctdb/tests/UNIT/takeover/lcp2.006.sh (+31/-0)
ctdb/tests/UNIT/takeover/lcp2.007.sh (+31/-0)
ctdb/tests/UNIT/takeover/lcp2.008.sh (+31/-0)
ctdb/tests/UNIT/takeover/lcp2.009.sh (+31/-0)
ctdb/tests/UNIT/takeover/lcp2.010.sh (+32/-0)
ctdb/tests/UNIT/takeover/lcp2.011.sh (+45/-0)
ctdb/tests/UNIT/takeover/lcp2.012.sh (+33/-0)
ctdb/tests/UNIT/takeover/lcp2.013.sh (+33/-0)
ctdb/tests/UNIT/takeover/lcp2.014.sh (+31/-0)
ctdb/tests/UNIT/takeover/lcp2.015.sh (+31/-0)
ctdb/tests/UNIT/takeover/lcp2.016.sh (+31/-0)
ctdb/tests/UNIT/takeover/lcp2.024.sh (+42/-0)
ctdb/tests/UNIT/takeover/lcp2.025.sh (+33/-0)
ctdb/tests/UNIT/takeover/lcp2.027.sh (+45/-0)
ctdb/tests/UNIT/takeover/lcp2.028.sh (+45/-0)
ctdb/tests/UNIT/takeover/lcp2.029.sh (+111/-0)
ctdb/tests/UNIT/takeover/lcp2.033.sh (+74/-0)
ctdb/tests/UNIT/takeover/lcp2.034.sh (+21/-0)
ctdb/tests/UNIT/takeover/nondet.001.sh (+35/-0)
ctdb/tests/UNIT/takeover/nondet.002.sh (+32/-0)
ctdb/tests/UNIT/takeover/nondet.003.sh (+29/-0)
ctdb/tests/UNIT/takeover/scripts/local.sh (+30/-0)
ctdb/tests/UNIT/takeover_helper/000.sh (+22/-0)
ctdb/tests/UNIT/takeover_helper/010.sh (+33/-0)
ctdb/tests/UNIT/takeover_helper/011.sh (+33/-0)
ctdb/tests/UNIT/takeover_helper/012.sh (+33/-0)
ctdb/tests/UNIT/takeover_helper/013.sh (+33/-0)
ctdb/tests/UNIT/takeover_helper/014.sh (+37/-0)
ctdb/tests/UNIT/takeover_helper/016.sh (+36/-0)
ctdb/tests/UNIT/takeover_helper/017.sh (+36/-0)
ctdb/tests/UNIT/takeover_helper/018.sh (+34/-0)
ctdb/tests/UNIT/takeover_helper/019.sh (+37/-0)
ctdb/tests/UNIT/takeover_helper/021.sh (+39/-0)
ctdb/tests/UNIT/takeover_helper/022.sh (+40/-0)
ctdb/tests/UNIT/takeover_helper/023.sh (+41/-0)
ctdb/tests/UNIT/takeover_helper/024.sh (+43/-0)
ctdb/tests/UNIT/takeover_helper/025.sh (+37/-0)
ctdb/tests/UNIT/takeover_helper/026.sh (+41/-0)
ctdb/tests/UNIT/takeover_helper/027.sh (+33/-0)
ctdb/tests/UNIT/takeover_helper/028.sh (+33/-0)
ctdb/tests/UNIT/takeover_helper/030.sh (+35/-0)
ctdb/tests/UNIT/takeover_helper/031.sh (+55/-0)
ctdb/tests/UNIT/takeover_helper/110.sh (+29/-0)
ctdb/tests/UNIT/takeover_helper/111.sh (+40/-0)
ctdb/tests/UNIT/takeover_helper/120.sh (+40/-0)
ctdb/tests/UNIT/takeover_helper/121.sh (+40/-0)
ctdb/tests/UNIT/takeover_helper/122.sh (+40/-0)
ctdb/tests/UNIT/takeover_helper/130.sh (+41/-0)
ctdb/tests/UNIT/takeover_helper/131.sh (+40/-0)
ctdb/tests/UNIT/takeover_helper/132.sh (+42/-0)
ctdb/tests/UNIT/takeover_helper/140.sh (+33/-0)
ctdb/tests/UNIT/takeover_helper/150.sh (+31/-0)
ctdb/tests/UNIT/takeover_helper/160.sh (+31/-0)
ctdb/tests/UNIT/takeover_helper/210.sh (+29/-0)
ctdb/tests/UNIT/takeover_helper/211.sh (+40/-0)
ctdb/tests/UNIT/takeover_helper/220.sh (+40/-0)
ctdb/tests/UNIT/takeover_helper/230.sh (+41/-0)
ctdb/tests/UNIT/takeover_helper/240.sh (+33/-0)
ctdb/tests/UNIT/takeover_helper/250.sh (+31/-0)
ctdb/tests/UNIT/takeover_helper/260.sh (+31/-0)
ctdb/tests/UNIT/takeover_helper/scripts/local.sh (+108/-0)
ctdb/tests/UNIT/tool/README (+17/-0)
ctdb/tests/UNIT/tool/ctdb.attach.001.sh (+35/-0)
ctdb/tests/UNIT/tool/ctdb.attach.002.sh (+35/-0)
ctdb/tests/UNIT/tool/ctdb.attach.003.sh (+35/-0)
ctdb/tests/UNIT/tool/ctdb.ban.001.sh (+35/-0)
ctdb/tests/UNIT/tool/ctdb.ban.002.sh (+23/-0)
ctdb/tests/UNIT/tool/ctdb.ban.003.sh (+23/-0)
ctdb/tests/UNIT/tool/ctdb.catdb.001.sh (+80/-0)
ctdb/tests/UNIT/tool/ctdb.catdb.002.sh (+86/-0)
ctdb/tests/UNIT/tool/ctdb.cattdb.001.sh (+80/-0)
ctdb/tests/UNIT/tool/ctdb.cattdb.002.sh (+86/-0)
ctdb/tests/UNIT/tool/ctdb.continue.001.sh (+23/-0)
ctdb/tests/UNIT/tool/ctdb.continue.002.sh (+23/-0)
ctdb/tests/UNIT/tool/ctdb.continue.003.sh (+23/-0)
ctdb/tests/UNIT/tool/ctdb.deletekey.001.sh (+34/-0)
ctdb/tests/UNIT/tool/ctdb.disable.001.sh (+23/-0)
ctdb/tests/UNIT/tool/ctdb.disable.002.sh (+23/-0)
ctdb/tests/UNIT/tool/ctdb.disable.003.sh (+23/-0)
ctdb/tests/UNIT/tool/ctdb.disable.004.sh (+15/-0)
ctdb/tests/UNIT/tool/ctdb.enable.001.sh (+23/-0)
ctdb/tests/UNIT/tool/ctdb.enable.002.sh (+23/-0)
ctdb/tests/UNIT/tool/ctdb.enable.003.sh (+23/-0)
ctdb/tests/UNIT/tool/ctdb.getcapabilities.001.sh (+19/-0)
ctdb/tests/UNIT/tool/ctdb.getcapabilities.002.sh (+19/-0)
ctdb/tests/UNIT/tool/ctdb.getcapabilities.003.sh (+28/-0)
ctdb/tests/UNIT/tool/ctdb.getcapabilities.004.sh (+39/-0)
ctdb/tests/UNIT/tool/ctdb.getdbmap.001.sh (+34/-0)
ctdb/tests/UNIT/tool/ctdb.getdbseqnum.001.sh (+41/-0)
ctdb/tests/UNIT/tool/ctdb.getdbseqnum.002.sh (+36/-0)
ctdb/tests/UNIT/tool/ctdb.getdbstatus.001.sh (+108/-0)
ctdb/tests/UNIT/tool/ctdb.getdbstatus.002.sh (+108/-0)
ctdb/tests/UNIT/tool/ctdb.getpid.001.sh (+17/-0)
ctdb/tests/UNIT/tool/ctdb.getreclock.001.sh (+16/-0)
ctdb/tests/UNIT/tool/ctdb.getreclock.002.sh (+21/-0)
ctdb/tests/UNIT/tool/ctdb.getvar.001.sh (+35/-0)
ctdb/tests/UNIT/tool/ctdb.getvar.002.sh (+17/-0)
ctdb/tests/UNIT/tool/ctdb.ifaces.001.sh (+24/-0)
ctdb/tests/UNIT/tool/ctdb.ip.001.sh (+17/-0)
ctdb/tests/UNIT/tool/ctdb.ip.002.sh (+17/-0)
ctdb/tests/UNIT/tool/ctdb.ip.003.sh (+30/-0)
ctdb/tests/UNIT/tool/ctdb.ip.004.sh (+29/-0)
ctdb/tests/UNIT/tool/ctdb.ip.005.sh (+30/-0)
ctdb/tests/UNIT/tool/ctdb.ip.006.sh (+30/-0)
ctdb/tests/UNIT/tool/ctdb.ip.007.sh (+36/-0)
ctdb/tests/UNIT/tool/ctdb.ipinfo.001.sh (+18/-0)
ctdb/tests/UNIT/tool/ctdb.ipinfo.002.sh (+32/-0)
ctdb/tests/UNIT/tool/ctdb.ipinfo.003.sh (+35/-0)
ctdb/tests/UNIT/tool/ctdb.listnodes.001.sh (+20/-0)
ctdb/tests/UNIT/tool/ctdb.listnodes.002.sh (+19/-0)
ctdb/tests/UNIT/tool/ctdb.listvars.001.sh (+66/-0)
ctdb/tests/UNIT/tool/ctdb.lvs.001.sh (+36/-0)
ctdb/tests/UNIT/tool/ctdb.lvs.002.sh (+46/-0)
ctdb/tests/UNIT/tool/ctdb.lvs.003.sh (+43/-0)
ctdb/tests/UNIT/tool/ctdb.lvs.004.sh (+45/-0)
ctdb/tests/UNIT/tool/ctdb.lvs.005.sh (+46/-0)
ctdb/tests/UNIT/tool/ctdb.lvs.006.sh (+44/-0)
ctdb/tests/UNIT/tool/ctdb.lvs.007.sh (+42/-0)
ctdb/tests/UNIT/tool/ctdb.lvs.008.sh (+66/-0)
ctdb/tests/UNIT/tool/ctdb.natgw.001.sh (+46/-0)
ctdb/tests/UNIT/tool/ctdb.natgw.002.sh (+46/-0)
ctdb/tests/UNIT/tool/ctdb.natgw.003.sh (+43/-0)
ctdb/tests/UNIT/tool/ctdb.natgw.004.sh (+46/-0)
ctdb/tests/UNIT/tool/ctdb.natgw.005.sh (+46/-0)
ctdb/tests/UNIT/tool/ctdb.natgw.006.sh (+46/-0)
ctdb/tests/UNIT/tool/ctdb.natgw.007.sh (+45/-0)
ctdb/tests/UNIT/tool/ctdb.natgw.008.sh (+46/-0)
ctdb/tests/UNIT/tool/ctdb.nodestatus.001.sh (+33/-0)
ctdb/tests/UNIT/tool/ctdb.nodestatus.002.sh (+33/-0)
ctdb/tests/UNIT/tool/ctdb.nodestatus.003.sh (+33/-0)
ctdb/tests/UNIT/tool/ctdb.nodestatus.004.sh (+28/-0)
ctdb/tests/UNIT/tool/ctdb.nodestatus.005.sh (+28/-0)
ctdb/tests/UNIT/tool/ctdb.nodestatus.006.sh (+40/-0)
ctdb/tests/UNIT/tool/ctdb.pdelete.001.sh (+27/-0)
ctdb/tests/UNIT/tool/ctdb.ping.001.sh (+24/-0)
ctdb/tests/UNIT/tool/ctdb.pnn.001.sh (+15/-0)
ctdb/tests/UNIT/tool/ctdb.process-exists.001.sh (+26/-0)
ctdb/tests/UNIT/tool/ctdb.process-exists.002.sh (+28/-0)
ctdb/tests/UNIT/tool/ctdb.process-exists.003.sh (+28/-0)
ctdb/tests/UNIT/tool/ctdb.pstore.001.sh (+24/-0)
ctdb/tests/UNIT/tool/ctdb.ptrans.001.sh (+49/-0)
ctdb/tests/UNIT/tool/ctdb.readkey.001.sh (+20/-0)
ctdb/tests/UNIT/tool/ctdb.recmaster.001.sh (+16/-0)
ctdb/tests/UNIT/tool/ctdb.recmaster.002.sh (+16/-0)
ctdb/tests/UNIT/tool/ctdb.recover.001.sh (+22/-0)
ctdb/tests/UNIT/tool/ctdb.reloadnodes.001.sh (+24/-0)
ctdb/tests/UNIT/tool/ctdb.reloadnodes.002.sh (+30/-0)
ctdb/tests/UNIT/tool/ctdb.reloadnodes.003.sh (+29/-0)
ctdb/tests/UNIT/tool/ctdb.reloadnodes.011.sh (+25/-0)
ctdb/tests/UNIT/tool/ctdb.reloadnodes.012.sh (+24/-0)
ctdb/tests/UNIT/tool/ctdb.reloadnodes.013.sh (+26/-0)
ctdb/tests/UNIT/tool/ctdb.reloadnodes.014.sh (+24/-0)
ctdb/tests/UNIT/tool/ctdb.reloadnodes.015.sh (+26/-0)
ctdb/tests/UNIT/tool/ctdb.reloadnodes.016.sh (+24/-0)
ctdb/tests/UNIT/tool/ctdb.reloadnodes.017.sh (+26/-0)
ctdb/tests/UNIT/tool/ctdb.reloadnodes.018.sh (+29/-0)
ctdb/tests/UNIT/tool/ctdb.reloadnodes.019.sh (+28/-0)
ctdb/tests/UNIT/tool/ctdb.reloadnodes.020.sh (+28/-0)
ctdb/tests/UNIT/tool/ctdb.reloadnodes.021.sh (+26/-0)
ctdb/tests/UNIT/tool/ctdb.reloadnodes.023.sh (+24/-0)
ctdb/tests/UNIT/tool/ctdb.reloadnodes.024.sh (+24/-0)
ctdb/tests/UNIT/tool/ctdb.runstate.001.sh (+15/-0)
ctdb/tests/UNIT/tool/ctdb.runstate.002.sh (+15/-0)
ctdb/tests/UNIT/tool/ctdb.runstate.003.sh (+17/-0)
ctdb/tests/UNIT/tool/ctdb.runstate.004.sh (+15/-0)
ctdb/tests/UNIT/tool/ctdb.runstate.005.sh (+15/-0)
ctdb/tests/UNIT/tool/ctdb.setdbreadonly.001.sh (+53/-0)
ctdb/tests/UNIT/tool/ctdb.setdbreadonly.002.sh (+37/-0)
ctdb/tests/UNIT/tool/ctdb.setdbreadonly.003.sh (+39/-0)
ctdb/tests/UNIT/tool/ctdb.setdbreadonly.004.sh (+37/-0)
ctdb/tests/UNIT/tool/ctdb.setdbreadonly.005.sh (+39/-0)
ctdb/tests/UNIT/tool/ctdb.setdbsticky.001.sh (+53/-0)
ctdb/tests/UNIT/tool/ctdb.setdbsticky.002.sh (+37/-0)
ctdb/tests/UNIT/tool/ctdb.setdbsticky.003.sh (+39/-0)
ctdb/tests/UNIT/tool/ctdb.setdbsticky.004.sh (+37/-0)
ctdb/tests/UNIT/tool/ctdb.setdbsticky.005.sh (+39/-0)
ctdb/tests/UNIT/tool/ctdb.setdebug.001.sh (+23/-0)
ctdb/tests/UNIT/tool/ctdb.setdebug.002.sh (+23/-0)
ctdb/tests/UNIT/tool/ctdb.setdebug.003.sh (+32/-0)
ctdb/tests/UNIT/tool/ctdb.setifacelink.001.sh (+76/-0)
ctdb/tests/UNIT/tool/ctdb.setifacelink.002.sh (+22/-0)
ctdb/tests/UNIT/tool/ctdb.setvar.001.sh (+49/-0)
ctdb/tests/UNIT/tool/ctdb.setvar.002.sh (+17/-0)
ctdb/tests/UNIT/tool/ctdb.status.001.sh (+46/-0)
ctdb/tests/UNIT/tool/ctdb.status.002.sh (+46/-0)
ctdb/tests/UNIT/tool/ctdb.stop.001.sh (+23/-0)
ctdb/tests/UNIT/tool/ctdb.stop.002.sh (+23/-0)
ctdb/tests/UNIT/tool/ctdb.stop.003.sh (+23/-0)
ctdb/tests/UNIT/tool/ctdb.unban.001.sh (+23/-0)
ctdb/tests/UNIT/tool/ctdb.unban.002.sh (+34/-0)
ctdb/tests/UNIT/tool/ctdb.unban.003.sh (+23/-0)
ctdb/tests/UNIT/tool/ctdb.uptime.001.sh (+36/-0)
ctdb/tests/UNIT/tool/ctdb.writekey.001.sh (+31/-0)
ctdb/tests/UNIT/tool/scripts/local.sh (+112/-0)
ctdb/tests/local_daemons.sh (+24/-14)
ctdb/tests/run_tests.sh (+232/-180)
ctdb/tests/scripts/cluster.bash (+18/-0)
ctdb/tests/scripts/common.sh (+33/-10)
ctdb/tests/scripts/integration.bash (+112/-133)
ctdb/tests/scripts/integration_local_daemons.bash (+94/-0)
ctdb/tests/scripts/integration_real_cluster.bash (+64/-0)
ctdb/tests/scripts/script_install_paths.sh (+6/-3)
ctdb/tests/scripts/test_wrap (+4/-14)
ctdb/tests/scripts/unit.sh (+8/-8)
ctdb/tests/src/cluster_mutex_test.c (+741/-0)
ctdb/tests/src/cmdline_test.c (+145/-16)
ctdb/tests/src/db_test_tool.c (+791/-0)
ctdb/tests/src/fake_ctdbd.c (+3/-1)
ctdb/tests/src/protocol_common.c (+13/-0)
ctdb/tests/src/protocol_common.h (+4/-0)
ctdb/tests/src/protocol_common_ctdb.c (+30/-78)
ctdb/tests/src/protocol_ctdb_test.c (+1/-1)
ctdb/tests/src/protocol_types_test.c (+2/-0)
ctdb/tools/ctdb.c (+1/-1)
ctdb/tools/ctdb_diagnostics (+1/-1)
ctdb/tools/onnode (+2/-2)
ctdb/utils/ping_pong/ping_pong.c (+8/-4)
ctdb/utils/scsi_io/scsi_io.c (+10/-10)
ctdb/utils/smnotify/smnotify.c (+5/-5)
ctdb/wscript (+38/-40)
debian/README.source.md (+2/-2)
debian/changelog (+25/-0)
debian/control (+5/-5)
debian/gbp.conf (+1/-1)
debian/libsmbclient.symbols (+4/-0)
debian/libwbclient0.install (+0/-2)
debian/libwbclient0.symbols (+14/-26)
debian/patches/series (+0/-11)
debian/samba-dev.install (+2/-0)
debian/samba-libs.install (+2/-0)
debian/smbclient.install (+2/-0)
debian/watch (+1/-1)
dev/null (+0/-269)
docs-xml/Samba-Developers-Guide/CodingSuggestions.xml (+2/-2)
docs-xml/Samba-Developers-Guide/Tracing.xml (+2/-2)
docs-xml/Samba-Developers-Guide/architecture.xml (+1/-1)
docs-xml/Samba-Developers-Guide/internals.xml (+2/-2)
docs-xml/Samba-Developers-Guide/modules.xml (+2/-2)
docs-xml/Samba-Developers-Guide/parsing.xml (+3/-3)
docs-xml/Samba-Developers-Guide/printing.xml (+1/-1)
docs-xml/Samba-Developers-Guide/unix-smb.xml (+1/-1)
docs-xml/Samba-Developers-Guide/vfs.xml (+7/-7)
docs-xml/archives/THANKS (+1/-1)
docs-xml/archives/history (+1/-1)
docs-xml/build/DTD/samba.entities (+1/-1)
docs-xml/manpages/mdfind.1.xml (+148/-0)
docs-xml/manpages/net.8.xml (+148/-1)
docs-xml/manpages/pam_winbind.8.xml (+49/-11)
docs-xml/manpages/pam_winbind.conf.5.xml (+9/-5)
docs-xml/manpages/rpcclient.1.xml (+2/-2)
docs-xml/manpages/samba-tool.8.xml (+11/-1)
docs-xml/manpages/smbclient.1.xml (+5/-4)
docs-xml/manpages/smbcontrol.1.xml (+10/-0)
docs-xml/manpages/vfs_ceph_snapshots.8.xml (+1/-1)
docs-xml/manpages/vfs_fileid.8.xml (+8/-0)
docs-xml/manpages/vfs_fruit.8.xml (+2/-2)
docs-xml/manpages/vfs_glusterfs_fuse.8.xml (+1/-1)
docs-xml/manpages/vfs_gpfs.8.xml (+4/-4)
docs-xml/manpages/vfs_io_uring.8.xml (+107/-0)
docs-xml/manpages/vfs_nfs4acl_xattr.8.xml (+1/-1)
docs-xml/manpages/vfs_zfsacl.8.xml (+37/-3)
docs-xml/manpages/wbinfo.1.xml (+1/-1)
docs-xml/smbdotconf/base/comment.xml (+1/-0)
docs-xml/smbdotconf/base/doscharset.xml (+0/-1)
docs-xml/smbdotconf/base/netbiosname.xml (+0/-1)
docs-xml/smbdotconf/base/netbiosscope.xml (+0/-1)
docs-xml/smbdotconf/base/path.xml (+1/-0)
docs-xml/smbdotconf/base/realm.xml (+0/-1)
docs-xml/smbdotconf/base/serverstring.xml (+1/-0)
docs-xml/smbdotconf/base/sharebackend.xml (+0/-1)
docs-xml/smbdotconf/base/unixcharset.xml (+0/-1)
docs-xml/smbdotconf/base/workgroup.xml (+0/-1)
docs-xml/smbdotconf/domain/gpoupdatecommand.xml (+0/-1)
docs-xml/smbdotconf/filename/hidefiles.xml (+2/-1)
docs-xml/smbdotconf/filename/manglednames.xml (+2/-2)
docs-xml/smbdotconf/filename/vetofiles.xml (+1/-0)
docs-xml/smbdotconf/filename/vetooplockfiles.xml (+1/-0)
docs-xml/smbdotconf/generate-file-list.sh (+1/-0)
docs-xml/smbdotconf/ldap/ldapadmindn.xml (+1/-1)
docs-xml/smbdotconf/ldap/ldapmaxanonrequest.xml (+18/-0)
docs-xml/smbdotconf/ldap/ldapmaxauthrequest.xml (+18/-0)
docs-xml/smbdotconf/ldap/ldapmaxsearchrequest.xml (+18/-0)
docs-xml/smbdotconf/logging/logfile.xml (+1/-0)
docs-xml/smbdotconf/logging/logging.xml (+1/-0)
docs-xml/smbdotconf/logging/loglevel.xml (+1/-0)
docs-xml/smbdotconf/logon/abortshutdownscript.xml (+2/-1)
docs-xml/smbdotconf/logon/addgroupscript.xml (+1/-0)
docs-xml/smbdotconf/logon/addmachinescript.xml (+2/-1)
docs-xml/smbdotconf/logon/adduserscript.xml (+2/-1)
docs-xml/smbdotconf/logon/addusertogroupscript.xml (+2/-1)
docs-xml/smbdotconf/logon/deletegroupscript.xml (+2/-1)
docs-xml/smbdotconf/logon/deleteuserfromgroupscript.xml (+2/-1)
docs-xml/smbdotconf/logon/deleteuserscript.xml (+2/-1)
docs-xml/smbdotconf/logon/logondrive.xml (+0/-1)
docs-xml/smbdotconf/logon/logonhome.xml (+0/-1)
docs-xml/smbdotconf/logon/logonpath.xml (+0/-1)
docs-xml/smbdotconf/logon/logonscript.xml (+0/-1)
docs-xml/smbdotconf/logon/setprimarygroupscript.xml (+2/-1)
docs-xml/smbdotconf/logon/shutdownscript.xml (+2/-1)
docs-xml/smbdotconf/misc/addsharecommand.xml (+1/-0)
docs-xml/smbdotconf/misc/afsusernamemap.xml (+0/-1)
docs-xml/smbdotconf/misc/auto_services.xml (+1/-0)
docs-xml/smbdotconf/misc/cachedirectory.xml (+0/-1)
docs-xml/smbdotconf/misc/changesharecommand.xml (+1/-0)
docs-xml/smbdotconf/misc/configfile.xml (+1/-0)
docs-xml/smbdotconf/misc/ctdbdsocket.xml (+0/-1)
docs-xml/smbdotconf/misc/defaultservice.xml (+1/-0)
docs-xml/smbdotconf/misc/deletesharecommand.xml (+1/-0)
docs-xml/smbdotconf/misc/dfreecommand.xml (+2/-1)
docs-xml/smbdotconf/misc/dontdescend.xml (+1/-0)
docs-xml/smbdotconf/misc/elasticsearchaddress.xml (+14/-0)
docs-xml/smbdotconf/misc/elasticsearchindex.xml (+16/-0)
docs-xml/smbdotconf/misc/elasticsearchmappings.xml (+14/-0)
docs-xml/smbdotconf/misc/elasticsearchmaxresults.xml (+15/-0)
docs-xml/smbdotconf/misc/elasticsearchport.xml (+14/-0)
docs-xml/smbdotconf/misc/elasticsearchusetls.xml (+14/-0)
docs-xml/smbdotconf/misc/fstype.xml (+0/-1)
docs-xml/smbdotconf/misc/homedirmap.xml (+1/-0)
docs-xml/smbdotconf/misc/lockdirectory.xml (+0/-1)
docs-xml/smbdotconf/misc/magicoutput.xml (+1/-0)
docs-xml/smbdotconf/misc/magicscript.xml (+1/-0)
docs-xml/smbdotconf/misc/messagecommand.xml (+1/-0)
docs-xml/smbdotconf/misc/nbtclientsocketaddress.xml (+0/-1)
docs-xml/smbdotconf/misc/ncalrpcdir.xml (+0/-1)
docs-xml/smbdotconf/misc/panicaction.xml (+2/-1)
docs-xml/smbdotconf/misc/perfcountmodule.xml (+1/-0)
docs-xml/smbdotconf/misc/piddirectory.xml (+0/-1)
docs-xml/smbdotconf/misc/postexec.xml (+1/-0)
docs-xml/smbdotconf/misc/preexec.xml (+1/-0)
docs-xml/smbdotconf/misc/remoteannounce.xml (+1/-0)
docs-xml/smbdotconf/misc/remotebrowsesync.xml (+1/-0)
docs-xml/smbdotconf/misc/rootpostexec.xml (+1/-0)
docs-xml/smbdotconf/misc/rootpreexec.xml (+1/-0)
docs-xml/smbdotconf/misc/spotlight.xml (+1/-1)
docs-xml/smbdotconf/misc/spotlight_backend.xml (+30/-0)
docs-xml/smbdotconf/misc/statedirectory.xml (+0/-1)
docs-xml/smbdotconf/misc/usersharepath.xml (+1/-0)
docs-xml/smbdotconf/misc/utmpdirectory.xml (+0/-1)
docs-xml/smbdotconf/misc/volume.xml (+1/-0)
docs-xml/smbdotconf/misc/wtmpdirectory.xml (+0/-1)
docs-xml/smbdotconf/printing/addportcommand.xml (+1/-0)
docs-xml/smbdotconf/printing/addprintercommand.xml (+1/-0)
docs-xml/smbdotconf/printing/cupsoptions.xml (+1/-0)
docs-xml/smbdotconf/printing/cupsserver.xml (+1/-0)
docs-xml/smbdotconf/printing/deleteprintercommand.xml (+1/-0)
docs-xml/smbdotconf/printing/enumportscommand.xml (+1/-0)
docs-xml/smbdotconf/printing/iprintserver.xml (+1/-0)
docs-xml/smbdotconf/printing/lppausecommand.xml (+0/-1)
docs-xml/smbdotconf/printing/lpqcommand.xml (+0/-1)
docs-xml/smbdotconf/printing/lpresumecommand.xml (+0/-1)
docs-xml/smbdotconf/printing/lprmcommand.xml (+0/-1)
docs-xml/smbdotconf/printing/os2drivermap.xml (+1/-0)
docs-xml/smbdotconf/printing/printcapname.xml (+0/-1)
docs-xml/smbdotconf/printing/printcommand.xml (+0/-1)
docs-xml/smbdotconf/printing/printername.xml (+1/-0)
docs-xml/smbdotconf/printing/printjobusername.xml (+0/-1)
docs-xml/smbdotconf/printing/queuepausecommand.xml (+0/-1)
docs-xml/smbdotconf/printing/queueresumecommand.xml (+0/-1)
docs-xml/smbdotconf/protocol/enableasusupport.xml (+1/-1)
docs-xml/smbdotconf/protocol/nameresolveorder.xml (+1/-1)
docs-xml/smbdotconf/rpc/rpcserverdynamicportrange.xml (+1/-1)
docs-xml/smbdotconf/security/binddnsdir.xml (+0/-1)
docs-xml/smbdotconf/security/checkpasswordscript.xml (+1/-0)
docs-xml/smbdotconf/security/dedicatedkeytabfile.xml (+0/-1)
docs-xml/smbdotconf/security/forcegroup.xml (+1/-0)
docs-xml/smbdotconf/security/forceuser.xml (+1/-0)
docs-xml/smbdotconf/security/guestaccount.xml (+0/-1)
docs-xml/smbdotconf/security/lanmanauth.xml (+2/-2)
docs-xml/smbdotconf/security/lognttokencommand.xml (+1/-0)
docs-xml/smbdotconf/security/mitkdccommand.xml (+0/-1)
docs-xml/smbdotconf/security/ntlmauth.xml (+1/-1)
docs-xml/smbdotconf/security/ntpsigndsocketdirectory.xml (+0/-1)
docs-xml/smbdotconf/security/passdbbackend.xml (+0/-1)
docs-xml/smbdotconf/security/passwdchat.xml (+1/-0)
docs-xml/smbdotconf/security/passwdprogram.xml (+1/-0)
docs-xml/smbdotconf/security/passwordserver.xml (+0/-1)
docs-xml/smbdotconf/security/privatedir.xml (+0/-1)
docs-xml/smbdotconf/security/renameuserscript.xml (+1/-0)
docs-xml/smbdotconf/security/rootdirectory.xml (+1/-0)
docs-xml/smbdotconf/security/smbpasswdfile.xml (+0/-1)
docs-xml/smbdotconf/security/tlscafile.xml (+0/-1)
docs-xml/smbdotconf/security/tlscertfile.xml (+0/-1)
docs-xml/smbdotconf/security/tlscrlfile.xml (+0/-1)
docs-xml/smbdotconf/security/tlsdhparamsfile.xml (+0/-1)
docs-xml/smbdotconf/security/tlskeyfile.xml (+0/-1)
docs-xml/smbdotconf/security/tlspriority.xml (+0/-1)
docs-xml/smbdotconf/security/usernamemap.xml (+1/-0)
docs-xml/smbdotconf/security/usernamemapscript.xml (+1/-0)
docs-xml/smbdotconf/tuning/aiowritebehind.xml (+1/-0)
docs-xml/smbdotconf/tuning/socketoptions.xml (+0/-1)
docs-xml/smbdotconf/vfs/getquotacommand.xml (+2/-1)
docs-xml/smbdotconf/vfs/msdfsproxy.xml (+2/-1)
docs-xml/smbdotconf/vfs/setquotacommand.xml (+2/-1)
docs-xml/smbdotconf/vfs/vfsobjects.xml (+3/-2)
docs-xml/smbdotconf/winbind/templatehomedir.xml (+0/-1)
docs-xml/smbdotconf/winbind/templateshell.xml (+0/-1)
docs-xml/smbdotconf/winbind/winbinddsocketdirectory.xml (+1/-2)
docs-xml/smbdotconf/winbind/winbindseparator.xml (+0/-1)
docs-xml/smbdotconf/wins/winshook.xml (+2/-1)
docs-xml/wscript_build (+10/-13)
docs/manpages/cifsdd.8 (+3/-3)
docs/manpages/dbwrap_tool.1 (+4/-4)
docs/manpages/eventlogadm.8 (+4/-4)
docs/manpages/findsmb.1 (+4/-4)
docs/manpages/idmap_ad.8 (+3/-3)
docs/manpages/idmap_autorid.8 (+3/-3)
docs/manpages/idmap_hash.8 (+3/-3)
docs/manpages/idmap_ldap.8 (+3/-3)
docs/manpages/idmap_nss.8 (+3/-3)
docs/manpages/idmap_rfc2307.8 (+3/-3)
docs/manpages/idmap_rid.8 (+3/-3)
docs/manpages/idmap_script.8 (+3/-3)
docs/manpages/idmap_tdb.8 (+3/-3)
docs/manpages/idmap_tdb2.8 (+3/-3)
docs/manpages/libsmbclient.7 (+4/-4)
docs/manpages/lmhosts.5 (+4/-4)
docs/manpages/log2pcap.1 (+4/-4)
docs/manpages/mdfind.1 (+166/-0)
docs/manpages/mvxattr.1 (+4/-4)
docs/manpages/net.8 (+148/-4)
docs/manpages/nmbd.8 (+4/-4)
docs/manpages/nmblookup.1 (+4/-4)
docs/manpages/ntlm_auth.1 (+4/-4)
docs/manpages/pam_winbind.8 (+34/-7)
docs/manpages/pam_winbind.conf.5 (+9/-9)
docs/manpages/pdbedit.8 (+4/-4)
docs/manpages/profiles.1 (+4/-4)
docs/manpages/rpcclient.1 (+7/-7)
docs/manpages/samba-regedit.8 (+5/-5)
docs/manpages/samba-tool.8 (+11/-5)
docs/manpages/samba.7 (+4/-4)
docs/manpages/samba.8 (+4/-4)
docs/manpages/samba_downgrade_db.8 (+5/-5)
docs/manpages/sharesec.1 (+4/-4)
docs/manpages/smb.conf.5 (+182/-57)
docs/manpages/smbcacls.1 (+5/-5)
docs/manpages/smbclient.1 (+9/-9)
docs/manpages/smbcontrol.1 (+11/-4)
docs/manpages/smbcquotas.1 (+5/-5)
docs/manpages/smbd.8 (+4/-4)
docs/manpages/smbget.1 (+4/-4)
docs/manpages/smbgetrc.5 (+4/-4)
docs/manpages/smbpasswd.5 (+4/-4)
docs/manpages/smbpasswd.8 (+4/-4)
docs/manpages/smbspool.8 (+4/-4)
docs/manpages/smbspool_krb5_wrapper.8 (+3/-3)
docs/manpages/smbstatus.1 (+4/-4)
docs/manpages/smbtar.1 (+4/-4)
docs/manpages/smbtree.1 (+5/-5)
docs/manpages/testparm.1 (+4/-4)
docs/manpages/traffic_learner.7 (+4/-4)
docs/manpages/traffic_replay.7 (+4/-4)
docs/manpages/vfs_acl_tdb.8 (+3/-3)
docs/manpages/vfs_acl_xattr.8 (+3/-3)
docs/manpages/vfs_aio_fork.8 (+4/-4)
docs/manpages/vfs_aio_pthread.8 (+4/-4)
docs/manpages/vfs_audit.8 (+4/-4)
docs/manpages/vfs_btrfs.8 (+4/-4)
docs/manpages/vfs_cacheprime.8 (+4/-4)
docs/manpages/vfs_cap.8 (+4/-4)
docs/manpages/vfs_catia.8 (+3/-3)
docs/manpages/vfs_ceph.8 (+4/-4)
docs/manpages/vfs_ceph_snapshots.8 (+5/-5)
docs/manpages/vfs_commit.8 (+4/-4)
docs/manpages/vfs_crossrename.8 (+4/-4)
docs/manpages/vfs_default_quota.8 (+4/-4)
docs/manpages/vfs_dirsort.8 (+4/-4)
docs/manpages/vfs_extd_audit.8 (+4/-4)
docs/manpages/vfs_fake_perms.8 (+4/-4)
docs/manpages/vfs_fileid.8 (+8/-4)
docs/manpages/vfs_fruit.8 (+5/-5)
docs/manpages/vfs_full_audit.8 (+4/-4)
docs/manpages/vfs_glusterfs.8 (+4/-4)
docs/manpages/vfs_glusterfs_fuse.8 (+5/-5)
docs/manpages/vfs_gpfs.8 (+8/-8)
docs/manpages/vfs_io_uring.8 (+84/-0)
docs/manpages/vfs_linux_xfs_sgid.8 (+4/-4)
docs/manpages/vfs_media_harmony.8 (+4/-4)
docs/manpages/vfs_nfs4acl_xattr.8 (+4/-4)
docs/manpages/vfs_offline.8 (+4/-4)
docs/manpages/vfs_prealloc.8 (+4/-4)
docs/manpages/vfs_preopen.8 (+4/-4)
docs/manpages/vfs_readahead.8 (+4/-4)
docs/manpages/vfs_readonly.8 (+4/-4)
docs/manpages/vfs_recycle.8 (+4/-4)
docs/manpages/vfs_shadow_copy.8 (+4/-4)
docs/manpages/vfs_shadow_copy2.8 (+4/-4)
docs/manpages/vfs_shell_snap.8 (+4/-4)
docs/manpages/vfs_snapper.8 (+4/-4)
docs/manpages/vfs_streams_depot.8 (+3/-3)
docs/manpages/vfs_streams_xattr.8 (+3/-3)
docs/manpages/vfs_syncops.8 (+4/-4)
docs/manpages/vfs_time_audit.8 (+4/-4)
docs/manpages/vfs_tsmsm.8 (+4/-4)
docs/manpages/vfs_unityed_media.8 (+4/-4)
docs/manpages/vfs_virusfilter.8 (+2/-2)
docs/manpages/vfs_worm.8 (+4/-4)
docs/manpages/vfs_xattr_tdb.8 (+3/-3)
docs/manpages/vfs_zfsacl.8 (+70/-7)
docs/manpages/vfstest.1 (+4/-4)
docs/manpages/wbinfo.1 (+5/-5)
docs/manpages/winbind_krb5_localauth.8 (+4/-4)
docs/manpages/winbind_krb5_locator.8 (+4/-4)
docs/manpages/winbindd.8 (+4/-4)
dynconfig/dynconfig.c (+1/-0)
dynconfig/dynconfig.h (+1/-0)
dynconfig/wscript (+12/-7)
examples/VFS/skel_opaque.c (+57/-35)
examples/VFS/skel_transparent.c (+108/-41)
examples/auth/auth_skel.c (+5/-2)
examples/libsmbclient/testutime.c (+1/-1)
examples/misc/adssearch.pl (+12/-5)
examples/winexe/winexe.c (+2/-0)
lib/addns/dnsmarshall.c (+6/-4)
lib/addns/dnsquery.c (+4/-2)
lib/addns/dnssock.c (+1/-1)
lib/afs/afs_funcs.c (+3/-1)
lib/async_req/wscript_build (+1/-1)
lib/audit_logging/audit_logging.c (+4/-5)
lib/audit_logging/wscript_build (+4/-4)
lib/crypto/REQUIREMENTS (+1/-2)
lib/crypto/crypto.h (+0/-3)
lib/crypto/gnutls_helpers.h (+63/-2)
lib/crypto/py_crypto.c (+29/-5)
lib/crypto/wscript_build (+34/-15)
lib/dbwrap/dbwrap.c (+30/-4)
lib/dbwrap/dbwrap.h (+3/-5)
lib/dbwrap/dbwrap_private.h (+3/-1)
lib/dbwrap/dbwrap_rbt.c (+2/-0)
lib/dbwrap/dbwrap_tdb.c (+31/-18)
lib/fuzzing/README.md (+85/-0)
lib/fuzzing/afl-fuzz-main.c (+56/-0)
lib/fuzzing/decode_ndr_X_crash (+137/-0)
lib/fuzzing/fuzz_ldap_decode.c (+66/-0)
lib/fuzzing/fuzz_ldb_dn_explode.c (+47/-0)
lib/fuzzing/fuzz_ldb_ldif_read.c (+50/-0)
lib/fuzzing/fuzz_ldb_parse_binary_decode.c (+49/-0)
lib/fuzzing/fuzz_ldb_parse_control.c (+49/-0)
lib/fuzzing/fuzz_ldb_parse_tree.c (+53/-0)
lib/fuzzing/fuzz_lzxpress.c (+35/-0)
lib/fuzzing/fuzz_ndr_X.c (+330/-0)
lib/fuzzing/fuzz_nmblib_parse_packet.c (+56/-0)
lib/fuzzing/fuzz_oLschema2ldif.c (+71/-0)
lib/fuzzing/fuzz_reg_parse.c (+46/-0)
lib/fuzzing/fuzz_regfio.c (+68/-0)
lib/fuzzing/fuzz_tiniparser.c (+51/-0)
lib/fuzzing/fuzzing.c (+21/-0)
lib/fuzzing/fuzzing.h (+30/-0)
lib/fuzzing/oss-fuzz/build_image.sh (+7/-0)
lib/fuzzing/oss-fuzz/build_samba.sh (+78/-0)
lib/fuzzing/oss-fuzz/check_build.sh (+25/-0)
lib/fuzzing/wscript_build (+172/-0)
lib/krb5_wrap/krb5_samba.c (+6/-50)
lib/krb5_wrap/krb5_samba.h (+0/-2)
lib/ldb-samba/pyldb.c (+7/-7)
lib/ldb/ABI/pyldb-util-2.1.0.sigs (+3/-0)
lib/ldb/ABI/pyldb-util-2.1.1.sigs (+3/-0)
lib/ldb/ABI/pyldb-util-2.1.2.sigs (+3/-0)
lib/ldb/common/ldb.c (+1/-1)
lib/ldb/common/ldb_controls.c (+2/-1)
lib/ldb/ldb_key_value/ldb_kv_index.c (+13/-10)
lib/ldb/ldb_key_value/ldb_kv_search.c (+28/-1)
lib/ldb/modules/asq.c (+3/-9)
lib/ldb/pyldb.c (+65/-62)
lib/ldb/pyldb.h (+10/-2)
lib/ldb/pyldb_util.c (+33/-4)
lib/ldb/tests/ldb_kv_ops_test.c (+11/-2)
lib/ldb/tests/ldb_lmdb_size_test.c (+39/-1)
lib/ldb/tests/ldb_mod_op_test.c (+20/-19)
lib/ldb/tests/python/api.py (+498/-1)
lib/ldb/tests/test_ldb_dn.c (+1/-1)
lib/ldb/wscript (+1/-1)
lib/param/loadparm.c (+77/-10)
lib/param/loadparm.h (+24/-1)
lib/param/param.h (+1/-0)
lib/param/param_table.c (+18/-0)
lib/param/s3_param.h (+0/-1)
lib/pthreadpool/pthreadpool.c (+0/-4)
lib/pthreadpool/wscript_build (+2/-2)
lib/replace/replace.c (+2/-2)
lib/replace/replace.h (+0/-5)
lib/replace/system/filesys.h (+6/-8)
lib/replace/system/time.h (+7/-0)
lib/replace/tests/testsuite.c (+0/-1)
lib/replace/wscript (+18/-7)
lib/replace/xattr.c (+79/-25)
lib/talloc/ABI/pytalloc-util-2.3.0.sigs (+16/-0)
lib/talloc/ABI/pytalloc-util-2.3.1.sigs (+16/-0)
lib/talloc/ABI/talloc-2.3.0.sigs (+65/-0)
lib/talloc/ABI/talloc-2.3.1.sigs (+65/-0)
lib/talloc/pytalloc.h (+4/-0)
lib/talloc/pytalloc_util.c (+11/-14)
lib/talloc/talloc.h (+1/-1)
lib/talloc/testsuite.c (+13/-3)
lib/talloc/wscript (+1/-1)
lib/tdb/ABI/tdb-1.4.3.sigs (+73/-0)
lib/tdb/docs/tracing.txt (+1/-1)
lib/tdb/wscript (+1/-1)
lib/tevent/ABI/tevent-0.10.1.sigs (+126/-0)
lib/tevent/ABI/tevent-0.10.2.sigs (+126/-0)
lib/tevent/wscript (+1/-1)
lib/texpect/texpect.c (+11/-41)
lib/texpect/wscript (+4/-1)
lib/torture/torture.h (+66/-4)
lib/tsocket/tsocket.h (+28/-1)
lib/tsocket/tsocket_bsd.c (+59/-59)
lib/util/asn1.c (+36/-1)
lib/util/asn1.h (+9/-1)
lib/util/charset/iconv.c (+164/-0)
lib/util/charset/tests/convert_string.c (+238/-0)
lib/util/charset/wscript_build (+1/-1)
lib/util/charset/wscript_configure (+13/-0)
lib/util/debug.c (+1/-1)
lib/util/debug_s3.c (+5/-3)
lib/util/genrand.c (+31/-28)
lib/util/genrand.h (+23/-7)
lib/util/genrand_util.c (+3/-3)
lib/util/gpfswrap.c (+28/-0)
lib/util/gpfswrap.h (+4/-0)
lib/util/idtree.h (+0/-5)
lib/util/server_id.c (+14/-8)
lib/util/server_id.h (+1/-0)
lib/util/talloc_report_printf.c (+109/-0)
lib/util/talloc_report_printf.h (+29/-0)
lib/util/tests/asn1_tests.c (+1/-1)
lib/util/tests/genrand.c (+2/-0)
lib/util/tests/tfork.c (+5/-2)
lib/util/tfork.h (+1/-1)
lib/util/tftw.c (+2/-13)
lib/util/time.c (+242/-1)
lib/util/time.h (+44/-0)
lib/util/tiniparser.c (+17/-8)
lib/util/tiniparser.h (+1/-0)
lib/util/util.c (+5/-2)
lib/util/util_file.c (+42/-15)
lib/util/util_net.h (+13/-0)
lib/util/wscript_build (+13/-6)
lib/util/wscript_configure (+10/-1)
libcli/auth/credentials.c (+312/-78)
libcli/auth/netlogon_creds_cli.c (+352/-27)
libcli/auth/netlogon_creds_cli.h (+17/-0)
libcli/auth/ntlm_check.c (+77/-33)
libcli/auth/proto.h (+60/-45)
libcli/auth/schannel_state_tdb.c (+1/-0)
libcli/auth/session.c (+38/-13)
libcli/auth/smbdes.c (+121/-278)
libcli/auth/smbencrypt.c (+200/-181)
libcli/auth/spnego_parse.c (+3/-3)
libcli/auth/tests/test_gnutls.c (+528/-0)
libcli/auth/tests/test_rc4_passwd_buffer.c (+336/-0)
libcli/auth/wscript_build (+22/-3)
libcli/cldap/cldap.c (+20/-4)
libcli/dns/wscript_build (+2/-2)
libcli/drsuapi/repl_decrypt.c (+14/-2)
libcli/drsuapi/wscript_build (+11/-12)
libcli/http/gensec/basic.c (+204/-0)
libcli/http/gensec/generic.c (+284/-0)
libcli/http/http.c (+30/-9)
libcli/http/http.h (+144/-0)
libcli/http/http_auth.c (+5/-9)
libcli/http/http_conn.c (+348/-0)
libcli/http/http_internal.h (+50/-0)
libcli/http/wscript_build (+21/-0)
libcli/ldap/ldap_message.c (+6/-1)
libcli/ldap/ldap_message.h (+5/-0)
libcli/ldap/tests/ldap_message_test.c (+287/-0)
libcli/ldap/wscript_build (+15/-0)
libcli/named_pipe_auth/npa_tstream.c (+2/-1)
libcli/named_pipe_auth/npa_tstream.h (+1/-1)
libcli/nbt/nbtsocket.c (+1/-1)
libcli/nbt/wscript_build (+1/-1)
libcli/netlogon/netlogon.c (+6/-2)
libcli/samsync/decrypt.c (+28/-8)
libcli/security/pysecurity.c (+6/-6)
libcli/security/security_token.c (+0/-8)
libcli/smb/smb1cli_session.c (+0/-2)
libcli/smb/smb1cli_trans.c (+4/-2)
libcli/smb/smb2_constants.h (+3/-0)
libcli/smb/smb2_create_blob.c (+0/-1)
libcli/smb/smb2_negotiate_context.c (+0/-1)
libcli/smb/smb2_signing.c (+381/-101)
libcli/smb/smb2_signing.h (+14/-6)
libcli/smb/smbXcli_base.c (+48/-35)
libcli/smb/wscript (+1/-1)
libgpo/gpo_filesync.c (+1/-1)
libgpo/gpo_ldap.c (+3/-1)
librpc/ABI/ndr-0.2.1.sigs (+265/-0)
librpc/ABI/ndr-1.0.0.sigs (+263/-0)
librpc/idl/bkupblobs.idl (+1/-1)
librpc/idl/cab.idl (+2/-2)
librpc/idl/clusapi.idl (+361/-0)
librpc/idl/dnsp.idl (+1/-1)
librpc/idl/drsuapi.idl (+2/-2)
librpc/idl/lsa.idl (+11/-8)
librpc/idl/mdssvc.idl (+4/-4)
librpc/idl/messaging.idl (+3/-0)
librpc/idl/misc.idl (+6/-0)
librpc/idl/netlogon.idl (+21/-14)
librpc/idl/ntlmssp.idl (+1/-1)
librpc/idl/quota.idl (+1/-1)
librpc/idl/samr.idl (+6/-16)
librpc/idl/security.idl (+14/-1)
librpc/idl/spoolss.idl (+22/-3)
librpc/idl/svcctl.idl (+19/-6)
librpc/idl/winstation.idl (+13/-0)
librpc/idl/witness.idl (+1/-1)
librpc/idl/wscript_build (+88/-15)
librpc/ndr/libndr.h (+32/-10)
librpc/ndr/ndr.c (+157/-40)
librpc/ndr/ndr_basic.c (+8/-3)
librpc/ndr/ndr_cab.c (+0/-11)
librpc/ndr/ndr_cab.h (+0/-1)
librpc/ndr/ndr_compression.c (+7/-7)
librpc/ndr/ndr_dnsp.c (+12/-2)
librpc/ndr/ndr_drsuapi.c (+22/-51)
librpc/ndr/ndr_nbt.c (+13/-0)
librpc/ndr/ndr_nbt.h (+1/-0)
librpc/ndr/ndr_negoex.c (+1/-0)
librpc/ndr/ndr_ntlmssp.c (+1/-1)
librpc/ndr/ndr_orpc.c (+2/-2)
librpc/ndr/ndr_schannel.c (+2/-2)
librpc/ndr/ndr_sec_helper.c (+3/-2)
librpc/ndr/ndr_spoolss_buf.c (+163/-23)
librpc/ndr/ndr_spoolss_buf.h (+1/-0)
librpc/ndr/ndr_string.c (+7/-0)
librpc/ndr/ndr_table.c (+29/-5)
librpc/rpc/dcerpc_util.c (+236/-0)
librpc/rpc/dcesrv_auth.c (+18/-64)
librpc/rpc/dcesrv_core.c (+2971/-0)
librpc/rpc/dcesrv_core.h (+637/-0)
librpc/rpc/dcesrv_mgmt.c (+125/-0)
librpc/rpc/dcesrv_reply.c (+264/-0)
librpc/rpc/rpc_common.h (+34/-0)
librpc/tests/test_ndr_string.c (+175/-0)
librpc/tools/ndrdump.c (+164/-60)
librpc/wscript_build (+62/-20)
nsswitch/libwbclient/wbc_sid.c (+4/-2)
nsswitch/libwbclient/wbc_util.c (+0/-1)
nsswitch/pam_winbind.c (+1/-1)
nsswitch/wscript_build (+2/-2)
pidl/lib/Parse/Pidl.pm (+1/-1)
pidl/lib/Parse/Pidl/Base.pm (+99/-0)
pidl/lib/Parse/Pidl/CUtil.pm (+1/-0)
pidl/lib/Parse/Pidl/Compat.pm (+1/-0)
pidl/lib/Parse/Pidl/Dump.pm (+1/-0)
pidl/lib/Parse/Pidl/Expr.pm (+1/-0)
pidl/lib/Parse/Pidl/IDL.pm (+1/-0)
pidl/lib/Parse/Pidl/NDR.pm (+11/-4)
pidl/lib/Parse/Pidl/ODL.pm (+1/-0)
pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm (+3/-8)
pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm (+1/-0)
pidl/lib/Parse/Pidl/Samba3/Template.pm (+1/-0)
pidl/lib/Parse/Pidl/Samba4.pm (+1/-0)
pidl/lib/Parse/Pidl/Samba4/COM/Header.pm (+1/-0)
pidl/lib/Parse/Pidl/Samba4/COM/Proxy.pm (+1/-0)
pidl/lib/Parse/Pidl/Samba4/COM/Stub.pm (+1/-6)
pidl/lib/Parse/Pidl/Samba4/Header.pm (+1/-0)
pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm (+3/-10)
pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm (+140/-66)
pidl/lib/Parse/Pidl/Samba4/NDR/Server.pm (+14/-9)
pidl/lib/Parse/Pidl/Samba4/Python.pm (+82/-47)
pidl/lib/Parse/Pidl/Samba4/TDR.pm (+4/-9)
pidl/lib/Parse/Pidl/Samba4/Template.pm (+1/-0)
pidl/lib/Parse/Pidl/Typelist.pm (+1/-0)
pidl/lib/Parse/Pidl/Util.pm (+37/-1)
pidl/lib/Parse/Pidl/Wireshark/Conformance.pm (+1/-0)
pidl/lib/Parse/Pidl/Wireshark/NDR.pm (+1/-0)
pidl/pidl (+1/-0)
pidl/tests/Util.pm (+1/-0)
pidl/tests/ndr_align.pl (+1/-0)
pidl/tests/ndr_alloc.pl (+1/-0)
pidl/tests/ndr_array.pl (+1/-0)
pidl/tests/ndr_compat.pl (+1/-0)
pidl/tests/ndr_fullptr.pl (+1/-0)
pidl/tests/ndr_refptr.pl (+1/-0)
pidl/tests/ndr_represent.pl (+1/-0)
pidl/tests/ndr_simple.pl (+1/-0)
pidl/tests/ndr_string.pl (+1/-0)
pidl/tests/ndr_tagtype.pl (+1/-1)
pidl/tests/parse_idl.pl (+1/-1)
pidl/tests/samba-ndr.pl (+0/-1)
pidl/tests/samba3-cli.pl (+1/-1)
pidl/tests/tdr.pl (+6/-6)
pidl/tests/test_util.pl (+1/-0)
pidl/wscript (+7/-10)
python/samba/auth_util.py (+34/-0)
python/samba/dbchecker.py (+4/-4)
python/samba/emulate/traffic.py (+61/-1)
python/samba/emulate/traffic_packets.py (+8/-2)
python/samba/kcc/__init__.py (+5/-0)
python/samba/kcc/kcc_utils.py (+92/-103)
python/samba/netcmd/computer.py (+26/-6)
python/samba/netcmd/contact.py (+11/-5)
python/samba/netcmd/dns.py (+3/-3)
python/samba/netcmd/domain.py (+20/-50)
python/samba/netcmd/domain_backup.py (+55/-45)
python/samba/netcmd/gpo.py (+21/-22)
python/samba/netcmd/group.py (+259/-43)
python/samba/netcmd/ntacl.py (+10/-20)
python/samba/netcmd/ou.py (+16/-3)
python/samba/netcmd/testparm.py (+13/-5)
python/samba/netcmd/user.py (+487/-78)
python/samba/ntacls.py (+56/-23)
python/samba/provision/__init__.py (+27/-46)
python/samba/provision/backend.py (+2/-735)
python/samba/provision/sambadns.py (+0/-8)
python/samba/samdb.py (+91/-22)
python/samba/schema.py (+2/-5)
python/samba/tests/__init__.py (+1/-0)
python/samba/tests/auth_log.py (+11/-11)
python/samba/tests/auth_log_winbind.py (+3/-4)
python/samba/tests/blackbox/mdfind.py (+130/-0)
python/samba/tests/blackbox/ndrdump.py (+370/-1)
python/samba/tests/dcerpc/mdssvc.py (+194/-0)
python/samba/tests/dcerpc/raw_protocol.py (+24/-5)
python/samba/tests/dcerpc/sam.py (+1/-23)
python/samba/tests/dns.py (+58/-0)
python/samba/tests/docs.py (+0/-2)
python/samba/tests/emulate/traffic_packet.py (+3/-1)
python/samba/tests/ldap_raw.py (+234/-0)
python/samba/tests/ntacls.py (+9/-7)
python/samba/tests/ntacls_backup.py (+6/-5)
python/samba/tests/ntlm_auth.py (+1/-1)
python/samba/tests/posixacl.py (+81/-81)
python/samba/tests/prefork_restart.py (+7/-7)
python/samba/tests/samba_tool/computer.py (+39/-0)
python/samba/tests/samba_tool/computer_edit.sh (+9/-9)
python/samba/tests/samba_tool/contact.py (+19/-0)
python/samba/tests/samba_tool/contact_edit.sh (+10/-9)
python/samba/tests/samba_tool/dnscmd.py (+5/-4)
python/samba/tests/samba_tool/group.py (+167/-6)
python/samba/tests/samba_tool/group_edit.sh (+9/-9)
python/samba/tests/samba_tool/ou.py (+19/-0)
python/samba/tests/samba_tool/user.py (+102/-2)
python/samba/tests/samba_tool/user_edit.sh (+9/-9)
python/samba/tests/segfault.py (+41/-1)
python/samba/upgradehelpers.py (+1/-3)
script/autobuild.py (+130/-50)
script/generate_param.py (+35/-18)
script/traffic_replay (+2/-1)
selftest/in_screen (+16/-17)
selftest/knownfail (+12/-7)
selftest/knownfail.d/durable-v2-delay (+2/-0)
selftest/knownfail.d/empty-domain-name (+7/-0)
selftest/knownfail.d/kinit_mit (+1/-0)
selftest/knownfail.d/python-segfaults (+0/-5)
selftest/selftest.pl (+2/-19)
selftest/skip_mit_kdc (+0/-4)
selftest/target/Samba.pm (+2/-9)
selftest/target/Samba3.pm (+17/-0)
selftest/target/Samba4.pm (+14/-131)
selftest/tests.py (+6/-0)
selftest/wscript (+4/-1)
source3/auth/auth.c (+13/-11)
source3/auth/auth_builtin.c (+8/-2)
source3/auth/auth_generic.c (+28/-40)
source3/auth/auth_ntlmssp.c (+104/-40)
source3/auth/auth_sam.c (+88/-13)
source3/auth/auth_samba4.c (+2/-2)
source3/auth/auth_unix.c (+4/-1)
source3/auth/auth_util.c (+24/-11)
source3/auth/auth_winbind.c (+4/-1)
source3/auth/pampass.c (+3/-1)
source3/auth/proto.h (+13/-7)
source3/auth/user_util.c (+4/-2)
source3/auth/wscript_build (+0/-7)
source3/client/client.c (+30/-20)
source3/client/clitar.c (+119/-82)
source3/client/smbspool.c (+9/-4)
source3/client/smbspool_krb5_wrapper.c (+42/-11)
source3/groupdb/mapping.c (+21/-11)
source3/groupdb/mapping_tdb.c (+1/-1)
source3/include/auth.h (+2/-2)
source3/include/g_lock.h (+13/-14)
source3/include/includes.h (+0/-4)
source3/include/libsmb_internal.h (+6/-0)
source3/include/libsmbclient.h (+27/-1)
source3/include/local.h (+1/-7)
source3/include/msdfs.h (+1/-1)
source3/include/printing.h (+23/-23)
source3/include/proto.h (+27/-22)
source3/include/smb.h (+1/-18)
source3/include/smb_macros.h (+0/-8)
source3/include/smbprofile.h (+8/-31)
source3/include/vfs.h (+154/-66)
source3/include/vfs_macros.h (+67/-45)
source3/lib/addrchange.c (+0/-1)
source3/lib/adouble.c (+2691/-0)
source3/lib/adouble.h (+188/-0)
source3/lib/ctdbd_conn.c (+7/-2)
source3/lib/dbwrap/dbwrap_ctdb.c (+14/-1)
source3/lib/dbwrap/dbwrap_watch.c (+440/-323)
source3/lib/dumpcore.c (+1/-1)
source3/lib/errmap_unix.c (+3/-2)
source3/lib/file_id.c (+8/-18)
source3/lib/file_id.h (+10/-3)
source3/lib/g_lock.c (+548/-320)
source3/lib/messages.c (+58/-31)
source3/lib/messages_dgm.c (+1/-1)
source3/lib/netapi/getdc.c (+1/-1)
source3/lib/netapi/group.c (+3/-3)
source3/lib/netapi/joindomain.c (+28/-16)
source3/lib/netapi/serverinfo.c (+6/-2)
source3/lib/netapi/user.c (+21/-15)
source3/lib/popt_common.c (+3/-1)
source3/lib/server_id_watch.c (+4/-5)
source3/lib/server_id_watch.h (+0/-3)
source3/lib/server_prefork.c (+22/-14)
source3/lib/server_prefork.h (+21/-4)
source3/lib/sharesec.c (+38/-26)
source3/lib/smbconf/smbconf_reg.c (+7/-7)
source3/lib/smbldap.c (+1/-1)
source3/lib/smbrun.c (+2/-12)
source3/lib/string_replace.c (+191/-0)
source3/lib/string_replace.h (+35/-0)
source3/lib/substitute.c (+3/-32)
source3/lib/sysquotas.c (+6/-2)
source3/lib/system.c (+33/-4)
source3/lib/tallocmsg.c (+47/-75)
source3/lib/time.c (+24/-8)
source3/lib/tldap.c (+2/-2)
source3/lib/tldap_util.c (+2/-2)
source3/lib/util.c (+38/-22)
source3/lib/util_macstreams.c (+73/-0)
source3/lib/util_macstreams.h (+27/-0)
source3/lib/util_path.c (+1/-0)
source3/lib/util_sec.c (+11/-8)
source3/lib/util_sock.c (+12/-1)
source3/lib/util_str.c (+0/-74)
source3/lib/wins_srv.c (+1/-1)
source3/lib/xattr_tdb.c (+6/-4)
source3/libads/cldap.c (+1/-1)
source3/libads/kerberos_keytab.c (+0/-2)
source3/libads/krb5_setpw.c (+121/-120)
source3/libads/ldap.c (+6/-5)
source3/libads/ldap_utils.c (+1/-1)
source3/libads/sasl.c (+0/-1)
source3/libads/util.c (+1/-1)
source3/libgpo/gpext/scripts.c (+1/-1)
source3/libnet/libnet_dssync_passdb.c (+4/-2)
source3/libnet/libnet_join.c (+13/-6)
source3/librpc/crypto/gse.c (+14/-4)
source3/librpc/crypto/gse_krb5.c (+1/-1)
source3/librpc/idl/leases_db.idl (+1/-1)
source3/librpc/idl/open_files.idl (+14/-8)
source3/librpc/idl/smbXsrv.idl (+4/-2)
source3/librpc/idl/wscript_build (+9/-2)
source3/librpc/wscript_build (+4/-2)
source3/libsmb/ABI/smbclient-0.6.0.sigs (+188/-0)
source3/libsmb/cli_smb2_fnum.c (+1/-1)
source3/libsmb/cliconnect.c (+2/-3)
source3/libsmb/clidfs.c (+9/-1)
source3/libsmb/clifile.c (+5/-6)
source3/libsmb/clilist.c (+2/-2)
source3/libsmb/climessage.c (+0/-1)
source3/libsmb/cliquota.c (+2/-4)
source3/libsmb/clirap.c (+95/-5)
source3/libsmb/clirap.h (+6/-0)
source3/libsmb/clirap2.c (+3/-4)
source3/libsmb/clireadwrite.c (+5/-5)
source3/libsmb/clispnego.c (+2/-2)
source3/libsmb/dsgetdcname.c (+2/-2)
source3/libsmb/errormap.c (+1/-1)
source3/libsmb/libsmb_compat.c (+7/-0)
source3/libsmb/libsmb_context.c (+1/-0)
source3/libsmb/libsmb_dir.c (+126/-0)
source3/libsmb/libsmb_path.c (+1/-1)
source3/libsmb/libsmb_setget.c (+10/-0)
source3/libsmb/namequery.c (+26/-12)
source3/libsmb/nmblib.c (+13/-7)
source3/libsmb/pylibsmb.c (+1/-1)
source3/libsmb/smbsock_connect.c (+2/-2)
source3/libsmb/trusts_util.c (+0/-1)
source3/libsmb/wscript (+1/-1)
source3/locale/net/de.po (+5/-5)
source3/locking/brlock.c (+32/-29)
source3/locking/leases_db.c (+81/-4)
source3/locking/leases_db.h (+5/-0)
source3/locking/leases_util.c (+28/-6)
source3/locking/locking.c (+307/-453)
source3/locking/posix.c (+52/-96)
source3/locking/proto.h (+37/-10)
source3/locking/share_mode_lock.c (+1240/-130)
source3/modules/README.nfs4acls.txt (+4/-4)
source3/modules/hash_inode.c (+1/-9)
source3/modules/nfs4_acls.c (+29/-42)
source3/modules/nfs4_acls.h (+0/-5)
source3/modules/nfs4acl_xattr_ndr.h (+2/-0)
source3/modules/nfs4acl_xattr_nfs.c (+3/-0)
source3/modules/nfs4acl_xattr_nfs.h (+2/-0)
source3/modules/nfs4acl_xattr_xdr.c (+4/-1)
source3/modules/offload_token.c (+97/-70)
source3/modules/vfs_acl_common.c (+21/-6)
source3/modules/vfs_acl_common.h (+5/-2)
source3/modules/vfs_acl_tdb.c (+25/-74)
source3/modules/vfs_acl_xattr.c (+22/-2)
source3/modules/vfs_aio_pthread.c (+2/-2)
source3/modules/vfs_audit.c (+29/-30)
source3/modules/vfs_btrfs.c (+3/-3)
source3/modules/vfs_cap.c (+132/-90)
source3/modules/vfs_catia.c (+114/-90)
source3/modules/vfs_ceph.c (+238/-197)
source3/modules/vfs_ceph_snapshots.c (+96/-304)
source3/modules/vfs_crossrename.c (+9/-7)
source3/modules/vfs_default.c (+333/-94)
source3/modules/vfs_delay_inject.c (+2/-1)
source3/modules/vfs_dfs_samba4.c (+4/-1)
source3/modules/vfs_error_inject.c (+17/-0)
source3/modules/vfs_expand_msdfs.c (+11/-5)
source3/modules/vfs_extd_audit.c (+32/-39)
source3/modules/vfs_fake_acls.c (+0/-41)
source3/modules/vfs_fake_dfq.c (+79/-0)
source3/modules/vfs_fileid.c (+37/-3)
source3/modules/vfs_fruit.c (+247/-2228)
source3/modules/vfs_full_audit.c (+316/-153)
source3/modules/vfs_glusterfs.c (+244/-71)
source3/modules/vfs_gpfs.c (+186/-69)
source3/modules/vfs_io_uring.c (+543/-0)
source3/modules/vfs_linux_xfs_sgid.c (+10/-5)
source3/modules/vfs_media_harmony.c (+97/-113)
source3/modules/vfs_nfs4acl_xattr.c (+3/-1)
source3/modules/vfs_not_implemented.c (+66/-43)
source3/modules/vfs_posix_eadb.c (+36/-7)
source3/modules/vfs_preopen.c (+1/-1)
source3/modules/vfs_recycle.c (+101/-28)
source3/modules/vfs_shadow_copy2.c (+178/-358)
source3/modules/vfs_snapper.c (+125/-331)
source3/modules/vfs_streams_depot.c (+101/-81)
source3/modules/vfs_streams_xattr.c (+46/-60)
source3/modules/vfs_syncops.c (+67/-31)
source3/modules/vfs_time_audit.c (+155/-82)
source3/modules/vfs_tsmsm.c (+8/-6)
source3/modules/vfs_unityed_media.c (+108/-109)
source3/modules/vfs_virusfilter.c (+39/-29)
source3/modules/vfs_virusfilter_clamav.c (+1/-1)
source3/modules/vfs_virusfilter_fsav.c (+1/-1)
source3/modules/vfs_virusfilter_sophos.c (+1/-1)
source3/modules/vfs_virusfilter_utils.c (+10/-3)
source3/modules/vfs_worm.c (+1/-1)
source3/modules/vfs_xattr_tdb.c (+23/-50)
source3/modules/vfs_zfsacl.c (+92/-8)
source3/modules/wscript_build (+12/-14)
source3/nmbd/nmbd.c (+6/-2)
source3/nmbd/nmbd_sendannounce.c (+8/-4)
source3/nmbd/nmbd_serverlistdb.c (+3/-1)
source3/nmbd/nmbd_winsserver.c (+3/-1)
source3/nmbd/nmbd_workgroupdb.c (+3/-1)
source3/param/loadparm.c (+116/-53)
source3/param/loadparm_ctx.c (+0/-1)
source3/param/service.c (+4/-2)
source3/passdb/lookup_sid.c (+1/-1)
source3/passdb/machine_account_secrets.c (+0/-36)
source3/passdb/passdb.c (+1/-1)
source3/passdb/pdb_interface.c (+9/-5)
source3/passdb/pdb_ldap.c (+25/-26)
source3/passdb/pdb_ldap_util.c (+3/-3)
source3/passdb/pdb_nds.c (+2/-1)
source3/passdb/pdb_samba_dsdb.c (+10/-12)
source3/passdb/pdb_smbpasswd.c (+6/-6)
source3/passdb/pdb_tdb.c (+4/-2)
source3/passdb/pdb_util.c (+1/-1)
source3/passdb/secrets.c (+1/-1)
source3/passdb/wscript_build (+1/-1)
source3/printing/load.c (+3/-1)
source3/printing/notify.c (+24/-8)
source3/printing/nt_printing.c (+25/-12)
source3/printing/nt_printing_ads.c (+3/-1)
source3/printing/nt_printing_os2.c (+3/-1)
source3/printing/print_cups.c (+34/-15)
source3/printing/print_generic.c (+22/-8)
source3/printing/print_iprint.c (+95/-15)
source3/printing/printing.c (+35/-15)
source3/printing/printspoolss.c (+4/-1)
source3/printing/queue_process.c (+5/-4)
source3/printing/queue_process.h (+5/-0)
source3/printing/spoolssd.c (+105/-63)
source3/printing/spoolssd.h (+29/-0)
source3/profile/profile.c (+12/-6)
source3/registry/reg_api.c (+2/-2)
source3/registry/reg_backend_db.c (+11/-10)
source3/registry/reg_format.h (+1/-1)
source3/registry/reg_import.h (+8/-8)
source3/registry/reg_objects.c (+1/-1)
source3/registry/reg_parse.h (+4/-4)
source3/registry/reg_util_internal.c (+2/-2)
source3/registry/regfio.c (+3/-2)
source3/registry/regfio.h (+7/-0)
source3/rpc_client/cli_lsarpc.c (+1/-1)
source3/rpc_client/cli_mdssvc.c (+1039/-0)
source3/rpc_client/cli_mdssvc.h (+97/-0)
source3/rpc_client/cli_mdssvc_private.h (+70/-0)
source3/rpc_client/cli_mdssvc_util.c (+531/-0)
source3/rpc_client/cli_mdssvc_util.h (+41/-0)
source3/rpc_client/cli_netlogon.c (+7/-2)
source3/rpc_client/cli_pipe.c (+25/-9)
source3/rpc_client/cli_samr.c (+105/-45)
source3/rpc_client/cli_samr.h (+0/-5)
source3/rpc_client/cli_winreg.c (+2/-2)
source3/rpc_client/init_samr.c (+36/-51)
source3/rpc_client/init_samr.h (+6/-6)
source3/rpc_client/py_mdscli.c (+567/-0)
source3/rpc_client/util_netlogon.c (+2/-2)
source3/rpc_server/dcesrv_auth_generic.c (+3/-0)
source3/rpc_server/dfs/srv_dfs_nt.c (+20/-12)
source3/rpc_server/epmapper/srv_epmapper.c (+19/-20)
source3/rpc_server/epmapper/srv_epmapper.h (+5/-1)
source3/rpc_server/epmd.c (+20/-17)
source3/rpc_server/eventlog/srv_eventlog_nt.c (+6/-3)
source3/rpc_server/fss/srv_fss_agent.c (+20/-14)
source3/rpc_server/fssd.c (+9/-7)
source3/rpc_server/lsasd.c (+69/-52)
source3/rpc_server/mdssd.c (+32/-30)
source3/rpc_server/mdssvc/dalloc.c (+171/-0)
source3/rpc_server/mdssvc/dalloc.h (+2/-0)
source3/rpc_server/mdssvc/elasticsearch_mappings.json (+142/-0)
source3/rpc_server/mdssvc/es_lexer.l (+92/-0)
source3/rpc_server/mdssvc/es_mapping.c (+241/-0)
source3/rpc_server/mdssvc/es_mapping.h (+49/-0)
source3/rpc_server/mdssvc/es_parser.y (+625/-0)
source3/rpc_server/mdssvc/es_parser_test.c (+97/-0)
source3/rpc_server/mdssvc/marshalling.c (+21/-11)
source3/rpc_server/mdssvc/mdssvc.c (+230/-562)
source3/rpc_server/mdssvc/mdssvc.h (+45/-20)
source3/rpc_server/mdssvc/mdssvc_es.c (+837/-0)
source3/rpc_server/mdssvc/mdssvc_es.h (+108/-0)
source3/rpc_server/mdssvc/mdssvc_noindex.c (+57/-0)
source3/rpc_server/mdssvc/mdssvc_noindex.h (+26/-0)
source3/rpc_server/mdssvc/mdssvc_tracker.c (+491/-0)
source3/rpc_server/mdssvc/mdssvc_tracker.h (+62/-0)
source3/rpc_server/mdssvc/sparql_parser.y (+6/-3)
source3/rpc_server/mdssvc/sparql_parser_test.c (+10/-1)
source3/rpc_server/mdssvc/srv_mdssvc_nt.c (+94/-41)
source3/rpc_server/mdssvc/test_mdsparser_es.c (+233/-0)
source3/rpc_server/netlogon/srv_netlog_nt.c (+48/-21)
source3/rpc_server/rpc_config.c (+4/-1)
source3/rpc_server/rpc_contexts.c (+3/-0)
source3/rpc_server/rpc_ep_register.c (+3/-0)
source3/rpc_server/rpc_handles.c (+18/-16)
source3/rpc_server/rpc_modules.c (+3/-0)
source3/rpc_server/rpc_ncacn_np.c (+113/-81)
source3/rpc_server/rpc_ncacn_np.h (+0/-20)
source3/rpc_server/rpc_server.c (+433/-603)
source3/rpc_server/rpc_server.h (+43/-48)
source3/rpc_server/rpc_service_setup.c (+215/-119)
source3/rpc_server/rpc_service_setup.h (+6/-6)
source3/rpc_server/rpc_sock_helper.c (+38/-37)
source3/rpc_server/rpc_sock_helper.h (+13/-10)
source3/rpc_server/samr/srv_samr_chgpasswd.c (+71/-11)
source3/rpc_server/samr/srv_samr_nt.c (+114/-24)
source3/rpc_server/spoolss/srv_spoolss_nt.c (+57/-20)
source3/rpc_server/srv_access_check.c (+3/-0)
source3/rpc_server/srv_pipe.c (+33/-15)
source3/rpc_server/srv_pipe.h (+2/-1)
source3/rpc_server/srv_pipe_hnd.c (+3/-4)
source3/rpc_server/srvsvc/srv_srvsvc_nt.c (+95/-52)
source3/rpc_server/winreg/srv_winreg_nt.c (+7/-2)
source3/rpc_server/wkssvc/srv_wkssvc_nt.c (+2/-1)
source3/rpc_server/wscript_build (+39/-10)
source3/rpcclient/cmd_clusapi.c (+141/-11)
source3/rpcclient/cmd_netlogon.c (+51/-1)
source3/rpcclient/cmd_samr.c (+157/-23)
source3/rpcclient/cmd_spoolss.c (+250/-3)
source3/rpcclient/cmd_spotlight.c (+460/-0)
source3/rpcclient/cmd_witness.c (+2/-1)
source3/rpcclient/rpcclient.c (+3/-81)
source3/rpcclient/rpcclient.h (+0/-1)
source3/rpcclient/wscript_build (+3/-1)
source3/script/smbtar (+1/-0)
source3/script/tests/printing/modprinter.pl (+1/-1)
source3/script/tests/smbspool_argv_wrapper.c (+72/-0)
source3/script/tests/test_close_denied_share.sh (+80/-0)
source3/script/tests/test_dfree_command.sh (+14/-6)
source3/script/tests/test_dfree_quota.sh (+23/-4)
source3/script/tests/test_durable_handle_reconnect.sh (+3/-2)
source3/script/tests/test_inherit_owner.sh (+2/-2)
source3/script/tests/test_net_misc.sh (+22/-3)
source3/script/tests/test_open_eintr.sh (+66/-0)
source3/script/tests/test_preserve_case.sh (+7/-2)
source3/script/tests/test_sharesec.sh (+19/-4)
source3/script/tests/test_smbclient_machine_auth.sh (+3/-3)
source3/script/tests/test_smbclient_ntlm.sh (+50/-19)
source3/script/tests/test_smbclient_s3.sh (+15/-6)
source3/script/tests/test_smbclient_tarmode.pl (+1/-1)
source3/script/tests/test_smbspool.sh (+54/-6)
source3/script/tests/test_timestamps.sh (+69/-0)
source3/selftest/tests.py (+110/-42)
source3/smbd/aio.c (+4/-16)
source3/smbd/blocking.c (+5/-5)
source3/smbd/close.c (+124/-90)
source3/smbd/conn.c (+42/-7)
source3/smbd/conn_idle.c (+11/-23)
source3/smbd/conn_msg.c (+105/-2)
source3/smbd/connection.c (+3/-1)
source3/smbd/dfree.c (+8/-3)
source3/smbd/dir.c (+237/-501)
source3/smbd/dosmode.c (+15/-18)
source3/smbd/durable.c (+69/-42)
source3/smbd/fake_file.c (+4/-2)
source3/smbd/fileio.c (+5/-766)
source3/smbd/filename.c (+1/-1)
source3/smbd/files.c (+23/-16)
source3/smbd/globals.c (+0/-3)
source3/smbd/globals.h (+16/-22)
source3/smbd/lanman.c (+43/-24)
source3/smbd/mangle.c (+1/-1)
source3/smbd/mangle_hash2.c (+5/-10)
source3/smbd/message.c (+16/-6)
source3/smbd/msdfs.c (+285/-236)
source3/smbd/negprot.c (+1/-1)
source3/smbd/nttrans.c (+32/-10)
source3/smbd/open.c (+1164/-855)
source3/smbd/oplock.c (+125/-126)
source3/smbd/oplock_linux.c (+27/-17)
source3/smbd/password.c (+8/-63)
source3/smbd/perfcount.c (+3/-1)
source3/smbd/posix_acls.c (+18/-7)
source3/smbd/process.c (+110/-75)
source3/smbd/proto.h (+58/-43)
source3/smbd/pysmbd.c (+328/-87)
source3/smbd/quotas.c (+19/-4)
source3/smbd/reply.c (+259/-93)
source3/smbd/scavenger.c (+21/-15)
source3/smbd/server.c (+18/-8)
source3/smbd/server_exit.c (+6/-0)
source3/smbd/server_reload.c (+6/-2)
source3/smbd/service.c (+90/-60)
source3/smbd/sesssetup.c (+10/-40)
source3/smbd/share_access.c (+11/-6)
source3/smbd/smb1_utils.c (+0/-2)
source3/smbd/smb1_utils.h (+0/-1)
source3/smbd/smb2_close.c (+8/-8)
source3/smbd/smb2_create.c (+55/-10)
source3/smbd/smb2_flush.c (+0/-7)
source3/smbd/smb2_glue.c (+2/-1)
source3/smbd/smb2_lock.c (+4/-4)
source3/smbd/smb2_negprot.c (+3/-7)
source3/smbd/smb2_query_directory.c (+14/-11)
source3/smbd/smb2_read.c (+0/-1)
source3/smbd/smb2_server.c (+46/-27)
source3/smbd/smb2_sesssetup.c (+46/-41)
source3/smbd/smb2_setinfo.c (+54/-40)
source3/smbd/smb2_tcon.c (+14/-10)
source3/smbd/smbXsrv_client.c (+12/-15)
source3/smbd/smbXsrv_open.c (+15/-40)
source3/smbd/smbXsrv_session.c (+187/-23)
source3/smbd/smbXsrv_tcon.c (+9/-17)
source3/smbd/trans2.c (+278/-160)
source3/smbd/uid.c (+85/-83)
source3/smbd/vfs.c (+167/-185)
source3/torture/cmd_vfs.c (+57/-46)
source3/torture/locktest2.c (+4/-1)
source3/torture/pdbtest.c (+7/-2)
source3/torture/proto.h (+5/-1)
source3/torture/test_cleanup.c (+0/-175)
source3/torture/test_dbwrap_do_locked.c (+8/-2)
source3/torture/test_dbwrap_watch.c (+323/-34)
source3/torture/test_g_lock.c (+361/-51)
source3/torture/test_smb2.c (+205/-0)
source3/torture/torture.c (+540/-7)
source3/torture/vfstest.c (+10/-3)
source3/torture/wbc_async.c (+4/-24)
source3/utils/conn_tdb.c (+1/-1)
source3/utils/dbwrap_tool.c (+1/-0)
source3/utils/dbwrap_torture.c (+1/-0)
source3/utils/log2pcaphex.c (+3/-0)
source3/utils/mdfind.c (+290/-0)
source3/utils/mvxattr.c (+2/-2)
source3/utils/net.c (+28/-0)
source3/utils/net.h (+3/-0)
source3/utils/net_ads.c (+4/-4)
source3/utils/net_ads_gpo.c (+16/-49)
source3/utils/net_conf.c (+9/-0)
source3/utils/net_g_lock.c (+43/-37)
source3/utils/net_proto.h (+2/-5)
source3/utils/net_registry.c (+65/-71)
source3/utils/net_registry_check.c (+1/-1)
source3/utils/net_rpc.c (+26/-17)
source3/utils/net_status.c (+1/-1)
source3/utils/net_tdb.c (+15/-3)
source3/utils/net_time.c (+3/-2)
source3/utils/net_usershare.c (+10/-4)
source3/utils/net_vfs.c (+454/-0)
source3/utils/ntlm_auth.c (+349/-139)
source3/utils/passwd_proto.h (+0/-1)
source3/utils/passwd_util.c (+2/-1)
source3/utils/pdbedit.c (+13/-2)
source3/utils/regedit.c (+2/-0)
source3/utils/sharesec.c (+22/-11)
source3/utils/smbcontrol.c (+55/-31)
source3/utils/smbget.c (+12/-5)
source3/utils/smbpasswd.c (+3/-2)
source3/utils/smbtree.c (+2/-1)
source3/utils/split_tokens.c (+1/-0)
source3/utils/status.c (+12/-7)
source3/utils/testparm.c (+26/-20)
source3/utils/wscript_build (+17/-1)
source3/winbindd/winbindd.c (+10/-4)
source3/winbindd/winbindd_cache.c (+43/-4)
source3/winbindd/winbindd_dual.c (+5/-2)
source3/winbindd/winbindd_getgrgid.c (+4/-0)
source3/winbindd/winbindd_misc.c (+5/-0)
source3/winbindd/winbindd_pam.c (+97/-56)
source3/winbindd/winbindd_rpc.c (+7/-9)
source3/winbindd/winbindd_util.c (+10/-3)
source3/winbindd/wscript_build (+115/-107)
source3/wscript (+254/-59)
source3/wscript_build (+78/-22)
source4/auth/gensec/gensec_gssapi.c (+2/-2)
source4/auth/gensec/gensec_krb5.c (+2/-2)
source4/auth/gensec/pygensec.c (+5/-4)
source4/auth/kerberos/kerberos.h (+1/-1)
source4/auth/kerberos/kerberos_pac.c (+9/-2)
source4/auth/kerberos/kerberos_util.c (+0/-1)
source4/auth/kerberos/krb5_init_context.c (+6/-6)
source4/auth/ntlm/auth_util.c (+10/-3)
source4/auth/ntlm/wscript_build (+1/-1)
source4/auth/pyauth.c (+2/-2)
source4/auth/session.c (+3/-12)
source4/auth/wscript_build (+1/-1)
source4/client/cifsdd.c (+2/-0)
source4/dns_server/dlz_bind9.c (+2/-0)
source4/dns_server/dns_query.c (+25/-8)
source4/dns_server/pydns.c (+1/-1)
source4/dsdb/common/util.c (+58/-73)
source4/dsdb/common/util.h (+0/-3)
source4/dsdb/common/util_trusts.c (+8/-0)
source4/dsdb/dns/dns_update.c (+0/-259)
source4/dsdb/pydsdb.c (+12/-5)
source4/dsdb/repl/drepl_ridalloc.c (+10/-2)
source4/dsdb/samdb/ldb_modules/audit_log.c (+1/-1)
source4/dsdb/samdb/ldb_modules/count_attrs.c (+2/-2)
source4/dsdb/samdb/ldb_modules/dirsync.c (+1/-1)
source4/dsdb/samdb/ldb_modules/encrypted_secrets.c (+16/-276)
source4/dsdb/samdb/ldb_modules/extended_dn_out.c (+3/-339)
source4/dsdb/samdb/ldb_modules/objectclass_attrs.c (+17/-2)
source4/dsdb/samdb/ldb_modules/operational.c (+2/-3)
source4/dsdb/samdb/ldb_modules/paged_results.c (+13/-5)
source4/dsdb/samdb/ldb_modules/partition.c (+18/-4)
source4/dsdb/samdb/ldb_modules/partition.h (+0/-1)
source4/dsdb/samdb/ldb_modules/partition_init.c (+25/-37)
source4/dsdb/samdb/ldb_modules/password_hash.c (+7/-42)
source4/dsdb/samdb/ldb_modules/repl_meta_data.c (+138/-174)
source4/dsdb/samdb/ldb_modules/samba_dsdb.c (+4/-154)
source4/dsdb/samdb/ldb_modules/tests/test_encrypted_secrets.c (+116/-316)
source4/dsdb/samdb/ldb_modules/wscript_build (+3/-3)
source4/dsdb/samdb/ldb_modules/wscript_build_server (+6/-34)
source4/dsdb/schema/schema_description.c (+27/-27)
source4/dsdb/schema/schema_set.c (+31/-7)
source4/dsdb/tests/python/asq.py (+171/-0)
source4/dsdb/tests/python/sort.py (+3/-3)
source4/dsdb/tests/python/token_group.py (+1/-1)
source4/dsdb/tests/python/vlv.py (+40/-14)
source4/echo_server/echo_server.c (+1/-1)
source4/heimdal_build/include/krb5-types.h (+18/-0)
source4/heimdal_build/roken.h (+0/-3)
source4/heimdal_build/wscript_build (+17/-45)
source4/kdc/db-glue.c (+2/-2)
source4/kdc/mit-kdb/kdb_samba.h (+19/-26)
source4/kdc/pac-glue.c (+3/-3)
source4/ldap_server/ldap_server.c (+104/-4)
source4/lib/messaging/messaging.c (+81/-26)
source4/lib/messaging/messaging.h (+8/-3)
source4/lib/messaging/messaging_handlers.c (+14/-0)
source4/lib/messaging/pymessaging.c (+13/-5)
source4/lib/messaging/tests/messaging.c (+73/-6)
source4/lib/messaging/wscript_build (+11/-1)
source4/lib/policy/gp_filesys.c (+9/-1)
source4/lib/registry/patchfile_preg.c (+8/-8)
source4/lib/tls/tls_tstream.c (+0/-12)
source4/lib/tls/tlscert.c (+2/-5)
source4/lib/wmi/wmi_wrap.c (+1/-1)
source4/libcli/clideltree.c (+2/-2)
source4/libcli/clireadwrite.c (+1/-1)
source4/libcli/composite/composite.c (+0/-1)
source4/libcli/ldap/ldap_client.c (+4/-3)
source4/libcli/ldap/ldap_controls.c (+24/-24)
source4/libcli/libcli.h (+1/-1)
source4/libcli/rap/rap.c (+3/-0)
source4/libcli/raw/clisession.c (+3/-3)
source4/libcli/raw/clitree.c (+1/-1)
source4/libcli/raw/rawfileinfo.c (+17/-1)
source4/libcli/raw/rawnegotiate.c (+3/-2)
source4/libcli/smb2/getinfo.c (+3/-1)
source4/libcli/smb2/util.c (+49/-3)
source4/libcli/smb_composite/fetchfile.c (+4/-1)
source4/libnet/libnet_passwd.c (+205/-83)
source4/librpc/idl/winsrepl.idl (+1/-1)
source4/librpc/idl/wscript_build (+1/-1)
source4/librpc/ndr/py_security.c (+10/-2)
source4/librpc/rpc/dcerpc.c (+13/-7)
source4/librpc/rpc/dcerpc.h (+0/-4)
source4/librpc/rpc/dcerpc_auth.c (+1/-1)
source4/librpc/rpc/dcerpc_connect.c (+7/-2)
source4/librpc/rpc/dcerpc_roh.c (+153/-39)
source4/librpc/rpc/dcerpc_roh.h (+1/-6)
source4/librpc/rpc/dcerpc_roh_channel_in.c (+9/-179)
source4/librpc/rpc/dcerpc_roh_channel_out.c (+19/-184)
source4/librpc/rpc/dcerpc_schannel.c (+7/-1)
source4/librpc/rpc/dcerpc_util.c (+2/-101)
source4/librpc/tests/dns-decode_dns_name_packet-hex.txt (+35/-0)
source4/librpc/tests/dnsp-DnssrvRpcRecord.txt (+32/-0)
source4/librpc/tests/fuzzed_drsuapi_DsAddEntry_1.b64.txt (+1/-0)
source4/librpc/tests/fuzzed_drsuapi_DsAddEntry_1.txt (+508/-0)
source4/librpc/tests/fuzzed_drsuapi_DsGetNCChanges.txt (+76/-0)
source4/librpc/tests/fuzzed_drsuapi_DsReplicaAttribute.b64.txt (+1/-0)
source4/librpc/tests/fuzzed_drsuapi_DsReplicaAttribute.txt (+31/-0)
source4/librpc/tests/fuzzed_ntlmssp-AUTHENTICATE_MESSAGE.b64.txt (+1/-0)
source4/librpc/tests/fuzzed_ntlmssp-AUTHENTICATE_MESSAGE.txt (+134/-0)
source4/librpc/tests/fuzzed_ntlmssp-CHALLENGE_MESSAGE.txt (+43/-0)
source4/librpc/tests/misc-GUID.dat (+1/-0)
source4/librpc/tests/xattr_NTACL.dat (+20/-0)
source4/librpc/tests/xattr_NTACL.txt (+99/-0)
source4/librpc/wscript_build (+20/-7)
source4/nbt_server/wins/winsdb.c (+3/-1)
source4/ntvfs/common/notify.c (+19/-4)
source4/ntvfs/posix/pvfs_oplock.c (+11/-2)
source4/ntvfs/posix/pvfs_read.c (+0/-10)
source4/ntvfs/posix/pvfs_wait.c (+11/-2)
source4/ntvfs/posix/pvfs_write.c (+0/-10)
source4/ntvfs/posix/vfs_posix.c (+0/-2)
source4/ntvfs/posix/vfs_posix.h (+0/-7)
source4/ntvfs/posix/wscript_build (+1/-8)
source4/param/pyparam.c (+1/-1)
source4/rpc_server/backupkey/dcesrv_backupkey.c (+91/-58)
source4/rpc_server/common/forward.c (+6/-2)
source4/rpc_server/dcerpc_server.c (+169/-2851)
source4/rpc_server/dcerpc_server.h (+4/-547)
source4/rpc_server/drsuapi/getncchanges.c (+13/-12)
source4/rpc_server/drsuapi/updaterefs.c (+7/-2)
source4/rpc_server/epmapper/rpc_epmapper.c (+5/-4)
source4/rpc_server/handles.c (+2/-2)
source4/rpc_server/lsa/dcesrv_lsa.c (+18/-8)
source4/rpc_server/lsa/lsa_lookup.c (+14/-10)
source4/rpc_server/netlogon/dcerpc_netlogon.c (+58/-29)
source4/rpc_server/remote/dcesrv_remote.c (+10/-3)
source4/rpc_server/samr/dcesrv_samr.c (+235/-135)
source4/rpc_server/samr/dcesrv_samr.h (+1/-0)
source4/rpc_server/samr/samr_password.c (+131/-52)
source4/rpc_server/service_rpc.c (+16/-1)
source4/rpc_server/srvsvc/dcesrv_srvsvc.c (+4/-2)
source4/rpc_server/srvsvc/srvsvc_ntvfs.c (+5/-2)
source4/rpc_server/wscript_build (+17/-28)
source4/scripting/bin/samba_dnsupdate (+1/-1)
source4/scripting/bin/samba_upgradeprovision (+8/-12)
source4/scripting/devel/config_base (+4/-5)
source4/scripting/devel/pfm_verify.py (+1/-3)
source4/scripting/wscript_build (+3/-2)
source4/selftest/tests.py (+52/-30)
source4/selftest/win/VMHost.pm (+1/-1)
source4/selftest/win/common.exp (+1/-1)
source4/setup/krb5.conf (+8/-0)
source4/setup/tests/blackbox_group.sh (+171/-1)
source4/smb_server/smb_server.c (+0/-1)
source4/smbd/process_prefork.c (+2/-1)
source4/smbd/server.c (+8/-1)
source4/torture/basic/delaywrite.c (+4/-4)
source4/torture/basic/delete.c (+4/-0)
source4/torture/drs/rpc/msds_intid.c (+2/-2)
source4/torture/gentest.c (+4/-1)
source4/torture/krb5/kdc-canon-heimdal.c (+20/-15)
source4/torture/ldb/ldb.c (+8/-5)
source4/torture/libsmbclient/libsmbclient.c (+231/-0)
source4/torture/local/local.c (+6/-4)
source4/torture/local/mdspkt.c (+104/-0)
source4/torture/local/wscript_build (+1/-0)
source4/torture/locktest.c (+2/-0)
source4/torture/man/smbtorture.1.xml (+0/-5)
source4/torture/masktest.c (+1/-0)
source4/torture/ndr/cabinet.c (+6/-0)
source4/torture/ndr/clusapi.c (+7/-0)
source4/torture/ndr/dnsp.c (+23/-1)
source4/torture/ndr/ndr.c (+145/-8)
source4/torture/ndr/ndr.h (+51/-1)
source4/torture/ndr/netlogon.c (+619/-6)
source4/torture/ndr/svcctl.c (+88/-0)
source4/torture/rap/sam.c (+17/-2)
source4/torture/raw/oplock.c (+3/-2)
source4/torture/raw/tconrate.c (+1/-1)
source4/torture/rpc/backupkey.c (+0/-48)
source4/torture/rpc/clusapi.c (+197/-10)
source4/torture/rpc/drsuapi_cracknames.c (+6/-6)
source4/torture/rpc/epmapper.c (+2/-2)
source4/torture/rpc/handles.c (+3/-1)
source4/torture/rpc/lsa.c (+5/-7)
source4/torture/rpc/mdssvc.c (+845/-0)
source4/torture/rpc/netlogon.c (+4/-4)
source4/torture/rpc/remote_pac.c (+293/-74)
source4/torture/rpc/rpc.c (+86/-3)
source4/torture/rpc/samba3rpc.c (+19/-26)
source4/torture/rpc/samr.c (+286/-114)
source4/torture/rpc/samsync.c (+12/-2)
source4/torture/rpc/spoolss.c (+208/-7)
source4/torture/rpc/spoolss_notify.c (+22/-7)
source4/torture/rpc/svcctl.c (+80/-1)
source4/torture/rpc/testjoin.c (+7/-4)
source4/torture/rpc/torture_rpc.h (+23/-1)
source4/torture/rpc/wkssvc.c (+16/-4)
source4/torture/smb2/attr.c (+496/-0)
source4/torture/smb2/block.c (+1/-1)
source4/torture/smb2/connect.c (+1/-1)
source4/torture/smb2/create.c (+12/-4)
source4/torture/smb2/durable_v2_open.c (+100/-2)
source4/torture/smb2/multichannel.c (+1/-1)
source4/torture/smb2/read_write.c (+163/-0)
source4/torture/smb2/samba3misc.c (+4/-3)
source4/torture/smb2/scan.c (+1/-1)
source4/torture/smb2/sharemode.c (+1/-1)
source4/torture/smb2/smb2.c (+4/-0)
source4/torture/smb2/timestamps.c (+309/-0)
source4/torture/smb2/util.c (+7/-0)
source4/torture/smb2/wscript_build (+3/-0)
source4/torture/smbtorture.c (+8/-0)
source4/torture/vfs/fruit.c (+251/-0)
source4/torture/vfs/vfs.c (+1/-0)
source4/torture/wscript_build (+5/-9)
source4/utils/oLschema2ldif/main.c (+2/-0)
source4/utils/oLschema2ldif/wscript_build (+1/-0)
source4/winbind/idmap.c (+3/-3)
testprogs/blackbox/dbcheck-links.sh (+1/-1)
testprogs/blackbox/dbcheck-oldrelease.sh (+1/-1)
testprogs/blackbox/functionalprep.sh (+1/-1)
testprogs/blackbox/test_export_keytab_heimdal.sh (+8/-8)
testprogs/blackbox/test_kinit_mit.sh (+13/-0)
testprogs/blackbox/upgradeprovision-oldrelease.sh (+1/-1)
testsuite/headers/wscript_build (+1/-2)
testsuite/unittests/test_sambafs_srv_pipe.c (+6/-6)
testsuite/unittests/wscript (+1/-1)
third_party/aesni-intel/wscript (+2/-1)
third_party/nss_wrapper/nss_wrapper.c (+57/-34)
third_party/nss_wrapper/wscript (+1/-1)
third_party/uid_wrapper/uid_wrapper.c (+75/-40)
third_party/uid_wrapper/wscript (+1/-1)
third_party/wscript (+0/-2)
wscript (+8/-8)
wscript_build (+6/-1)
wscript_configure_system_gnutls (+23/-21)
Reviewer Review Type Date Requested Status
Christian Ehrhardt  (community) Approve
Canonical Server Pending
Review via email: mp+383720@code.launchpad.net

Description of the change

This is the samba 4.12.2 merge.

We are going ahead of debian on this, as debian is still on 4.11.x (and also behind our 4.11.x package).

Bileto ticket for the whole stack: https://bileto.ubuntu.com/#/ticket/4051

Reds are i386 (hinted in britney already), and the usual flaky gvfs runs.

4.12.0 release notes: https://www.samba.org/samba/history/samba-4.12.0.html

Noteworthy changes and consideration:
- samba is dropping internal crypto code. That resulted in a bunch of symbols disappearing
- libaesni is no longer built when samba detects a recent enough gnutls library being used, which is the case for groovy. I did keep the d/rules --accel-aes=intelaesni switch, though, just in case that build-time check is changed, in which case I expect a noticeable build failure. I can be convinced to drop this, and will likely follow debian when they grab samba 4.12.
- I'm unsure what to do with the spotlight/time-machine feature, mainly because I cannot test it. There are two options now: tracker backend (a gnome thing), and elastic search backend (new in 4.12.x). Debian had the tracker backend enabled[1], but reverted it due to dependency creep. We also have a bug[2] requesting the feature. The elastic search backend is supposed to have less dependencies.
- 4.12.x can use the new kernel uring feature via a new vfs module. In ubuntu, liburing is in universe, so I can't enable it because samba-vfs-modules is in main, unless I create a package specifically for it. I filed a preemptive MIR[3] for now and am gathering information about it. There is currently an open bug[4] about data corruption so I wouldn't want to enable it anyway before there is a committed patch from upstream.

1. https://bugs.debian.org/941654
2. https://bugs.launchpad.net/ubuntu/+source/samba/+bug/1872454
3. https://bugs.launchpad.net/ubuntu/+source/liburing/+bug/1878006
4. https://bugzilla.samba.org/show_bug.cgi?id=14361

To post a comment you must log in.
Revision history for this message
Andreas Hasenack (ahasenack) wrote :

sssd 2.2.3 is building, and the basics are working, but it doesn't fully work with active directory when using samba 4.12. sssd upstream will make a new release when these land:

https://github.com/SSSD/sssd/pull/999
https://github.com/SSSD/sssd/pull/844
https://github.com/SSSD/sssd/pull/1005

Additionally master already has two commits for samba 4.12:
commit c031adde4f532f39845a0efd78693600f1f8b2f4
Author: Noel Power <email address hidden>
Date: Tue Mar 24 18:14:34 2020 +0000

    ad_gpo_ndr.c: refresh ndr_ methods from samba-4.12

    Signed-off-by: Noel Power <email address hidden>

    Reviewed-by: Pavel BÅ™ezina <email address hidden>

commit 1fdd8fa2fded1985fbfc6aa67394eebcdbb6a2fc
Author: Noel Power <email address hidden>
Date: Tue Mar 24 13:37:07 2020 +0000

    Use ndr_pull_steal_switch_value for modern samba versions

    commit bc56b10aea999284458dcc293b54cf65288e325d attempted to
    fix the build error resulting from removal of 'ndr_pull_get_switch'

    This change uses the new replacement method
    'ndr_pull_steal_switch_value' however depending on the samba version
    the ndr_pull_steal_switch_value abi is different.

    Note: ndr_pull_steal_switch_value is used since samba 4.10 for
          the affected methods

    Note: the following methods have been refreshed from samba-4.12 generated
          code;

        o ndr_pull_security_ace_object_type
        o ndr_pull_security_ace_object_inherited_type
        o ndr_pull_security_ace_object_ctr

    Signed-off-by: Noel Power <email address hidden>

    Reviewed-by: Pavel BÅ™ezina <email address hidden>

I could pull these in, but since more are coming, and the builds and dep8 tests we have are find, I would rather leave that for sssd 2.2.4.

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :
Download full text (3.4 KiB)

Changelog:
- [√] changelog entry correct version and targeted codename
- [√] changelog entries correct
- [√] update-maintainer has been run (well - in the past, since this goes forward on our side)

Actual changes:
- [√] no "further" major upstream changes to consider
      glad they dropped their "own" aesni, reimplementing that just is a source of issues.
      I'm also glad we have 4.12.2 stable already when moving to the new major, that should help
      to be working better.
- [√] no further upstream version to consider
      I was reviewing https://wiki.samba.org/index.php/Samba_4.12_Features_added/changed if
      there is anything else we might need to do, but as always you had all things under control
      already - a few minor things below.
- [n/a] debian changes look safe

New Delta:
- [√] new patches are good or match what was proposed upstream
- [√] new patches correctly included in debian/patches/series?
- [√] new patches have correct DEP3 metadata

Build/Test:
- [√] build is ok
- [√] autopkgtest against the PPA package passes

This is no merge of the latest Debian but the latest upstream. So our usual changelog-templates don't 100% apply, never the less I'd have expected the three dropped patches under a "* Dropped" section to spot them more easily. This is an unimportant style thing, so it is up to you if you want to change it.

Again I was wondering about some build issues related to pidl:
source4/librpc/idl/irpc.idl:28: warning: subcontext() is deprecated. Use represent_as() or transmit_as() instead
source4/librpc/idl/irpc.idl:70: warning: [out] argument `info' not a pointer
source4/librpc/idl/irpc.idl:83: warning: top-level [out] pointer `dcname' is not a [ref] pointer
source4/librpc/idl/irpc.idl:91: warning: [out] argument `num_addrs' not a pointer
source4/librpc/idl/irpc.idl:113: warning: [out] argument `generic_reply' not a pointer
source4/librpc/idl/irpc.idl:159: warning: [out] argument `info' not a pointer
source4/librpc/idl/irpc.idl:70: error: nbtd_information: [out] argument 'info' is not a pointer or array, skip client functions
source4/librpc/idl/irpc.idl:83: error: nbtd_getdcname: [out] argument 'dcname' is a pointer to type 'string', skip client functions
source4/librpc/idl/irpc.idl:91: error: nbtd_proxy_wins_challenge: [out] argument 'num_addrs' is not a pointer or array, skip client functions
source4/librpc/idl/irpc.idl:113: error: kdc_check_generic_kerberos: [out] argument 'generic_reply' is not a pointer or array, skip client functions
source4/librpc/idl/irpc.idl:159: error: smbsrv_information: [out] argument 'info' is not a pointer or array, skip client functions

But these were present in the former builds as well.
@Andreas do you think that is an issues that should be analyzed or is this known and ok?

4.12 says "GnuTLS 3.4.7 required" and in fact later bumps that to 3.6.5 for some extras.
Build dep libgnutls28-dev is unversioned at the moment for the potential that people might backport it to bionic (3.5.18) adding a >=3.6.5 might be useful - what do you think?

Note: the SMB3 speed improvements out of using tls might be worth a release not entry for gorilla what do you think?

I know you think about ...

Read more...

review: Approve
Revision history for this message
Andreas Hasenack (ahasenack) wrote :

> This is no merge of the latest Debian but the latest upstream.
> So our usual changelog-templates don't 100% apply, never the less
> I'd have expected the three dropped patches under a "* Dropped"
> section to spot them more easily. This is an unimportant style
> thing, so it is up to you if you want to change it.

Done

> 4.12 says "GnuTLS 3.4.7 required" and in fact later bumps that to 3.6.5
> for some extras.
> Build dep libgnutls28-dev is unversioned at the moment for the potential
> that people might backport it to bionic (3.5.18) adding a >=3.6.5 might
> be useful - what do you think?

Agreed and done

> Note: the SMB3 speed improvements out of using tls might be worth a
> release not entry for gorilla what do you think?

Yes if confirmed :) How would I make sure to not forget, this early in the cycle? Maybe a release notes bug task, and a card in our merges board collecting all such tasks? I'll do it

> Do you want to check samba conf on upgrade an warn for removed options
> like "write cache size" ?

The samba packaging never did such a thing, at most testparm(1) is run and it will warn and/or fail.

> Again I was wondering about some build issues related to pidl:

I'll see what I can find about these.

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

I found many reports of these pidl warnings in the samba bugzilla. Most are old, and some closed as "wontfix". Here is one example that as a response from upstream saying these issues are known and will be fixed eventually:

https://bugzilla.samba.org/show_bug.cgi?id=12634
"""
We get these warnings on every platform on every build, so we know about them and have already given them the correct attention. Most are long-term 'could be better' rather than 'must fix soon'.
"""

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Thanks for addressing all my concerns then.
All that is left is +1 and good luck with proposed migration.

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

Forgot to mention, but I submitted a pristine-tar branch to salsa for the 4.12.2+dfsg tarball: https://salsa.debian.org/samba-team/samba/-/merge_requests/47

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

All updated build-deps built in groovy proposed, time to upload this one:

Tagging and uploading 3365590314bb07f349bb13268085b86371203b86

$ git push pkg upload/2%4.12.2+dfsg-0ubuntu1
Enumerating objects: 3501, done.
Counting objects: 100% (3501/3501), done.
Delta compression using up to 4 threads
Compressing objects: 100% (1392/1392), done.
Writing objects: 100% (1940/1940), 858.48 KiB | 205.00 KiB/s, done.
Total 1940 (delta 1556), reused 753 (delta 518)
remote: Resolving deltas: 100% (1556/1556), completed with 1423 local objects.
To ssh://git.launchpad.net/~usd-import-team/ubuntu/+source/samba
 * [new tag] upload/2%4.12.2+dfsg-0ubuntu1 -> upload/2%4.12.2+dfsg-0ubuntu1

$ dput ubuntu ../samba_4.12.2+dfsg-0ubuntu1_source.changes
Checking signature on .changes
gpg: ../samba_4.12.2+dfsg-0ubuntu1_source.changes: Valid signature from AC983EB5BF6BCBA9
Checking signature on .dsc
gpg: ../samba_4.12.2+dfsg-0ubuntu1.dsc: Valid signature from AC983EB5BF6BCBA9
Uploading to ubuntu (via ftp to upload.ubuntu.com):
  Uploading samba_4.12.2+dfsg-0ubuntu1.dsc: done.
  Uploading samba_4.12.2+dfsg.orig.tar.xz: done.
  Uploading samba_4.12.2+dfsg-0ubuntu1.debian.tar.xz: done.
  Uploading samba_4.12.2+dfsg-0ubuntu1_source.buildinfo: done.
  Uploading samba_4.12.2+dfsg-0ubuntu1_source.changes: done.
Successfully uploaded packages.

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

hm, turns out the sssd I had in the ppas was rebuilt with the old samba 4.11, and not 4.12. I must have raced the uploa with the samba 4.12 build actually being published :/

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
2index 67a86d2..56adf10 100644
3--- a/.gitlab-ci.yml
4+++ b/.gitlab-ci.yml
5@@ -22,7 +22,7 @@ variables:
6 # Set this to the contents of bootstrap/sha1sum.txt
7 # which is generated by bootstrap/template.py --render
8 #
9- SAMBA_CI_CONTAINER_TAG: 970e3a86b8a9dc10a0a3ec716ab355eb9664dc38
10+ SAMBA_CI_CONTAINER_TAG: 41319f2580c026f66b2750604a0eb15d6b6f7b50
11 #
12 # We use the ubuntu1804 image as default as
13 # it matches what we have on sn-devel-184.
14@@ -36,11 +36,14 @@ variables:
15 SAMBA_CI_CONTAINER_IMAGE_ubuntu1804: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-ubuntu1804:${SAMBA_CI_CONTAINER_TAG}
16 SAMBA_CI_CONTAINER_IMAGE_ubuntu1604: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-ubuntu1604:${SAMBA_CI_CONTAINER_TAG}
17 SAMBA_CI_CONTAINER_IMAGE_debian9: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-debian9:${SAMBA_CI_CONTAINER_TAG}
18+ SAMBA_CI_CONTAINER_IMAGE_debian10: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-debian10:${SAMBA_CI_CONTAINER_TAG}
19 SAMBA_CI_CONTAINER_IMAGE_opensuse150: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-opensuse150:${SAMBA_CI_CONTAINER_TAG}
20 SAMBA_CI_CONTAINER_IMAGE_opensuse151: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-opensuse151:${SAMBA_CI_CONTAINER_TAG}
21 SAMBA_CI_CONTAINER_IMAGE_fedora29: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-fedora29:${SAMBA_CI_CONTAINER_TAG}
22 SAMBA_CI_CONTAINER_IMAGE_fedora30: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-fedora30:${SAMBA_CI_CONTAINER_TAG}
23+ SAMBA_CI_CONTAINER_IMAGE_fedora31: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-fedora31:${SAMBA_CI_CONTAINER_TAG}
24 SAMBA_CI_CONTAINER_IMAGE_centos7: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-centos7:${SAMBA_CI_CONTAINER_TAG}
25+ SAMBA_CI_CONTAINER_IMAGE_centos8: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-centos8:${SAMBA_CI_CONTAINER_TAG}
26
27 include:
28 # The image creation details are specified in a separate file
29@@ -96,6 +99,10 @@ include:
30 - echo "Running cmd script/autobuild.py $AUTOBUILD_JOB_NAME $SAMBA_CI_AUTOBUILD_ENABLE_COVERAGE --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase"
31 - script/autobuild.py $AUTOBUILD_JOB_NAME $SAMBA_CI_AUTOBUILD_ENABLE_COVERAGE --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase
32
33+# Ensure when adding a new job below that you also add it to
34+# the dependencies for 'pages' below for the code coverage page
35+# generation.
36+
37 others:
38 extends: .shared_template
39 script:
40@@ -109,6 +116,9 @@ others:
41 samba:
42 extends: .shared_template
43
44+samba-mitkrb5:
45+ extends: .shared_template
46+
47 samba-none-env:
48 extends: .shared_template
49
50@@ -118,13 +128,10 @@ samba-nopython:
51 samba-nopython-py2:
52 extends: .shared_template
53
54-samba-systemkrb5:
55- extends: .shared_template
56-
57 samba-xc:
58 extends: .shared_template
59
60-samba-ad-member:
61+samba-admem:
62 extends: .shared_template
63
64 samba-ad-dc-2:
65@@ -148,6 +155,9 @@ samba-libs:
66 samba-static:
67 extends: .shared_template
68
69+samba-fuzz:
70+ extends: .shared_template
71+
72 ctdb:
73 extends: .shared_template
74
75@@ -157,6 +167,12 @@ samba-ctdb:
76 samba-ad-dc-ntvfs:
77 extends: .shared_template
78
79+samba-admem-mit:
80+ extends: .shared_template
81+
82+samba-ad-dc-4-mitkrb5:
83+ extends: .shared_template
84+
85 .private_template:
86 extends: .shared_template
87 tags:
88@@ -173,6 +189,9 @@ samba-ad-dc-ntvfs:
89 samba-ad-dc-backup:
90 extends: .private_template
91
92+samba-simpleserver:
93+ extends: .private_template
94+
95 samba-fileserver:
96 extends: .private_template
97
98@@ -188,6 +207,9 @@ samba-nt4:
99 samba-schemaupgrade:
100 extends: .private_template
101
102+samba-ad-dc-1-mitkrb5:
103+ extends: .private_template
104+
105 # 'pages' is a special job which can publish artifacts in `public` dir to gitlab pages
106 pages:
107 image: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-${SAMBA_CI_CONTAINER_IMAGE}:${SAMBA_CI_CONTAINER_TAG}
108@@ -196,29 +218,35 @@ pages:
109 - docker
110 - shared
111 dependencies: # tell gitlab to download artifacts for these jobs
112+ - others
113 - samba
114- - samba-ad-dc-1
115+ - samba-mitkrb5
116+ - samba-none-env
117+ - samba-nopython
118+ - samba-nopython-py2
119+ - samba-xc
120+ - samba-admem
121 - samba-ad-dc-2
122 - samba-ad-dc-3
123 - samba-ad-dc-4
124 - samba-ad-dc-5
125 - samba-ad-dc-6
126- - samba-ad-dc-backup
127- - samba-ad-dc-ntvfs
128- - samba-ad-member
129+ - samba-libs
130+ - samba-static
131+ - samba-fuzz
132+ # - ctdb # TODO
133 - samba-ctdb
134+ - samba-ad-dc-ntvfs
135+ - samba-admem-mit
136+ - samba-ad-dc-4-mitkrb5
137+ - samba-ad-dc-backup
138+ - samba-simpleserver
139 - samba-fileserver
140- - samba-libs
141- - samba-none-env
142- - samba-nopython
143- - samba-nopython-py2
144+ - samba-ktest-heimdal
145+ - samba-ad-dc-1
146 - samba-nt4
147 - samba-schemaupgrade
148- - samba-static
149- - samba-systemkrb5
150- - samba-xc
151- # - ctdb # TODO
152- - others
153+ - samba-ad-dc-1-mitkrb5
154 script:
155 - ./configure.developer
156 - make -j
157@@ -257,6 +285,10 @@ debian9-samba-o3:
158 extends: .samba-o3-template
159 image: $SAMBA_CI_CONTAINER_IMAGE_debian9
160
161+debian10-samba-o3:
162+ extends: .samba-o3-template
163+ image: $SAMBA_CI_CONTAINER_IMAGE_debian10
164+
165 opensuse150-samba-o3:
166 extends: .samba-o3-template
167 image: $SAMBA_CI_CONTAINER_IMAGE_opensuse150
168@@ -271,6 +303,12 @@ centos7-samba-o3:
169 variables:
170 # Git on CentOS doesn't support shallow git cloning
171 GIT_DEPTH: ""
172+ # We need a newer GnuTLS version on CentOS7
173+ PKG_CONFIG_PATH: "/usr/lib64/compat-gnutls34/pkgconfig:/usr/lib64/compat-nettle32/pkgconfig"
174+
175+centos8-samba-o3:
176+ extends: .samba-o3-template
177+ image: $SAMBA_CI_CONTAINER_IMAGE_centos8
178
179 fedora29-samba-o3:
180 extends: .samba-o3-template
181@@ -280,6 +318,10 @@ fedora30-samba-o3:
182 extends: .samba-o3-template
183 image: $SAMBA_CI_CONTAINER_IMAGE_fedora30
184
185+fedora31-samba-o3:
186+ extends: .samba-o3-template
187+ image: $SAMBA_CI_CONTAINER_IMAGE_fedora31
188+
189 #
190 # Keep the samba-o3 sections at the end ...
191 #
192diff --git a/Makefile b/Makefile
193index 07b928e..0b7b0ae 100644
194--- a/Makefile
195+++ b/Makefile
196@@ -100,7 +100,7 @@ pydoctor:
197 pep8:
198 $(WAF) pep8
199
200-# Adding force on the depencies will force the target to be always rebuild form the Make
201+# Adding force on the dependencies will force the target to be always rebuild form the Make
202 # point of view forcing make to invoke waf
203
204 bin/smbd: FORCE
205diff --git a/SECURITY.md b/SECURITY.md
206new file mode 100644
207index 0000000..5d3c88c
208--- /dev/null
209+++ b/SECURITY.md
210@@ -0,0 +1,15 @@
211+# Security Policy
212+
213+## Supported Versions
214+
215+See https://wiki.samba.org/index.php/Samba_Release_Planning for a
216+matrix showing the currently supported versions of Samba.
217+
218+## Reporting a Vulnerability
219+
220+Please report all security issues or defects to security@samba.org and **never** on IRC, public mailing lists or in Bugzilla!
221+
222+Once reported and if warrented by the specific issue, the Samba Team
223+will follow the process outlined in
224+https://wiki.samba.org/index.php/Samba_Security_Process to produce a
225+security release.
226diff --git a/VERSION b/VERSION
227index c07b1d1..a8cdfb7 100644
228--- a/VERSION
229+++ b/VERSION
230@@ -24,8 +24,8 @@
231 # -> "3.0.0" #
232 ########################################################
233 SAMBA_VERSION_MAJOR=4
234-SAMBA_VERSION_MINOR=11
235-SAMBA_VERSION_RELEASE=6
236+SAMBA_VERSION_MINOR=12
237+SAMBA_VERSION_RELEASE=2
238
239 ########################################################
240 # If a official release has a serious bug #
241diff --git a/WHATSNEW.txt b/WHATSNEW.txt
242index 6f63561..57498cd 100644
243--- a/WHATSNEW.txt
244+++ b/WHATSNEW.txt
245@@ -1,265 +1,39 @@
246 ==============================
247- Release Notes for Samba 4.11.6
248- January 28, 2020
249- ==============================
250-
251-
252-This is the latest stable release of the Samba 4.11 release series.
253-
254-
255-Changes since 4.11.5:
256----------------------
257-
258-o Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
259- * BUG 14209: pygpo: Use correct method flags.
260-
261-o David Disseldorp <ddiss@samba.org>
262- * BUG 14216: vfs_ceph_snapshots: Fix root relative path handling.
263-
264-o Torsten Fohrer <torsten.fohrer@sbe.de>
265- * BUG 14209: Avoiding bad call flags with python 3.8, using METH_NOARGS
266- instead of zero.
267-
268-o Fabrice Fontaine <fontaine.fabrice@gmail.com>
269- * BUG 14218: source4/utils/oLschema2ldif: Include stdint.h before cmocka.h.
270-
271-o Björn Jacke <bjacke@samba.org>
272- * BUG 14122: docs-xml/winbindnssinfo: Clarify interaction with idmap_ad etc.
273-
274-o Volker Lendecke <vl@samba.org>
275- * BUG 14251: smbd: Fix the build with clang.
276-
277-o Gary Lockyer <gary@catalyst.net.nz>
278- * BUG 14199: upgradedns: Ensure lmdb lock files linked.
279-
280-o Anoop C S <anoopcs@redhat.com>
281- * BUG 14182: s3: VFS: glusterfs: Reset nlinks for symlink entries during
282- readdir.
283-
284-o Andreas Schneider <asn@samba.org>
285- * BUG 14101: smbc_stat() doesn't return the correct st_mode and also the
286- uid/gid is not filled (SMBv1) file.
287- * BUG 14219: librpc: Fix string length checking in
288- ndr_pull_charset_to_null().
289-
290-o Martin Schwenke <martin@meltin.net>
291- * BUG 14227: ctdb-scripts: Strip square brackets when gathering connection
292- info.
293-
294-
295-#######################################
296-Reporting bugs & Development Discussion
297-#######################################
298-
299-Please discuss this release on the samba-technical mailing list or by
300-joining the #samba-technical IRC channel on irc.freenode.net.
301-
302-If you do report problems then please try to send high quality
303-feedback. If you don't provide vital information to help us track down
304-the problem then you will probably be ignored. All bug reports should
305-be filed under the "Samba 4.1 and newer" product in the project's Bugzilla
306-database (https://bugzilla.samba.org/).
307-
308-
309-======================================================================
310-== Our Code, Our Bugs, Our Responsibility.
311-== The Samba Team
312-======================================================================
313-
314-
315-Release notes for older releases follow:
316-----------------------------------------
317-
318- ==============================
319- Release Notes for Samba 4.11.5
320- January 21, 2020
321- ==============================
322-
323-
324-This is a security release in order to address the following defects:
325-
326-o CVE-2019-14902: Replication of ACLs set to inherit down a subtree on AD
327- Directory not automatic.
328-o CVE-2019-14907: Crash after failed character conversion at log level 3 or
329- above.
330-o CVE-2019-19344: Use after free during DNS zone scavenging in Samba AD DC.
331-
332-
333-=======
334-Details
335-=======
336-
337-o CVE-2019-14902:
338- The implementation of ACL inheritance in the Samba AD DC was not complete,
339- and so absent a 'full-sync' replication, ACLs could get out of sync between
340- domain controllers.
341-
342-o CVE-2019-14907:
343- When processing untrusted string input Samba can read past the end of the
344- allocated buffer when printing a "Conversion error" message to the logs.
345-
346-o CVE-2019-19344:
347- During DNS zone scavenging (of expired dynamic entries) there is a read of
348- memory after it has been freed.
349-
350-For more details and workarounds, please refer to the security advisories.
351-
352-
353-Changes since 4.11.4:
354----------------------
355-
356-o Andrew Bartlett <abartlet@samba.org>
357- * BUG 12497: CVE-2019-14902: Replication of ACLs down subtree on AD Directory
358- not automatic.
359- * BUG 14208: CVE-2019-14907: lib/util: Do not print the failed to convert
360- string into the logs.
361-
362-o Gary Lockyer <gary@catalyst.net.nz>
363- * BUG 14050: CVE-2019-19344: kcc dns scavenging: Fix use after free in
364- dns_tombstone_records_zone.
365-
366-
367-#######################################
368-Reporting bugs & Development Discussion
369-#######################################
370-
371-Please discuss this release on the samba-technical mailing list or by
372-joining the #samba-technical IRC channel on irc.freenode.net.
373-
374-If you do report problems then please try to send high quality
375-feedback. If you don't provide vital information to help us track down
376-the problem then you will probably be ignored. All bug reports should
377-be filed under the "Samba 4.1 and newer" product in the project's Bugzilla
378-database (https://bugzilla.samba.org/).
379-
380-
381-======================================================================
382-== Our Code, Our Bugs, Our Responsibility.
383-== The Samba Team
384-======================================================================
385-
386-
387-----------------------------------------------------------------------
388-
389-
390- ==============================
391- Release Notes for Samba 4.11.4
392- December 16, 2019
393- ==============================
394-
395-
396-This is the latest stable release of the Samba 4.11 release series.
397-
398-
399-Changes since 4.11.3:
400----------------------
401-
402-o Jeremy Allison <jra@samba.org>
403- * BUG 14161: s3: libsmb: Ensure SMB1 cli_qpathinfo2() doesn't return an inode
404- number.
405- * BUG 14174: s3: utils: smbtree. Ensure we don't call cli_RNetShareEnum()
406- on an SMB1 connection.
407- * BUG 14176: NT_STATUS_ACCESS_DENIED becomes EINVAL when using SMB2 in
408- SMBC_opendir_ctx.
409- * BUG 14189: s3: smbd: SMB2 - Ensure we use the correct session_id if
410- encrypting an interim response.
411- * BUG 14205: Prevent smbd crash after invalid SMB1 negprot.
412-
413-o Ralph Boehme <slow@samba.org>
414- * BUG 13745: s3:printing: Fix %J substition.
415- * BUG 13925: s3: Remove now unneeded call to cmdline_messaging_context().
416- * BUG 14069: Incomplete conversion of former parametric options.
417- * BUG 14070: Fix sync dosmode fallback in async dosmode codepath.
418- * BUG 14171: vfs_fruit returns capped resource fork length.
419-
420-o Isaac Boukris <iboukris@gmail.com>
421- * BUG 14116: libnet_join: Add SPNs for additional-dns-hostnames entries.
422-
423-o Volker Lendecke <vl@samba.org>
424- * BUG 14211: smbd: Increase a debug level.
425-
426-o Stefan Metzmacher <metze@samba.org>
427- * BUG 14153: Prevent azure ad connect from reporting discovery errors:
428- reference-value-not-ldap-conformant.
429-
430-o Christof Schmitt <cs@samba.org>
431- * BUG 14179: krb5_plugin: Fix developer build with newer heimdal system
432- library.
433-
434-o Andreas Schneider <asn@samba.org>
435- * BUG 14168: replace: Only link libnsl and libsocket if requrired.
436-
437-o Martin Schwenke <martin@meltin.net>
438- * BUG 14175: ctdb: Incoming queue can be orphaned causing communication
439- breakdown.
440-
441-o Uri Simchoni <uri@samba.org>
442- * BUG 13846: ldb: Release ldb 2.0.8. Cross-compile will not take
443- cross-answers or cross-execute.
444- * BUG 13856: heimdal-build: Avoid hard-coded /usr/include/heimdal in
445- asn1_compile-generated code.
446-
447-
448-#######################################
449-Reporting bugs & Development Discussion
450-#######################################
451-
452-Please discuss this release on the samba-technical mailing list or by
453-joining the #samba-technical IRC channel on irc.freenode.net.
454-
455-If you do report problems then please try to send high quality
456-feedback. If you don't provide vital information to help us track down
457-the problem then you will probably be ignored. All bug reports should
458-be filed under the "Samba 4.1 and newer" product in the project's Bugzilla
459-database (https://bugzilla.samba.org/).
460-
461-
462-======================================================================
463-== Our Code, Our Bugs, Our Responsibility.
464-== The Samba Team
465-======================================================================
466-
467-
468-----------------------------------------------------------------------
469-
470-
471- ==============================
472- Release Notes for Samba 4.11.3
473- December 10, 2019
474+ Release Notes for Samba 4.12.2
475+ April 28, 2020
476 ==============================
477
478
479 This is a security release in order to address the following defects:
480
481-o CVE-2019-14861: Samba AD DC zone-named record Denial of Service in DNS
482- management server (dnsserver).
483-o CVE-2019-14870: DelegationNotAllowed not being enforced in protocol transition
484- on Samba AD DC.
485+o CVE-2020-10700: Use-after-free in Samba AD DC LDAP Server with ASQ
486+o CVE-2020-10704: LDAP Denial of Service (stack overflow) in Samba AD DC
487
488
489 =======
490 Details
491 =======
492
493-o CVE-2019-14861:
494- An authenticated user can crash the DCE/RPC DNS management server by creating
495- records with matching the zone name.
496+o CVE-2020-10700:
497+ A client combining the 'ASQ' and 'Paged Results' LDAP controls can cause a
498+ use-after-free in Samba's AD DC LDAP server.
499+o CVE-2020-10704:
500+ A deeply nested filter in an un-authenticated LDAP search can exhaust the
501+ LDAP server's stack memory causing a SIGSEGV.
502
503-o CVE-2019-14870:
504- The DelegationNotAllowed Kerberos feature restriction was not being applied
505- when processing protocol transition requests (S4U2Self), in the AD DC KDC.
506+For more details, please refer to the security advisories.
507
508-For more details and workarounds, please refer to the security advisories.
509
510-
511-Changes since 4.11.2:
512----------------------
513+Changes since 4.12.1
514+--------------------
515
516 o Andrew Bartlett <abartlet@samba.org>
517- * BUG 14138: CVE-2019-14861: Fix DNSServer RPC server crash.
518+ * BUG 14331: CVE-2020-10700: Fix use-after-free in AD DC LDAP server when
519+ ASQ and paged_results combined.
520
521-o Isaac Boukris <iboukris@gmail.com>
522- * BUG 14187: CVE-2019-14870: DelegationNotAllowed not being enforced.
523+o Gary Lockyer <gary@catalyst.net.nz>
524+ * BUG 20454: CVE-2020-10704: Fix LDAP Denial of Service (stack overflow) in
525+ Samba AD DC.
526
527
528 #######################################
529@@ -272,7 +46,7 @@ joining the #samba-technical IRC channel on irc.freenode.net.
530 If you do report problems then please try to send high quality
531 feedback. If you don't provide vital information to help us track down
532 the problem then you will probably be ignored. All bug reports should
533-be filed under the "Samba 4.1 and newer" product in the project's Bugzilla
534+be filed under the Samba 4.1 and newer product in the project's Bugzilla
535 database (https://bugzilla.samba.org/).
536
537
538@@ -282,144 +56,59 @@ database (https://bugzilla.samba.org/).
539 ======================================================================
540
541
542-----------------------------------------------------------------------
543-
544+Release notes for older releases follow:
545+----------------------------------------
546
547 ==============================
548- Release Notes for Samba 4.11.2
549- October 29, 2019
550+ Release Notes for Samba 4.12.1
551+ April 07, 2020
552 ==============================
553
554
555-This is a security release in order to address the following defects:
556-
557-o CVE-2019-10218: Client code can return filenames containing path separators.
558-o CVE-2019-14833: Samba AD DC check password script does not receive the full
559- password.
560-o CVE-2019-14847: User with "get changes" permission can crash AD DC LDAP server
561- via dirsync.
562-
563-=======
564-Details
565-=======
566-
567-o CVE-2019-10218:
568- Malicious servers can cause Samba client code to return filenames containing
569- path separators to calling code.
570-
571-o CVE-2019-14833:
572- When the password contains multi-byte (non-ASCII) characters, the check
573- password script does not receive the full password string.
574+This is the latest stable release of the Samba 4.12 release series.
575
576-o CVE-2019-14847:
577- Users with the "get changes" extended access right can crash the AD DC LDAP
578- server by requesting an attribute using the range= syntax.
579
580-For more details and workarounds, please refer to the security advisories.
581+Changes since 4.12.0
582+--------------------
583
584-
585-Changes since 4.11.1:
586----------------------
587-
588-o Jeremy Allison <jra@samba.org>
589- * BUG 14071: CVE-2019-10218 - s3: libsmb: Protect SMB1 and SMB2 client code
590- from evil server returned names.
591-
592-o Andrew Bartlett <abartlet@samba.org>
593- * BUG 12438: CVE-2019-14833: Use utf8 characters in the unacceptable
594- password.
595- * BUG 14040: CVE-2019-14847 dsdb: Correct behaviour of ranged_results when
596- combined with dirsync.
597+o Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
598+ * BUG 14295: nmblib: Avoid undefined behaviour in handle_name_ptrs().
599
600 o Björn Baumbach <bb@sernet.de>
601- * BUG 12438: CVE-2019-14833 dsdb: Send full password to check password
602- script.
603-
604-
605-#######################################
606-Reporting bugs & Development Discussion
607-#######################################
608-
609-Please discuss this release on the samba-technical mailing list or by
610-joining the #samba-technical IRC channel on irc.freenode.net.
611-
612-If you do report problems then please try to send high quality
613-feedback. If you don't provide vital information to help us track down
614-the problem then you will probably be ignored. All bug reports should
615-be filed under the "Samba 4.1 and newer" product in the project's Bugzilla
616-database (https://bugzilla.samba.org/).
617-
618-
619-======================================================================
620-== Our Code, Our Bugs, Our Responsibility.
621-== The Samba Team
622-======================================================================
623-
624-
625-----------------------------------------------------------------------
626-
627-
628- ==============================
629- Release Notes for Samba 4.11.1
630- October 18, 2019
631- ==============================
632-
633-
634-This is the latest stable release of the Samba 4.11 release series.
635-
636-
637-Changes since 4.11.0:
638----------------------
639-
640-o Michael Adam <obnox@samba.org>
641- * BUG 14141: getpwnam and getpwuid need to return data for ID_TYPE_BOTH
642- group.
643-
644-o Jeremy Allison <jra@samba.org>
645- * BUG 14094: smbc_readdirplus() is incompatible with smbc_telldir() and
646- smbc_lseekdir().
647- * BUG 14152: s3: smbclient: Stop an SMB2-connection from blundering into
648- SMB1-specific calls.
649+ * BUG 14296: samba-tool group: Handle group names with special chars
650+ correctly.
651
652 o Ralph Boehme <slow@samba.org>
653- * BUG 14137: Fix stale file handle error when using mkstemp on a share.
654-
655-o Isaac Boukris <iboukris@gmail.com>
656- * BUG 14106: Fix spnego fallback from kerberos to ntlmssp in smbd server.
657- * BUG 14140: Overlinking libreplace against librt and pthread against every
658- binary or library causes issues.
659+ * BUG 14293: Add missing check for DMAPI offline status in async DOS
660+ attributes.
661+ * BUG 14295: Starting ctdb node that was powered off hard before results in
662+ recovery loop.
663+ * BUG 14307: smbd: Ignore set NTACL requests which contain S-1-5-88 NFS ACEs.
664+ * BUG 14316: vfs_recycle: Prevent flooding the log if we're called on
665+ non-existant paths.
666
667 o Günther Deschner <gd@samba.org>
668- * BUG 14130: s3-winbindd: Fix forest trusts with additional trust attributes.
669- * BUG 14134: auth/gensec: Fix non-AES schannel seal.
670-
671-o Amitay Isaacs <amitay@gmail.com>
672- * BUG 14147: Deleted records can be resurrected during recovery.
673+ * BUG 14313: librpc: Fix IDL for svcctl_ChangeServiceConfigW.
674+ * BUG 14327: nsswitch: Fix use-after-free causing segfault in
675+ _pam_delete_cred.
676
677-o Björn Jacke <bj@sernet.de>
678- * BUG 14136: Fix uncaught exception in classicupgrade.
679- * BUG 14139: fault.c: Improve fault_report message text pointing to our wiki.
680+o Art M. Gallagher <repos@artmg.net>
681+ * BUG 13622: fruit:time machine max size is broken on arm.
682
683-o Bryan Mason <bmason@redhat.com>
684- * BUG 14128: s3:client: Use DEVICE_URI, instead of argv[0], for Device URI.
685-
686-o Stefan Metzmacher <metze@samba.org>
687- * BUG 14124: pam_winbind with krb5_auth or wbinfo -K doesn't work for users
688- of trusted domains/forests.
689-
690-o Mathieu Parent <math.parent@gmail.com>
691- * BUG 14131: Remove 'pod2man' as it is no longer needed.
692+o Amitay Isaacs <amitay@gmail.com>
693+ * BUG 14294: CTDB recovery corner cases can cause record resurrection and
694+ node banning.
695
696-o Andreas Schneider <asn@samba.org>
697- * BUG 13884: Joining Active Directory should not use SAMR to set the
698- password.
699- * BUG 14140: Overlinking libreplace against librt and pthread against every
700- binary or library causes issues.
701- * BUG 14155: 'kpasswd' fails when built with MIT Kerberos.
702+o Noel Power <noel.power@suse.com>
703+ * BUG 14332: s3/utils: Fix double free error with smbtree.
704
705 o Martin Schwenke <martin@meltin.net>
706- * BUG 14129: Exit code of ctdb nodestatus should not be influenced by deleted
707- nodes.
708+ * BUG 14294: CTDB recovery corner cases can cause record resurrection and
709+ node banning.
710+ * BUG 14295: Starting ctdb node that was powered off hard before results in
711+ recovery loop.
712+ * BUG 14324: CTDB recovery daemon can crash due to dereference of NULL
713+ pointer.
714
715
716 #######################################
717@@ -432,7 +121,7 @@ joining the #samba-technical IRC channel on irc.freenode.net.
718 If you do report problems then please try to send high quality
719 feedback. If you don't provide vital information to help us track down
720 the problem then you will probably be ignored. All bug reports should
721-be filed under the "Samba 4.1 and newer" product in the project's Bugzilla
722+be filed under the Samba 4.1 and newer product in the project's Bugzilla
723 database (https://bugzilla.samba.org/).
724
725
726@@ -446,185 +135,49 @@ database (https://bugzilla.samba.org/).
727
728
729 ==============================
730- Release Notes for Samba 4.11.0
731- September 17, 2019
732+ Release Notes for Samba 4.12.0
733+ March 03, 2020
734 ==============================
735
736
737-This is the first stable release of the Samba 4.11 release series.
738+This is the first stable release of the Samba 4.12 release series.
739 Please read the release notes carefully before upgrading.
740
741
742-UPGRADING
743-=========
744-
745-AD Database compatibility
746--------------------------
747-
748-Samba 4.11 has changed how the AD database is stored on disk. AD users should
749-not really be affected by this change when upgrading to 4.11. However, AD
750-users should be extremely careful if they need to downgrade from Samba 4.11 to
751-an older release.
752-
753-Samba 4.11 maintains database compatibility with older Samba releases. The
754-database will automatically get rewritten in the new 4.11 format when you
755-first start the upgraded samba executable.
756-
757-However, when downgrading from 4.11 you will need to manually downgrade the AD
758-database yourself. Note that you will need to do this step before you install
759-the downgraded Samba packages. For more details, see:
760-https://wiki.samba.org/index.php/Downgrading_an_Active_Directory_DC
761-
762-When either upgrading or downgrading, users should also avoid making any
763-database modifications between installing the new Samba packages and starting
764-the samba executable.
765-
766-SMB1 is disabled by default
767----------------------------
768-
769-The defaults of 'client min protocol' and 'server min protocol'
770-have been changed to SMB2_02.
771-
772-This means clients without support for SMB2 or SMB3 are no longer
773-able to connect to smbd (by default).
774-
775-It also means client tools like smbclient and other,
776-as well as applications making use of libsmbclient are no longer
777-able to connect to servers without SMB2 or SMB3 support (by default).
778-
779-It's still possible to allow SMB1 dialects, e.g. NT1, LANMAN2
780-and LANMAN1 for client and server, as well as CORE and COREPLUS on
781-the client.
782-
783-Note that most commandline tools e.g. smbclient, smbcacls and others
784-also support the '--option' argument to overwrite smb.conf options,
785-e.g. --option='client min protocol=NT1' might be useful.
786-
787-As Microsoft no longer installs SMB1 support in recent releases
788-or uninstalls it after 30 days without usage, the Samba Team
789-tries to get remove the SMB1 usage as much as possible.
790-
791-SMB1 is officially deprecated and might be removed step by step
792-in the following years. If you have a strong requirement for SMB1
793-(except for supporting old Linux Kernels), please file a bug
794-at https://bugzilla.samba.org and let us know about the details.
795-
796-LanMan and plaintext authentication deprecated
797-----------------------------------------------
798-
799-The "lanman auth" and "encrypt passwords" parameters are deprecated
800-with this release as both are only applicable to SMB1 and are quite
801-insecure. NTLM, NTLMv2 and Kerberos authentication are unaffected, as
802-"encrypt passwords = yes" has been the default since Samba 3.0.0.
803-
804-If you have a strong requirement for these authentication protocols,
805-please file a bug at https://bugzilla.samba.org and let us know about
806-the details.
807-
808-BIND9_FLATFILE deprecated
809--------------------------
810-
811-The BIND9_FLATFILE DNS backend is deprecated in this release and will
812-be removed in the future. This was only practically useful on a single
813-domain controller or under expert care and supervision.
814-
815-This release therefore deprecates the "rndc command" smb.conf
816-parameter, which is used to support this configuration. After writing
817-out a list of DCs permitted to make changes to the DNS Zone "rndc
818-command" is called with reload to tell the 'named' server if a DC was
819-added/removed to to the domain.
820-
821-
822 NEW FEATURES/CHANGES
823 ====================
824
825-Default samba process model
826----------------------------
827-
828-The default for the '--model' argument passed to the samba executable has changed
829-from 'standard' to 'prefork'. This means a difference in the number of samba
830-child processes that are created to handle client connections. The previous
831-default would create a separate process for every LDAP or NETLOGON client
832-connection. For a network with a lot of persistent client connections, this
833-could result in significant memory overhead. Now, with the new default of
834-'prefork', the LDAP, NETLOGON, and KDC services will create a fixed number of
835-worker processes at startup and share the client connections amongst these
836-workers. The number of worker processes can be configured by the 'prefork
837-children' setting in the smb.conf (the default is 4).
838-
839-Authentication Logging
840-----------------------
841-
842-Winbind now logs PAM_AUTH and NTLM_AUTH events, a new attribute "logonId" has
843-been added to the Authentication JSON log messages. This contains a random
844-logon id that is generated for each PAM_AUTH and NTLM_AUTH request and is passed
845-to SamLogon, linking the windbind and SamLogon requests.
846-
847-The serviceDescription of the messages is set to "winbind", the authDescription
848-is set to one of:
849- "PASSDB, <command>, <pid>"
850- "PAM_AUTH, <command>, <pid>"
851- "NTLM_AUTH, <command>, <pid>"
852-where:
853- <command> is the name of the command makinmg the winbind request i.e. wbinfo
854- <pid> is the process id of the requesting process.
855-
856-The version of the JSON Authentication messages has been changed from 1.1 to
857-1.2.
858-
859-LDAP referrals
860---------------
861-
862-The scheme of returned LDAP referrals now reflects the scheme of the original
863-request, i.e. referrals received via ldap are prefixed with "ldap://"
864-and those over ldaps are prefixed with "ldaps://".
865-
866-Previously all referrals were prefixed with "ldap://".
867-
868-Bind9 logging
869--------------
870-
871-It is now possible to log the duration of DNS operations performed by Bind9.
872-This should aid future diagnosis of performance issues and could be used to
873-monitor DNS performance. The logging is enabled by setting log level to
874-"dns:10" in smb.conf.
875-
876-The logs are currently human readable text only, i.e. no JSON formatted output.
877-
878-Log lines are of the form:
879-
880- <function>: DNS timing: result: [<result>] duration: (<duration>)
881- zone: [<zone>] name: [<name>] data: [<data>]
882-
883- durations are in microseconds.
884-
885-Default schema updated to 2012_R2
886----------------------------------
887+Python 3.5 Required
888+-------------------
889
890-Default AD schema changed from 2008_R2 to 2012_R2. 2012_R2 functional level
891-is not yet available. Older schemas can be used by provisioning with the
892-'--base-schema' argument. Existing installations can be updated with the
893-samba-tool command "domain schemaupgrade".
894+Samba's minimum runtime requirement for python was raised to Python
895+3.4 with samba 4.11. Samba 4.12 raises this minimum version to Python
896+3.5 both to access new features and because this is the oldest version
897+we test with in our CI infrastructure.
898
899-Samba's replication code has also been improved to handle replication
900-with the 2012 schema (the core of this replication fix has also been
901-backported to 4.9.11 and will be in a 4.10.x release).
902+(Build time support for the file server with Python 2.6 has not
903+changed)
904
905-For more about how the AD schema relates to overall Windows compatibility,
906-please read:
907-https://wiki.samba.org/index.php/Windows_2012_Server_compatibility
908-
909-GnuTLS 3.2 required
910--------------------
911+Removing in-tree cryptography: GnuTLS 3.4.7 required
912+----------------------------------------------------
913
914 Samba is making efforts to remove in-tree cryptographic functionality,
915 and to instead rely on externally maintained libraries. To this end,
916 Samba has chosen GnuTLS as our standard cryptographic provider.
917
918-Samba now requires GnuTLS 3.2 to be installed (including development
919+Samba now requires GnuTLS 3.4.7 to be installed (including development
920 headers at build time) for all configurations, not just the Samba AD
921 DC.
922
923+Thanks to this work Samba no longer ships an in-tree DES
924+implementation and on GnuTLS 3.6.5 or later Samba will include no
925+in-tree cryptography other than the MD4 hash and that
926+implemented in our copy of Heimdal.
927+
928+Using GnuTLS for SMB3 encryption you will notice huge performance and copy
929+speed improvements. Tests with the CIFS Kernel client from Linux Kernel 5.3
930+show a 3x speed improvement for writing and a 2.5x speed improvement for reads!
931+
932 NOTE WELL: The use of GnuTLS means that Samba will honour the
933 system-wide 'FIPS mode' (a reference to the US FIPS-140 cryptographic
934 standard) and so will not operate in many still common situations if
935@@ -635,165 +188,200 @@ A future Samba version will mitigate this to some extent where good
936 cryptography effectively wraps bad cryptography, but for now that above
937 applies.
938
939-samba-tool improvements
940------------------------
941+zlib library is now required to build Samba
942+-------------------------------------------
943
944-A new "samba-tool contact" command has been added to allow the
945-command-line manipulation of contacts, as used for address book
946-lookups in LDAP.
947+Samba no longer includes a local copy of zlib in our source tarball.
948+By removing this we do not need to ship (even where we did not
949+build) the old, broken zip encryption code found there.
950
951-The "samba-tool [user|group|computer|group|contact] edit" command has been
952-improved to operate more pleasantly on international character sets.
953+New Spotlight backend for Elasticsearch
954+---------------------------------------
955
956-100,000 USER and LARGER Samba AD DOMAINS
957-========================================
958+Support for the macOS specific Spotlight search protocol has been enhanced
959+significantly. Starting with 4.12 Samba supports using Elasticsearch as search
960+backend. Various new parameters have been added to configure this:
961
962-Extensive efforts have been made to optimise Samba for use in
963-organisations (for example) targeting 100,000 users, plus 120,000
964-computer objects, as well as large number of group memberships.
965+ spotlight backend = noindex | elasticsearch | tracker
966+ elasticsearch:address = ADDRESS
967+ elasticsearch:port = PORT
968+ elasticsearch:use tls = BOOLEAN
969+ elasticsearch:index = INDEXNAME
970+ elasticsearch:mappings = PATH
971+ elasticsearch:max results = NUMBER
972
973-Many of the specific efforts are detailed below, but the net results
974-is to remove barriers to significantly larger Samba deployments
975-compared to previous releases.
976+Samba also ships a Spotlight client command "mdfind" which can be used to search
977+any SMB server that runs the Spotlight RPC service. See the manpage of mdfind
978+for details.
979
980-Reindex performance improvements
981---------------------------------
982+Note that when upgrading existing installations that are using the previous
983+default Spotlight backend Gnome Tracker must explicitly set "spotlight backend =
984+tracker" as the new default is "noindex".
985
986-The performance of samba-tool dbcheck --reindex has been improved,
987-especially for large domains.
988+'net ads kerberos pac save' and 'net eventlog export'
989+-----------------------------------------------------
990
991-join performance improvements
992------------------------------
993+The 'net ads kerberos pac save' and 'net eventlog export' tools will
994+no longer silently overwrite an existing file during data export. If
995+the filename given exits, an error will be shown.
996
997-The performance of samba-tool domain join has been improved,
998-especially for large domains.
999+Fuzzing
1000+-------
1001
1002-LDAP Server memory improvements
1003--------------------------------
1004+A large number of fuzz targets have been added to Samba, and Samba has
1005+been registered in Google's oss-fuzz cloud fuzzing service. In
1006+particular, we now have good fuzzing coverage of our generated NDR
1007+parsing code.
1008
1009-The LDAP server has improved memory efficiency, ensuring that large
1010-LDAP responses (for example a search for all objects) is not copied
1011-multiple times into memory.
1012+A large number of issues have been found and fixed thanks to this
1013+effort.
1014
1015-Setting lmdb map size
1016----------------------
1017+'samba-tool' improvements add contacts as member to groups
1018+----------------------------------------------------------
1019
1020-It is now possible to set the lmdb map size (the maximum permitted
1021-size for the database). "samba-tool" now accepts the
1022-"--backend-store-size" i.e. --backend-store-size=4Gb. If not
1023-specified it defaults to 8Gb.
1024+Previously 'samba-tool group addmemers' can just add users, groups and
1025+computers as members to groups. But also contacts can be members of
1026+groups. Samba 4.12 adds the functionality to add contacts to
1027+groups. Since contacts have no sAMAccountName, it's possible that
1028+there are more than one contact with the same name in different
1029+organizational units. Therefore it's necessary to have an option to
1030+handle group members by their DN.
1031
1032-This option is avaiable for the following sub commands:
1033- * domain provision
1034- * domain join
1035- * domain dcpromo
1036- * drs clone-dc-database
1037+To get the DN of an object there is now the "--full-dn" option available
1038+for all necessary commands.
1039
1040-LDB "batch_mode"
1041-----------------
1042+The MS Windows UI allows to search for specific types of group members
1043+when searching for new members for a group. This feature is included
1044+here with the new samba-tool group addmembers "--object-type=OBJECTYPE"
1045+option. The different types are selected accordingly to the Windows
1046+UI. The default samba-toole behaviour shouldn't be changed.
1047
1048-To improve performance during batch operations i.e. joins, ldb now
1049-accepts a "batch_mode" option. However to prevent any index or
1050-database inconsistencies if an operation fails, the entire transaction
1051-will be aborted at commit.
1052-
1053-New LDB pack format
1054--------------------
1055+Allow filtering by OU or subtree in samba-tool
1056+----------------------------------------------
1057
1058-On first use (startup of 'samba' or the first transaction write)
1059-Samba's sam.ldb will be updated to a new more efficient pack format.
1060-This will take a few moments.
1061+A new "--base-dn" and "--member-base-dn" option is added to relevant
1062+samba-tool user, group and ou management commands to allow operation
1063+on just one part of the AD tree, such as a single OU.
1064
1065-New LDB <= and >= index mode to improve replication performance
1066----------------------------------------------------------------
1067+VFS
1068+===
1069
1070-As well as a new pack format, Samba's sam.ldb uses a new index format
1071-allowing Samba to efficiently select objects changed since the last
1072-replication cycle. This in turn improves performance during
1073-replication of large domains.
1074+SMB_VFS_NTIMES
1075+--------------
1076
1077-https://wiki.samba.org/index.php/LDB_Greater_than_and_Less_than_indexing
1078+Samba now uses a sentinel value based on utimensat(2) UTIME_OMIT to denote
1079+to-be-ignored timestamp variables passed to the SMB_VFS_NTIMES() VFS function.
1080
1081-Improvements to ldb search performance
1082---------------------------------------
1083+VFS modules can check whether any of the time values inside a struct
1084+smb_file_time is to be ignored by calling is_omit_timespec() on the value.
1085
1086-Search performance on large LDB databases has been improved by
1087-reducing memory allocations made on each object.
1088+'io_uring' vfs module
1089+---------------------
1090
1091-Improvements to subtree rename performance
1092-------------------------------------------
1093+The module makes use of the new io_uring infrastructure
1094+(intruduced in Linux 5.1), see https://lwn.net/Articles/776703/
1095
1096-Improvements have been made to Samba's handling of subtree renames,
1097-for example of containers and organisational units, however large
1098-renames are still not recommended.
1099+Currently this implements SMB_VFS_{PREAD,PWRITE,FSYNC}_SEND/RECV
1100+and avoids the overhead of the userspace threadpool in the default
1101+vfs backend. See also vfs_io_uring(8).
1102
1103-CTDB changes
1104-============
1105+In order to build the module you need the liburing userspace library
1106+and its developement headers installed, see
1107+https://git.kernel.dk/cgit/liburing/
1108
1109-* nfs-linux-kernel-callout now defaults to using systemd service names
1110+At runtime you'll need a Linux kernel with version 5.1 or higher.
1111+Note that 5.4.14 and 5.4.15 have a regression that breaks the Samba
1112+module! The regression was fixed in Linux 5.4.16 again.
1113
1114- The Red Hat service names continue to be the default.
1115+MS-DFS changes in the VFS
1116+-------------------------
1117
1118- Other distributions should patch this file when packaging it.
1119+This release changes set getting and setting of MS-DFS redirects
1120+on the filesystem to go through two new VFS functions:
1121
1122-* The onnode -o option has been removed
1123+SMB_VFS_CREATE_DFS_PATHAT()
1124+SMB_VFS_READ_DFS_PATHAT()
1125
1126-* ctdbd logs when it is using more than 90% of a CPU thread
1127+instead of smbd explicitly storing MS-DFS redirects inside
1128+symbolic links on the filesystem. The underlying default
1129+implementations of this has not changed, the redirects are
1130+still stored inside symbolic links on the filesystem, but
1131+moving the creation and reading of these links into the VFS
1132+as first-class functions now allows alternate methods of
1133+storing them (maybe in extended attributes) for OEMs who
1134+don't want to mis-use filesystem symbolic links in this
1135+way.
1136
1137- ctdbd is single threaded, so can become saturated if it uses the
1138- full capacity of a CPU thread. To help detect this situation, ctdbd
1139- now logs messages when CPU utilisation exceeds 90%. Each change in
1140- CPU utilisation over 90% is logged. A message is also logged when
1141- CPU utilisation drops below the 90% threshold.
1142
1143-* Script configuration variable CTDB_MONITOR_SWAP_USAGE has been removed
1144+CTDB changes
1145+============
1146
1147- 05.system.script now monitors total memory (i.e. physical memory +
1148- swap) utilisation using the existing CTDB_MONITOR_MEMORY_USAGE
1149- script configuration variable.
1150+* The ctdb_mutex_fcntl_helper periodically re-checks the lock file
1151
1152-CephFS Snapshot Integration
1153----------------------------
1154+ The re-check period is specified using a 2nd argument to this
1155+ helper. The default re-check period is 5s.
1156
1157-CephFS snapshots can now be exposed as previous file versions using the new
1158-ceph_snapshots VFS module. See the vfs_ceph_snapshots(8) man page for details.
1159+ If the file no longer exists or the inode number changes then the
1160+ helper exits. This triggers an election.
1161
1162
1163 REMOVED FEATURES
1164 ================
1165
1166-Web server
1167-----------
1168+The smb.conf parameter "write cache size" has been removed.
1169
1170-As a leftover from work related to the Samba Web Administration Tool (SWAT),
1171-Samba still supported a Python WSGI web server (which could still be turned on
1172-from the 'server services' smb.conf parameter). This service was unused and has
1173-now been removed from Samba.
1174+Since the in-memory write caching code was written, our write path has
1175+changed significantly. In particular we have gained very flexible
1176+support for async I/O, with the new linux io_uring interface in
1177+development. The old write cache concept which cached data in main
1178+memory followed by a blocking pwrite no longer gives any improvement
1179+on modern systems, and may make performance worse on memory-contrained
1180+systems, so this functionality should not be enabled in core smbd
1181+code.
1182
1183-samba-tool join subdomain
1184--------------------------
1185+In addition, it complicated the write code, which is a performance
1186+critical code path.
1187+
1188+If required for specialist purposes, it can be recreated as a VFS
1189+module.
1190+
1191+Retiring DES encryption types in Kerberos.
1192+------------------------------------------
1193+With this release, support for DES encryption types has been removed from
1194+Samba, and setting DES_ONLY flag for an account will cause Kerberos
1195+authentication to fail for that account (see RFC-6649).
1196+
1197+Samba-DC: DES keys no longer saved in DB.
1198+-----------------------------------------
1199+When a new password is set for an account, Samba DC will store random keys
1200+in DB instead of DES keys derived from the password. If the account is being
1201+migrated to Windbows or to an older version of Samba in order to use DES keys,
1202+the password must be reset to make it work.
1203+
1204+Heimdal-DC: removal of weak-crypto.
1205+-----------------------------------
1206+Following removal of DES encryption types from Samba, the embedded Heimdal
1207+build has been updated to not compile weak crypto code (HEIM_WEAK_CRYPTO).
1208
1209-The subdomain role has been removed from the join command. This option did
1210-not work and has no tests.
1211+vfs_netatalk: The netatalk VFS module has been removed.
1212+-------------------------------------------------------
1213
1214-Python2 support
1215----------------
1216+The netatalk VFS module has been removed. It was unmaintained and is not needed
1217+any more.
1218
1219-Samba 4.11 will not have any runtime support for Python 2.
1220+BIND9_FLATFILE deprecated
1221+-------------------------
1222
1223-If you are building Samba using the '--disable-python' option
1224-(i.e. you're excluding all the run-time Python support), then this
1225-will continue to work on a system that supports either python2 or
1226-python3.
1227+The BIND9_FLATFILE DNS backend is deprecated in this release and will
1228+be removed in the future. This was only practically useful on a single
1229+domain controller or under expert care and supervision.
1230
1231-To build Samba with python2 you *must* set the 'PYTHON' environment
1232-variable for both the 'configure' and 'make' steps, i.e.
1233- 'PYTHON=python2 ./configure'
1234- 'PYTHON=python2 make'
1235-This will override the python3 default.
1236+This release removes the 'rndc command' smb.conf parameter, which
1237+supported this configuration by writing out a list of DCs permitted to
1238+make changes to the DNS Zone and nudging the 'named' server if a new
1239+DC was added to the domain. Administrators using BIND9_FLATFILE will
1240+need to maintain this manually from now on.
1241
1242-Except for this specific build-time use of python2, Samba now requires
1243-Python 3.4 as a minimum.
1244
1245 smb.conf changes
1246 ================
1247@@ -801,111 +389,85 @@ smb.conf changes
1248 Parameter Name Description Default
1249 -------------- ----------- -------
1250
1251- allocation roundup size Default changed/ 0
1252- Deprecated
1253- client min protocol Changed default SMB2_02
1254- server min protocol Changed default SMB2_02
1255- mangled names Changed default illegal
1256- web port Removed
1257- fruit:zero_file_id Changed default False
1258- debug encryption New: dump encryption keys False
1259- rndc command Deprecated
1260- lanman auth Deprecated
1261- encrypt passwords Deprecated
1262+ elasticsearch:address New localhost
1263+ elasticsearch:port New 9200
1264+ elasticsearch:use tls New No
1265+ elasticsearch:index New _all
1266+ elasticsearch:mappings New DATADIR/elasticsearch_mappings.json
1267+ elasticsearch:max results New 100
1268+ nfs4:acedup Changed default merge
1269+ rndc command Removed
1270+ write cache size Removed
1271+ spotlight backend New noindex
1272
1273
1274-CHANGES SINCE 4.11.0rc4
1275+CHANGES SINCE 4.12.0rc4
1276 =======================
1277
1278+o Andrew Bartlett <abartlet@samba.org>
1279+ * BUG 14258: dsdb: Correctly handle memory in objectclass_attrs.
1280+
1281
1282-CHANGES SINCE 4.11.0rc3
1283+CHANGES SINCE 4.12.0rc3
1284 =======================
1285
1286+o Jeremy Allison <jra@samba.org>
1287+ * BUG 14269: s3: DFS: Don't allow link deletion on a read-only share.
1288+
1289 o Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
1290- * BUG 14049: ldb: Don't try to save a value that isn't there.
1291- * ldb_dn: Free dn components on explode failure.
1292- * ldb: Do not allow adding a DN as a base to itself.
1293+ * BUG 14284: pidl/wscript: configure should insist on Parse::Yapp::Driver.
1294
1295 o Andrew Bartlett <abartlet@samba.org>
1296- * ldb: Release ldb 2.0.7.
1297- * BUG 13695: ldb: Correct Pigeonhole principle validation in
1298- ldb_filter_attrs().
1299- * BUG 14049: Fix ldb dn crash.
1300- * BUG 14117: Deprecate "lanman auth = yes" and "encrypt passwords = no".
1301+ * BUG 14270: ldb: Fix search with scope ONE and small result sets.
1302+ * BUG 14284: build: Do not check if system perl modules should be bundled.
1303
1304-o Ralph Boehme <slow@samba.org>
1305- * BUG 14038: Fix compiling ctdb on older systems lacking POSIX robust
1306- mutexes.
1307- * BUG 14121: smbd returns bad File-ID on filehandle used to create a file or
1308- directory.
1309-
1310-o Poornima G <pgurusid@redhat.com>
1311- * BUG 14098: vfs_glusterfs: Use pthreadpool for scheduling aio operations.
1312+o Volker Lendecke <vl@samba.org>
1313+ * BUG 14285: smbd fails to handle EINTR from open(2) properly.
1314
1315 o Stefan Metzmacher <metze@samba.org>
1316- * BUG 14055: Add the target server name of SMB 3.1.1 connections as a hint to
1317- load balancers or servers with "multi-tenancy" support.
1318- * BUG 14113: Fix byte range locking bugs/regressions.
1319+ * BUG 14270: ldb: version 2.1.1.
1320
1321-o Swen Schillig <swen@linux.ibm.com>
1322- * ldb: Fix mem-leak if talloc_realloc fails.
1323
1324-o Evgeny Sinelnikov <sin@altlinux.org>
1325- * BUG 14007: Fix join with don't exists machine account.
1326-
1327-o Martin Schwenke <martin@meltin.net>
1328- * BUG 14085: ctdb-recoverd: Only check for LMASTER nodes in the VNN map.
1329-
1330-
1331-CHANGES SINCE 4.11.0rc2
1332+CHANGES SINCE 4.12.0rc2
1333 =======================
1334
1335-o Michael Adam <obnox@samba.org>
1336- * BUG 13972: Different Device Id for GlusterFS FUSE mount is causing data
1337- loss in CTDB cluster.
1338-
1339 o Jeremy Allison <jra@samba.org>
1340- * BUG 14035: CVE-2019-10197: Permissions check deny can allow user to escape
1341- from the share.
1342+ * BUG 14282: Set getting and setting of MS-DFS redirects on the filesystem
1343+ to go through two new VFS functions SMB_VFS_CREATE_DFS_PATHAT() and
1344+ SMB_VFS_READ_DFS_PATHAT().
1345
1346 o Andrew Bartlett <abartlet@samba.org>
1347- * BUG 14059: ldb: Release ldb 2.0.6 (log database repack so users know what
1348- is happening).
1349- * BUG 14092: docs: Deprecate "rndc command" for Samba 4.11.
1350+ * BUG 14255: bootstrap: Remove un-used dependency python3-crypto.
1351
1352-o Tim Beale <timbeale@catalyst.net.nz>
1353- * BUG 14059: ldb: Free memory when repacking database.
1354+o Volker Lendecke <vl@samba.org>
1355+ * BUG 14247: Fix CID 1458418 and 1458420.
1356+ * BUG 14281: lib: Fix a shutdown crash with "clustering = yes".
1357
1358-o Ralph Boehme <slow@samba.org>
1359- * BUG 14089: vfs_default: Use correct flag in vfswrap_fs_file_id.
1360- * BUG 14090: vfs_glusterfs: Initialize st_ex_file_id, st_ex_itime and
1361- st_ex_iflags.
1362+o Stefan Metzmacher <metze@samba.org>
1363+ * BUG 14247: Winbind member (source3) fails local SAM auth with empty domain
1364+ name.
1365+ * BUG 14265: winbindd: Handle missing idmap in getgrgid().
1366+ * BUG 14271: Don't use forward declaration for GnuTLS typedefs.
1367+ * BUG 14280: Add io_uring vfs module.
1368
1369-o Anoop C S <anoopcs@redhat.com>
1370- * BUG 14093: vfs_glusterfs: Enable profiling for file system operations.
1371+o Andreas Schneider <asn@samba.org>
1372+ * BUG 14250: libcli:smb: Improve check for gnutls_aead_cipher_(en|de)cryptv2.
1373
1374-o Aaron Haslett <aaronhaslett@catalyst.net.nz>
1375- * BUG 14059: Backport sambadowngradedatabase for v4.11.
1376
1377-o Stefan Metzmacher <metze@samba.org>
1378- * BUG 14035: CVE-2019-10197: Permissions check deny can allow user to escape
1379- from the share.
1380+CHANGES SINCE 4.12.0rc1
1381+=======================
1382
1383-o Christof Schmitt <cs@samba.org>
1384- * BUG 14032: vfs_gpfs: Implement special case for denying owner access to
1385- ACL.
1386+o Jeremy Allison <jra@samba.org>
1387+ * BUG 14239: s3: lib: nmblib. Clean up and harden nmb packet processing.
1388
1389-o Martin Schwenke <martin@meltin.net>
1390- * BUG 14084: Avoid marking a node as connected before it can receive packets.
1391- * BUG 14086: Fix onnode test failure with ShellCheck >= 0.4.7.
1392- * BUG 14087: ctdb-daemon: Stop "ctdb stop" from completing before freezing
1393- databases.
1394+o Andreas Schneider <asn@samba.org>
1395+ * BUG 14253: lib:util: Log mkdir error on correct debug levels.
1396
1397
1398 KNOWN ISSUES
1399 ============
1400
1401-https://wiki.samba.org/index.php/Release_Planning_for_Samba_4.11#Release_blocking_bugs
1402+https://wiki.samba.org/index.php/Release_Planning_for_Samba_4.12#Release_blocking_bugs
1403
1404
1405 #######################################
1406diff --git a/auth/common_auth.h b/auth/common_auth.h
1407index 9f04c9b..0452c67 100644
1408--- a/auth/common_auth.h
1409+++ b/auth/common_auth.h
1410@@ -129,12 +129,6 @@ struct auth4_context {
1411 /* Private data for the callbacks on this auth context */
1412 void *private_data;
1413
1414- NTSTATUS (*check_ntlm_password)(struct auth4_context *auth_ctx,
1415- TALLOC_CTX *mem_ctx,
1416- const struct auth_usersupplied_info *user_info,
1417- uint8_t *pauthoritative,
1418- void **server_returned_info,
1419- DATA_BLOB *nt_session_key, DATA_BLOB *lm_session_key);
1420 struct tevent_req *(*check_ntlm_password_send)(TALLOC_CTX *mem_ctx,
1421 struct tevent_context *ev,
1422 struct auth4_context *auth_ctx,
1423diff --git a/auth/credentials/credentials.c b/auth/credentials/credentials.c
1424index 5ebec48..81f9dbb 100644
1425--- a/auth/credentials/credentials.c
1426+++ b/auth/credentials/credentials.c
1427@@ -1333,19 +1333,19 @@ _PUBLIC_ NTSTATUS netlogon_creds_session_encrypt(
1428 return NT_STATUS_INVALID_PARAMETER;
1429 }
1430 if (state->negotiate_flags & NETLOGON_NEG_SUPPORTS_AES) {
1431- netlogon_creds_aes_encrypt(state,
1432- data.data,
1433- data.length);
1434+ status = netlogon_creds_aes_encrypt(state,
1435+ data.data,
1436+ data.length);
1437 } else if (state->negotiate_flags & NETLOGON_NEG_ARCFOUR) {
1438 status = netlogon_creds_arcfour_crypt(state,
1439 data.data,
1440 data.length);
1441- if (!NT_STATUS_IS_OK(status)) {
1442- return status;
1443- }
1444 } else {
1445 DBG_ERR("Unsupported encryption option negotiated");
1446- return NT_STATUS_NOT_SUPPORTED;
1447+ status = NT_STATUS_NOT_SUPPORTED;
1448+ }
1449+ if (!NT_STATUS_IS_OK(status)) {
1450+ return status;
1451 }
1452 return NT_STATUS_OK;
1453 }
1454diff --git a/auth/credentials/credentials_ntlm.c b/auth/credentials/credentials_ntlm.c
1455index bf55ab9..f1b22a6 100644
1456--- a/auth/credentials/credentials_ntlm.c
1457+++ b/auth/credentials/credentials_ntlm.c
1458@@ -51,6 +51,7 @@ _PUBLIC_ NTSTATUS cli_credentials_get_ntlm_response(struct cli_credentials *cred
1459 DATA_BLOB lm_session_key = data_blob_null;
1460 DATA_BLOB session_key = data_blob_null;
1461 const struct samr_Password *nt_hash = NULL;
1462+ int rc;
1463
1464 if (cred->use_kerberos == CRED_MUST_USE_KERBEROS) {
1465 TALLOC_FREE(frame);
1466@@ -159,7 +160,6 @@ _PUBLIC_ NTSTATUS cli_credentials_get_ntlm_response(struct cli_credentials *cred
1467 uint8_t session_nonce[16];
1468 uint8_t session_nonce_hash[16];
1469 uint8_t user_session_key[16];
1470- int rc;
1471
1472 lm_response = data_blob_talloc_zero(frame, 24);
1473 if (lm_response.data == NULL) {
1474@@ -188,9 +188,13 @@ _PUBLIC_ NTSTATUS cli_credentials_get_ntlm_response(struct cli_credentials *cred
1475 TALLOC_FREE(frame);
1476 return NT_STATUS_NO_MEMORY;
1477 }
1478- SMBOWFencrypt(nt_hash->hash,
1479- session_nonce_hash,
1480- nt_response.data);
1481+ rc = SMBOWFencrypt(nt_hash->hash,
1482+ session_nonce_hash,
1483+ nt_response.data);
1484+ if (rc != 0) {
1485+ TALLOC_FREE(frame);
1486+ return gnutls_error_to_ntstatus(rc, NT_STATUS_ACCESS_DISABLED_BY_POLICY_OTHER);
1487+ }
1488
1489 ZERO_ARRAY(session_nonce_hash);
1490
1491@@ -228,8 +232,12 @@ _PUBLIC_ NTSTATUS cli_credentials_get_ntlm_response(struct cli_credentials *cred
1492 TALLOC_FREE(frame);
1493 return NT_STATUS_NO_MEMORY;
1494 }
1495- SMBOWFencrypt(nt_hash->hash, challenge.data,
1496- nt_response.data);
1497+ rc = SMBOWFencrypt(nt_hash->hash, challenge.data,
1498+ nt_response.data);
1499+ if (rc != 0) {
1500+ TALLOC_FREE(frame);
1501+ return gnutls_error_to_ntstatus(rc, NT_STATUS_ACCESS_DISABLED_BY_POLICY_OTHER);
1502+ }
1503
1504 session_key = data_blob_talloc_zero(frame, 16);
1505 if (session_key.data == NULL) {
1506@@ -254,9 +262,14 @@ _PUBLIC_ NTSTATUS cli_credentials_get_ntlm_response(struct cli_credentials *cred
1507 return NT_STATUS_NO_MEMORY;
1508 }
1509
1510- SMBencrypt_hash(lm_hash,
1511- challenge.data,
1512- lm_response.data);
1513+ rc = SMBencrypt_hash(lm_hash,
1514+ challenge.data,
1515+ lm_response.data);
1516+ if (rc != 0) {
1517+ ZERO_STRUCT(lm_hash);
1518+ TALLOC_FREE(frame);
1519+ return gnutls_error_to_ntstatus(rc, NT_STATUS_ACCESS_DISABLED_BY_POLICY_OTHER);
1520+ }
1521 } else {
1522 /* just copy the nt_response */
1523 lm_response = data_blob_dup_talloc(frame, nt_response);
1524diff --git a/auth/credentials/pycredentials.c b/auth/credentials/pycredentials.c
1525index 1aef16a..7427e28 100644
1526--- a/auth/credentials/pycredentials.c
1527+++ b/auth/credentials/pycredentials.c
1528@@ -37,13 +37,6 @@
1529
1530 void initcredentials(void);
1531
1532-static PyObject *PyString_FromStringOrNULL(const char *str)
1533-{
1534- if (str == NULL)
1535- Py_RETURN_NONE;
1536- return PyUnicode_FromString(str);
1537-}
1538-
1539 static PyObject *py_creds_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
1540 {
1541 return pytalloc_steal(type, cli_credentials_init(NULL));
1542@@ -51,7 +44,12 @@ static PyObject *py_creds_new(PyTypeObject *type, PyObject *args, PyObject *kwar
1543
1544 static PyObject *py_creds_get_username(PyObject *self, PyObject *unused)
1545 {
1546- return PyString_FromStringOrNULL(cli_credentials_get_username(PyCredentials_AsCliCredentials(self)));
1547+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1548+ if (creds == NULL) {
1549+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1550+ return NULL;
1551+ }
1552+ return PyString_FromStringOrNULL(cli_credentials_get_username(creds));
1553 }
1554
1555 static PyObject *py_creds_set_username(PyObject *self, PyObject *args)
1556@@ -59,13 +57,18 @@ static PyObject *py_creds_set_username(PyObject *self, PyObject *args)
1557 char *newval;
1558 enum credentials_obtained obt = CRED_SPECIFIED;
1559 int _obt = obt;
1560+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1561+ if (creds == NULL) {
1562+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1563+ return NULL;
1564+ }
1565
1566 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {
1567 return NULL;
1568 }
1569 obt = _obt;
1570
1571- return PyBool_FromLong(cli_credentials_set_username(PyCredentials_AsCliCredentials(self), newval, obt));
1572+ return PyBool_FromLong(cli_credentials_set_username(creds, newval, obt));
1573 }
1574
1575 static PyObject *py_creds_get_ntlm_username_domain(PyObject *self, PyObject *unused)
1576@@ -74,7 +77,12 @@ static PyObject *py_creds_get_ntlm_username_domain(PyObject *self, PyObject *unu
1577 const char *user = NULL;
1578 const char *domain = NULL;
1579 PyObject *ret = NULL;
1580- cli_credentials_get_ntlm_username_domain(PyCredentials_AsCliCredentials(self),
1581+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1582+ if (creds == NULL) {
1583+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1584+ return NULL;
1585+ }
1586+ cli_credentials_get_ntlm_username_domain(creds,
1587 frame, &user, &domain);
1588 ret = Py_BuildValue("(ss)",
1589 user,
1590@@ -101,6 +109,11 @@ static PyObject *py_creds_get_ntlm_response(PyObject *self, PyObject *args, PyOb
1591 const char *kwnames[] = { "flags", "challenge",
1592 "target_info",
1593 NULL };
1594+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1595+ if (creds == NULL) {
1596+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1597+ return NULL;
1598+ }
1599
1600 tv_now = timeval_current();
1601 server_timestamp = timeval_to_nttime(&tv_now);
1602@@ -115,7 +128,7 @@ static PyObject *py_creds_get_ntlm_response(PyObject *self, PyObject *args, PyOb
1603 return NULL;
1604 }
1605
1606- status = cli_credentials_get_ntlm_response(PyCredentials_AsCliCredentials(self),
1607+ status = cli_credentials_get_ntlm_response(creds,
1608 frame, &flags,
1609 challenge,
1610 &server_timestamp,
1611@@ -147,7 +160,13 @@ static PyObject *py_creds_get_ntlm_response(PyObject *self, PyObject *args, PyOb
1612 static PyObject *py_creds_get_principal(PyObject *self, PyObject *unused)
1613 {
1614 TALLOC_CTX *frame = talloc_stackframe();
1615- PyObject *ret = PyString_FromStringOrNULL(cli_credentials_get_principal(PyCredentials_AsCliCredentials(self), frame));
1616+ PyObject *ret = NULL;
1617+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1618+ if (creds == NULL) {
1619+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1620+ return NULL;
1621+ }
1622+ ret = PyString_FromStringOrNULL(cli_credentials_get_principal(creds, frame));
1623 TALLOC_FREE(frame);
1624 return ret;
1625 }
1626@@ -157,18 +176,28 @@ static PyObject *py_creds_set_principal(PyObject *self, PyObject *args)
1627 char *newval;
1628 enum credentials_obtained obt = CRED_SPECIFIED;
1629 int _obt = obt;
1630+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1631+ if (creds == NULL) {
1632+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1633+ return NULL;
1634+ }
1635
1636 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {
1637 return NULL;
1638 }
1639 obt = _obt;
1640
1641- return PyBool_FromLong(cli_credentials_set_principal(PyCredentials_AsCliCredentials(self), newval, obt));
1642+ return PyBool_FromLong(cli_credentials_set_principal(creds, newval, obt));
1643 }
1644
1645 static PyObject *py_creds_get_password(PyObject *self, PyObject *unused)
1646 {
1647- return PyString_FromStringOrNULL(cli_credentials_get_password(PyCredentials_AsCliCredentials(self)));
1648+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1649+ if (creds == NULL) {
1650+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1651+ return NULL;
1652+ }
1653+ return PyString_FromStringOrNULL(cli_credentials_get_password(creds));
1654 }
1655
1656 static PyObject *py_creds_set_password(PyObject *self, PyObject *args)
1657@@ -177,12 +206,18 @@ static PyObject *py_creds_set_password(PyObject *self, PyObject *args)
1658 enum credentials_obtained obt = CRED_SPECIFIED;
1659 int _obt = obt;
1660 PyObject *result = NULL;
1661+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1662+ if (creds == NULL) {
1663+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1664+ return NULL;
1665+ }
1666+
1667 if (!PyArg_ParseTuple(args, PYARG_STR_UNI"|i", "utf8", &newval, &_obt)) {
1668 return NULL;
1669 }
1670 obt = _obt;
1671
1672- result = PyBool_FromLong(cli_credentials_set_password(PyCredentials_AsCliCredentials(self), newval, obt));
1673+ result = PyBool_FromLong(cli_credentials_set_password(creds, newval, obt));
1674 PyMem_Free(discard_const_p(void*, newval));
1675 return result;
1676 }
1677@@ -196,6 +231,11 @@ static PyObject *py_creds_set_utf16_password(PyObject *self, PyObject *args)
1678 Py_ssize_t size = 0;
1679 int result;
1680 bool ok;
1681+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1682+ if (creds == NULL) {
1683+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1684+ return NULL;
1685+ }
1686
1687 if (!PyArg_ParseTuple(args, "O|i", &newval, &_obt)) {
1688 return NULL;
1689@@ -209,7 +249,7 @@ static PyObject *py_creds_set_utf16_password(PyObject *self, PyObject *args)
1690 }
1691 blob.length = size;
1692
1693- ok = cli_credentials_set_utf16_password(PyCredentials_AsCliCredentials(self),
1694+ ok = cli_credentials_set_utf16_password(creds,
1695 &blob, obt);
1696
1697 return PyBool_FromLong(ok);
1698@@ -217,7 +257,12 @@ static PyObject *py_creds_set_utf16_password(PyObject *self, PyObject *args)
1699
1700 static PyObject *py_creds_get_old_password(PyObject *self, PyObject *unused)
1701 {
1702- return PyString_FromStringOrNULL(cli_credentials_get_old_password(PyCredentials_AsCliCredentials(self)));
1703+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1704+ if (creds == NULL) {
1705+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1706+ return NULL;
1707+ }
1708+ return PyString_FromStringOrNULL(cli_credentials_get_old_password(creds));
1709 }
1710
1711 static PyObject *py_creds_set_old_password(PyObject *self, PyObject *args)
1712@@ -225,13 +270,18 @@ static PyObject *py_creds_set_old_password(PyObject *self, PyObject *args)
1713 char *oldval;
1714 enum credentials_obtained obt = CRED_SPECIFIED;
1715 int _obt = obt;
1716+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1717+ if (creds == NULL) {
1718+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1719+ return NULL;
1720+ }
1721
1722 if (!PyArg_ParseTuple(args, "s|i", &oldval, &_obt)) {
1723 return NULL;
1724 }
1725 obt = _obt;
1726
1727- return PyBool_FromLong(cli_credentials_set_old_password(PyCredentials_AsCliCredentials(self), oldval, obt));
1728+ return PyBool_FromLong(cli_credentials_set_old_password(creds, oldval, obt));
1729 }
1730
1731 static PyObject *py_creds_set_old_utf16_password(PyObject *self, PyObject *args)
1732@@ -241,6 +291,11 @@ static PyObject *py_creds_set_old_utf16_password(PyObject *self, PyObject *args)
1733 Py_ssize_t size = 0;
1734 int result;
1735 bool ok;
1736+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1737+ if (creds == NULL) {
1738+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1739+ return NULL;
1740+ }
1741
1742 if (!PyArg_ParseTuple(args, "O", &oldval)) {
1743 return NULL;
1744@@ -253,7 +308,7 @@ static PyObject *py_creds_set_old_utf16_password(PyObject *self, PyObject *args)
1745 }
1746 blob.length = size;
1747
1748- ok = cli_credentials_set_old_utf16_password(PyCredentials_AsCliCredentials(self),
1749+ ok = cli_credentials_set_old_utf16_password(creds,
1750 &blob);
1751
1752 return PyBool_FromLong(ok);
1753@@ -261,7 +316,12 @@ static PyObject *py_creds_set_old_utf16_password(PyObject *self, PyObject *args)
1754
1755 static PyObject *py_creds_get_domain(PyObject *self, PyObject *unused)
1756 {
1757- return PyString_FromStringOrNULL(cli_credentials_get_domain(PyCredentials_AsCliCredentials(self)));
1758+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1759+ if (creds == NULL) {
1760+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1761+ return NULL;
1762+ }
1763+ return PyString_FromStringOrNULL(cli_credentials_get_domain(creds));
1764 }
1765
1766 static PyObject *py_creds_set_domain(PyObject *self, PyObject *args)
1767@@ -269,18 +329,28 @@ static PyObject *py_creds_set_domain(PyObject *self, PyObject *args)
1768 char *newval;
1769 enum credentials_obtained obt = CRED_SPECIFIED;
1770 int _obt = obt;
1771+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1772+ if (creds == NULL) {
1773+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1774+ return NULL;
1775+ }
1776
1777 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {
1778 return NULL;
1779 }
1780 obt = _obt;
1781
1782- return PyBool_FromLong(cli_credentials_set_domain(PyCredentials_AsCliCredentials(self), newval, obt));
1783+ return PyBool_FromLong(cli_credentials_set_domain(creds, newval, obt));
1784 }
1785
1786 static PyObject *py_creds_get_realm(PyObject *self, PyObject *unused)
1787 {
1788- return PyString_FromStringOrNULL(cli_credentials_get_realm(PyCredentials_AsCliCredentials(self)));
1789+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1790+ if (creds == NULL) {
1791+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1792+ return NULL;
1793+ }
1794+ return PyString_FromStringOrNULL(cli_credentials_get_realm(creds));
1795 }
1796
1797 static PyObject *py_creds_set_realm(PyObject *self, PyObject *args)
1798@@ -288,32 +358,52 @@ static PyObject *py_creds_set_realm(PyObject *self, PyObject *args)
1799 char *newval;
1800 enum credentials_obtained obt = CRED_SPECIFIED;
1801 int _obt = obt;
1802+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1803+ if (creds == NULL) {
1804+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1805+ return NULL;
1806+ }
1807
1808 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {
1809 return NULL;
1810 }
1811 obt = _obt;
1812
1813- return PyBool_FromLong(cli_credentials_set_realm(PyCredentials_AsCliCredentials(self), newval, obt));
1814+ return PyBool_FromLong(cli_credentials_set_realm(creds, newval, obt));
1815 }
1816
1817 static PyObject *py_creds_get_bind_dn(PyObject *self, PyObject *unused)
1818 {
1819- return PyString_FromStringOrNULL(cli_credentials_get_bind_dn(PyCredentials_AsCliCredentials(self)));
1820+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1821+ if (creds == NULL) {
1822+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1823+ return NULL;
1824+ }
1825+ return PyString_FromStringOrNULL(cli_credentials_get_bind_dn(creds));
1826 }
1827
1828 static PyObject *py_creds_set_bind_dn(PyObject *self, PyObject *args)
1829 {
1830 char *newval;
1831+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1832+ if (creds == NULL) {
1833+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1834+ return NULL;
1835+ }
1836 if (!PyArg_ParseTuple(args, "s", &newval))
1837 return NULL;
1838
1839- return PyBool_FromLong(cli_credentials_set_bind_dn(PyCredentials_AsCliCredentials(self), newval));
1840+ return PyBool_FromLong(cli_credentials_set_bind_dn(creds, newval));
1841 }
1842
1843 static PyObject *py_creds_get_workstation(PyObject *self, PyObject *unused)
1844 {
1845- return PyString_FromStringOrNULL(cli_credentials_get_workstation(PyCredentials_AsCliCredentials(self)));
1846+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1847+ if (creds == NULL) {
1848+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1849+ return NULL;
1850+ }
1851+ return PyString_FromStringOrNULL(cli_credentials_get_workstation(creds));
1852 }
1853
1854 static PyObject *py_creds_set_workstation(PyObject *self, PyObject *args)
1855@@ -321,39 +411,69 @@ static PyObject *py_creds_set_workstation(PyObject *self, PyObject *args)
1856 char *newval;
1857 enum credentials_obtained obt = CRED_SPECIFIED;
1858 int _obt = obt;
1859+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1860+ if (creds == NULL) {
1861+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1862+ return NULL;
1863+ }
1864
1865 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {
1866 return NULL;
1867 }
1868 obt = _obt;
1869
1870- return PyBool_FromLong(cli_credentials_set_workstation(PyCredentials_AsCliCredentials(self), newval, obt));
1871+ return PyBool_FromLong(cli_credentials_set_workstation(creds, newval, obt));
1872 }
1873
1874 static PyObject *py_creds_is_anonymous(PyObject *self, PyObject *unused)
1875 {
1876- return PyBool_FromLong(cli_credentials_is_anonymous(PyCredentials_AsCliCredentials(self)));
1877+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1878+ if (creds == NULL) {
1879+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1880+ return NULL;
1881+ }
1882+ return PyBool_FromLong(cli_credentials_is_anonymous(creds));
1883 }
1884
1885 static PyObject *py_creds_set_anonymous(PyObject *self, PyObject *unused)
1886 {
1887- cli_credentials_set_anonymous(PyCredentials_AsCliCredentials(self));
1888+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1889+ if (creds == NULL) {
1890+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1891+ return NULL;
1892+ }
1893+ cli_credentials_set_anonymous(creds);
1894 Py_RETURN_NONE;
1895 }
1896
1897 static PyObject *py_creds_authentication_requested(PyObject *self, PyObject *unused)
1898 {
1899- return PyBool_FromLong(cli_credentials_authentication_requested(PyCredentials_AsCliCredentials(self)));
1900+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1901+ if (creds == NULL) {
1902+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1903+ return NULL;
1904+ }
1905+ return PyBool_FromLong(cli_credentials_authentication_requested(creds));
1906 }
1907
1908 static PyObject *py_creds_wrong_password(PyObject *self, PyObject *unused)
1909 {
1910- return PyBool_FromLong(cli_credentials_wrong_password(PyCredentials_AsCliCredentials(self)));
1911+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1912+ if (creds == NULL) {
1913+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1914+ return NULL;
1915+ }
1916+ return PyBool_FromLong(cli_credentials_wrong_password(creds));
1917 }
1918
1919 static PyObject *py_creds_set_cmdline_callbacks(PyObject *self, PyObject *unused)
1920 {
1921- return PyBool_FromLong(cli_credentials_set_cmdline_callbacks(PyCredentials_AsCliCredentials(self)));
1922+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1923+ if (creds == NULL) {
1924+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1925+ return NULL;
1926+ }
1927+ return PyBool_FromLong(cli_credentials_set_cmdline_callbacks(creds));
1928 }
1929
1930 static PyObject *py_creds_parse_string(PyObject *self, PyObject *args)
1931@@ -361,13 +481,18 @@ static PyObject *py_creds_parse_string(PyObject *self, PyObject *args)
1932 char *newval;
1933 enum credentials_obtained obt = CRED_SPECIFIED;
1934 int _obt = obt;
1935+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1936+ if (creds == NULL) {
1937+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1938+ return NULL;
1939+ }
1940
1941 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {
1942 return NULL;
1943 }
1944 obt = _obt;
1945
1946- cli_credentials_parse_string(PyCredentials_AsCliCredentials(self), newval, obt);
1947+ cli_credentials_parse_string(creds, newval, obt);
1948 Py_RETURN_NONE;
1949 }
1950
1951@@ -376,13 +501,18 @@ static PyObject *py_creds_parse_file(PyObject *self, PyObject *args)
1952 char *newval;
1953 enum credentials_obtained obt = CRED_SPECIFIED;
1954 int _obt = obt;
1955+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1956+ if (creds == NULL) {
1957+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1958+ return NULL;
1959+ }
1960
1961 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {
1962 return NULL;
1963 }
1964 obt = _obt;
1965
1966- cli_credentials_parse_file(PyCredentials_AsCliCredentials(self), newval, obt);
1967+ cli_credentials_parse_file(creds, newval, obt);
1968 Py_RETURN_NONE;
1969 }
1970
1971@@ -404,8 +534,13 @@ static PyObject *py_cli_credentials_set_password_will_be_nt_hash(PyObject *self,
1972 static PyObject *py_creds_get_nt_hash(PyObject *self, PyObject *unused)
1973 {
1974 PyObject *ret;
1975+ struct samr_Password *ntpw = NULL;
1976 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1977- struct samr_Password *ntpw = cli_credentials_get_nt_hash(creds, creds);
1978+ if (creds == NULL) {
1979+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1980+ return NULL;
1981+ }
1982+ ntpw = cli_credentials_get_nt_hash(creds, creds);
1983
1984 ret = PyBytes_FromStringAndSize(discard_const_p(char, ntpw->hash), 16);
1985 TALLOC_FREE(ntpw);
1986@@ -414,34 +549,55 @@ static PyObject *py_creds_get_nt_hash(PyObject *self, PyObject *unused)
1987
1988 static PyObject *py_creds_get_kerberos_state(PyObject *self, PyObject *unused)
1989 {
1990- int state = cli_credentials_get_kerberos_state(PyCredentials_AsCliCredentials(self));
1991+ int state;
1992+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
1993+ if (creds == NULL) {
1994+ PyErr_Format(PyExc_TypeError, "Credentials expected");
1995+ return NULL;
1996+ }
1997+ state = cli_credentials_get_kerberos_state(creds);
1998 return PyInt_FromLong(state);
1999 }
2000
2001 static PyObject *py_creds_set_kerberos_state(PyObject *self, PyObject *args)
2002 {
2003 int state;
2004+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
2005+ if (creds == NULL) {
2006+ PyErr_Format(PyExc_TypeError, "Credentials expected");
2007+ return NULL;
2008+ }
2009 if (!PyArg_ParseTuple(args, "i", &state))
2010 return NULL;
2011
2012- cli_credentials_set_kerberos_state(PyCredentials_AsCliCredentials(self), state);
2013+ cli_credentials_set_kerberos_state(creds, state);
2014 Py_RETURN_NONE;
2015 }
2016
2017 static PyObject *py_creds_set_krb_forwardable(PyObject *self, PyObject *args)
2018 {
2019 int state;
2020+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
2021+ if (creds == NULL) {
2022+ PyErr_Format(PyExc_TypeError, "Credentials expected");
2023+ return NULL;
2024+ }
2025 if (!PyArg_ParseTuple(args, "i", &state))
2026 return NULL;
2027
2028- cli_credentials_set_krb_forwardable(PyCredentials_AsCliCredentials(self), state);
2029+ cli_credentials_set_krb_forwardable(creds, state);
2030 Py_RETURN_NONE;
2031 }
2032
2033
2034 static PyObject *py_creds_get_forced_sasl_mech(PyObject *self, PyObject *unused)
2035 {
2036- return PyString_FromStringOrNULL(cli_credentials_get_forced_sasl_mech(PyCredentials_AsCliCredentials(self)));
2037+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
2038+ if (creds == NULL) {
2039+ PyErr_Format(PyExc_TypeError, "Credentials expected");
2040+ return NULL;
2041+ }
2042+ return PyString_FromStringOrNULL(cli_credentials_get_forced_sasl_mech(creds));
2043 }
2044
2045 static PyObject *py_creds_set_forced_sasl_mech(PyObject *self, PyObject *args)
2046@@ -449,13 +605,18 @@ static PyObject *py_creds_set_forced_sasl_mech(PyObject *self, PyObject *args)
2047 char *newval;
2048 enum credentials_obtained obt = CRED_SPECIFIED;
2049 int _obt = obt;
2050+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
2051+ if (creds == NULL) {
2052+ PyErr_Format(PyExc_TypeError, "Credentials expected");
2053+ return NULL;
2054+ }
2055
2056 if (!PyArg_ParseTuple(args, "s", &newval)) {
2057 return NULL;
2058 }
2059 obt = _obt;
2060
2061- cli_credentials_set_forced_sasl_mech(PyCredentials_AsCliCredentials(self), newval);
2062+ cli_credentials_set_forced_sasl_mech(creds, newval);
2063 Py_RETURN_NONE;
2064 }
2065
2066@@ -467,6 +628,10 @@ static PyObject *py_creds_guess(PyObject *self, PyObject *args)
2067 struct cli_credentials *creds;
2068
2069 creds = PyCredentials_AsCliCredentials(self);
2070+ if (creds == NULL) {
2071+ PyErr_Format(PyExc_TypeError, "Credentials expected");
2072+ return NULL;
2073+ }
2074
2075 if (!PyArg_ParseTuple(args, "|O", &py_lp_ctx))
2076 return NULL;
2077@@ -499,6 +664,10 @@ static PyObject *py_creds_set_machine_account(PyObject *self, PyObject *args)
2078 TALLOC_CTX *mem_ctx;
2079
2080 creds = PyCredentials_AsCliCredentials(self);
2081+ if (creds == NULL) {
2082+ PyErr_Format(PyExc_TypeError, "Credentials expected");
2083+ return NULL;
2084+ }
2085
2086 if (!PyArg_ParseTuple(args, "|O", &py_lp_ctx))
2087 return NULL;
2088@@ -542,6 +711,10 @@ static PyObject *py_creds_get_named_ccache(PyObject *self, PyObject *args)
2089 TALLOC_CTX *mem_ctx;
2090
2091 creds = PyCredentials_AsCliCredentials(self);
2092+ if (creds == NULL) {
2093+ PyErr_Format(PyExc_TypeError, "Credentials expected");
2094+ return NULL;
2095+ }
2096
2097 if (!PyArg_ParseTuple(args, "|Os", &py_lp_ctx, &ccache_name))
2098 return NULL;
2099@@ -585,6 +758,11 @@ static PyObject *py_creds_set_named_ccache(PyObject *self, PyObject *args)
2100 PyObject *py_lp_ctx = Py_None;
2101 int _obt = obt;
2102 int ret;
2103+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
2104+ if (creds == NULL) {
2105+ PyErr_Format(PyExc_TypeError, "Credentials expected");
2106+ return NULL;
2107+ }
2108
2109 if (!PyArg_ParseTuple(args, "s|iO", &newval, &_obt, &py_lp_ctx))
2110 return NULL;
2111@@ -601,7 +779,7 @@ static PyObject *py_creds_set_named_ccache(PyObject *self, PyObject *args)
2112 return NULL;
2113 }
2114
2115- ret = cli_credentials_set_ccache(PyCredentials_AsCliCredentials(self),
2116+ ret = cli_credentials_set_ccache(creds,
2117 lp_ctx,
2118 newval, CRED_SPECIFIED,
2119 &error_string);
2120@@ -620,11 +798,16 @@ static PyObject *py_creds_set_named_ccache(PyObject *self, PyObject *args)
2121 static PyObject *py_creds_set_gensec_features(PyObject *self, PyObject *args)
2122 {
2123 unsigned int gensec_features;
2124+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
2125+ if (creds == NULL) {
2126+ PyErr_Format(PyExc_TypeError, "Credentials expected");
2127+ return NULL;
2128+ }
2129
2130 if (!PyArg_ParseTuple(args, "I", &gensec_features))
2131 return NULL;
2132
2133- cli_credentials_set_gensec_features(PyCredentials_AsCliCredentials(self), gensec_features);
2134+ cli_credentials_set_gensec_features(creds, gensec_features);
2135
2136 Py_RETURN_NONE;
2137 }
2138@@ -632,8 +815,13 @@ static PyObject *py_creds_set_gensec_features(PyObject *self, PyObject *args)
2139 static PyObject *py_creds_get_gensec_features(PyObject *self, PyObject *args)
2140 {
2141 unsigned int gensec_features;
2142+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
2143+ if (creds == NULL) {
2144+ PyErr_Format(PyExc_TypeError, "Credentials expected");
2145+ return NULL;
2146+ }
2147
2148- gensec_features = cli_credentials_get_gensec_features(PyCredentials_AsCliCredentials(self));
2149+ gensec_features = cli_credentials_get_gensec_features(creds);
2150 return PyInt_FromLong(gensec_features);
2151 }
2152
2153@@ -644,6 +832,7 @@ static PyObject *py_creds_new_client_authenticator(PyObject *self,
2154 struct cli_credentials *creds = NULL;
2155 struct netlogon_creds_CredentialState *nc = NULL;
2156 PyObject *ret = NULL;
2157+ NTSTATUS status;
2158
2159 creds = PyCredentials_AsCliCredentials(self);
2160 if (creds == NULL) {
2161@@ -660,9 +849,13 @@ static PyObject *py_creds_new_client_authenticator(PyObject *self,
2162 return NULL;
2163 }
2164
2165- netlogon_creds_client_authenticator(
2166- nc,
2167- &auth);
2168+ status = netlogon_creds_client_authenticator(nc, &auth);
2169+ if (!NT_STATUS_IS_OK(status)) {
2170+ PyErr_SetString(PyExc_ValueError,
2171+ "Failed to create client authenticator");
2172+ return NULL;
2173+ }
2174+
2175 ret = Py_BuildValue("{s"PYARG_BYTES_LEN"si}",
2176 "credential",
2177 (const char *) &auth.cred, sizeof(auth.cred),
2178@@ -673,12 +866,17 @@ static PyObject *py_creds_new_client_authenticator(PyObject *self,
2179 static PyObject *py_creds_set_secure_channel_type(PyObject *self, PyObject *args)
2180 {
2181 unsigned int channel_type;
2182+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
2183+ if (creds == NULL) {
2184+ PyErr_Format(PyExc_TypeError, "Credentials expected");
2185+ return NULL;
2186+ }
2187
2188 if (!PyArg_ParseTuple(args, "I", &channel_type))
2189 return NULL;
2190
2191 cli_credentials_set_secure_channel_type(
2192- PyCredentials_AsCliCredentials(self),
2193+ creds,
2194 channel_type);
2195
2196 Py_RETURN_NONE;
2197@@ -687,9 +885,13 @@ static PyObject *py_creds_set_secure_channel_type(PyObject *self, PyObject *args
2198 static PyObject *py_creds_get_secure_channel_type(PyObject *self, PyObject *args)
2199 {
2200 enum netr_SchannelType channel_type = SEC_CHAN_NULL;
2201+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
2202+ if (creds == NULL) {
2203+ PyErr_Format(PyExc_TypeError, "Credentials expected");
2204+ return NULL;
2205+ }
2206
2207- channel_type = cli_credentials_get_secure_channel_type(
2208- PyCredentials_AsCliCredentials(self));
2209+ channel_type = cli_credentials_get_secure_channel_type(creds);
2210
2211 return PyInt_FromLong(channel_type);
2212 }
2213@@ -704,11 +906,20 @@ static PyObject *py_creds_encrypt_netr_crypt_password(PyObject *self,
2214 PyObject *py_cp = Py_None;
2215
2216 creds = PyCredentials_AsCliCredentials(self);
2217+ if (creds == NULL) {
2218+ PyErr_Format(PyExc_TypeError, "Credentials expected");
2219+ return NULL;
2220+ }
2221
2222- if (!PyArg_ParseTuple(args, "|O", &py_cp)) {
2223+ if (!PyArg_ParseTuple(args, "O", &py_cp)) {
2224 return NULL;
2225 }
2226+
2227 pwd = pytalloc_get_type(py_cp, struct netr_CryptPassword);
2228+ if (pwd == NULL) {
2229+ /* pytalloc_get_type sets TypeError */
2230+ return NULL;
2231+ }
2232 data.length = sizeof(struct netr_CryptPassword);
2233 data.data = (uint8_t *)pwd;
2234 status = netlogon_creds_session_encrypt(creds->netlogon_creds, data);
2235diff --git a/auth/credentials/pycredentials.h b/auth/credentials/pycredentials.h
2236index a136a21..bf6962c 100644
2237--- a/auth/credentials/pycredentials.h
2238+++ b/auth/credentials/pycredentials.h
2239@@ -20,12 +20,21 @@
2240 #define _PYCREDENTIALS_H_
2241
2242 #include "auth/credentials/credentials.h"
2243+#include "librpc/rpc/pyrpc_util.h"
2244 #include <pytalloc.h>
2245
2246 extern PyTypeObject PyCredentials;
2247 extern PyTypeObject PyCredentialCacheContainer;
2248-#define PyCredentials_Check(py_obj) PyObject_TypeCheck(py_obj, &PyCredentials)
2249-#define PyCredentials_AsCliCredentials(py_obj) pytalloc_get_type(py_obj, struct cli_credentials)
2250-#define cli_credentials_from_py_object(py_obj) (py_obj == Py_None)?cli_credentials_init_anon(NULL):PyCredentials_AsCliCredentials(py_obj)
2251+#define PyCredentials_Check(py_obj) \
2252+ py_check_dcerpc_type(py_obj, "samba.credentials", "Credentials")
2253+
2254+#define PyCredentials_AsCliCredentials(py_obj) \
2255+ (PyCredentials_Check(py_obj) ? \
2256+ pytalloc_get_type(py_obj, struct cli_credentials) : NULL)
2257+
2258+#define cli_credentials_from_py_object(py_obj) \
2259+ ((py_obj == Py_None) ? \
2260+ cli_credentials_init_anon(NULL) : \
2261+ PyCredentials_AsCliCredentials(py_obj))
2262
2263 #endif /* _PYCREDENTIALS_H_ */
2264diff --git a/auth/gensec/gensec_util.c b/auth/gensec/gensec_util.c
2265index 20c9c2a..e185acc 100644
2266--- a/auth/gensec/gensec_util.c
2267+++ b/auth/gensec/gensec_util.c
2268@@ -76,7 +76,7 @@ NTSTATUS gensec_generate_session_info_pac(TALLOC_CTX *mem_ctx,
2269 static bool gensec_gssapi_check_oid(const DATA_BLOB *blob, const char *oid)
2270 {
2271 bool ret = false;
2272- struct asn1_data *data = asn1_init(NULL);
2273+ struct asn1_data *data = asn1_init(NULL, ASN1_MAX_TREE_DEPTH);
2274
2275 if (!data) return false;
2276
2277diff --git a/auth/gensec/schannel.c b/auth/gensec/schannel.c
2278index 74a3eb5..0cdae14 100644
2279--- a/auth/gensec/schannel.c
2280+++ b/auth/gensec/schannel.c
2281@@ -33,9 +33,12 @@
2282 #include "librpc/gen_ndr/dcerpc.h"
2283 #include "param/param.h"
2284 #include "auth/gensec/gensec_toplevel_proto.h"
2285-#include "lib/crypto/aes.h"
2286 #include "libds/common/roles.h"
2287
2288+#ifndef HAVE_GNUTLS_AES_CFB8
2289+#include "lib/crypto/aes.h"
2290+#endif
2291+
2292 #include "lib/crypto/gnutls_helpers.h"
2293 #include <gnutls/gnutls.h>
2294 #include <gnutls/crypto.h>
2295@@ -147,6 +150,43 @@ static NTSTATUS netsec_do_seq_num(struct schannel_state *state,
2296 uint8_t seq_num[8])
2297 {
2298 if (state->creds->negotiate_flags & NETLOGON_NEG_SUPPORTS_AES) {
2299+#ifdef HAVE_GNUTLS_AES_CFB8
2300+ gnutls_cipher_hd_t cipher_hnd = NULL;
2301+ gnutls_datum_t key = {
2302+ .data = state->creds->session_key,
2303+ .size = sizeof(state->creds->session_key),
2304+ };
2305+ uint32_t iv_size =
2306+ gnutls_cipher_get_iv_size(GNUTLS_CIPHER_AES_128_CFB8);
2307+ uint8_t _iv[iv_size];
2308+ gnutls_datum_t iv = {
2309+ .data = _iv,
2310+ .size = iv_size,
2311+ };
2312+ int rc;
2313+
2314+ ZERO_ARRAY(_iv);
2315+
2316+ memcpy(iv.data + 0, checksum, 8);
2317+ memcpy(iv.data + 8, checksum, 8);
2318+
2319+ rc = gnutls_cipher_init(&cipher_hnd,
2320+ GNUTLS_CIPHER_AES_128_CFB8,
2321+ &key,
2322+ &iv);
2323+ if (rc < 0) {
2324+ return gnutls_error_to_ntstatus(rc,
2325+ NT_STATUS_CRYPTO_SYSTEM_INVALID);
2326+ }
2327+
2328+ rc = gnutls_cipher_encrypt(cipher_hnd, seq_num, 8);
2329+ gnutls_cipher_deinit(cipher_hnd);
2330+ if (rc < 0) {
2331+ return gnutls_error_to_ntstatus(rc,
2332+ NT_STATUS_CRYPTO_SYSTEM_INVALID);
2333+ }
2334+
2335+#else /* NOT HAVE_GNUTLS_AES_CFB8 */
2336 AES_KEY key;
2337 uint8_t iv[AES_BLOCK_SIZE];
2338
2339@@ -156,6 +196,7 @@ static NTSTATUS netsec_do_seq_num(struct schannel_state *state,
2340 memcpy(iv+8, checksum, 8);
2341
2342 aes_cfb8_encrypt(seq_num, seq_num, 8, &key, iv, AES_ENCRYPT);
2343+#endif /* HAVE_GNUTLS_AES_CFB8 */
2344 } else {
2345 static const uint8_t zeros[4];
2346 uint8_t _sequence_key[16];
2347@@ -220,6 +261,100 @@ static NTSTATUS netsec_do_seal(struct schannel_state *state,
2348 bool forward)
2349 {
2350 if (state->creds->negotiate_flags & NETLOGON_NEG_SUPPORTS_AES) {
2351+#ifdef HAVE_GNUTLS_AES_CFB8
2352+ gnutls_cipher_hd_t cipher_hnd = NULL;
2353+ uint8_t sess_kf0[16] = {0};
2354+ gnutls_datum_t key = {
2355+ .data = sess_kf0,
2356+ .size = sizeof(sess_kf0),
2357+ };
2358+ uint32_t iv_size =
2359+ gnutls_cipher_get_iv_size(GNUTLS_CIPHER_AES_128_CFB8);
2360+ uint8_t _iv[iv_size];
2361+ gnutls_datum_t iv = {
2362+ .data = _iv,
2363+ .size = iv_size,
2364+ };
2365+ uint32_t i;
2366+ int rc;
2367+
2368+ for (i = 0; i < key.size; i++) {
2369+ key.data[i] = state->creds->session_key[i] ^ 0xf0;
2370+ }
2371+
2372+ ZERO_ARRAY(_iv);
2373+
2374+ memcpy(iv.data + 0, seq_num, 8);
2375+ memcpy(iv.data + 8, seq_num, 8);
2376+
2377+ rc = gnutls_cipher_init(&cipher_hnd,
2378+ GNUTLS_CIPHER_AES_128_CFB8,
2379+ &key,
2380+ &iv);
2381+ if (rc < 0) {
2382+ DBG_ERR("ERROR: gnutls_cipher_init: %s\n",
2383+ gnutls_strerror(rc));
2384+ return NT_STATUS_NO_MEMORY;
2385+ }
2386+
2387+ if (forward) {
2388+ rc = gnutls_cipher_encrypt(cipher_hnd,
2389+ confounder,
2390+ 8);
2391+ if (rc < 0) {
2392+ gnutls_cipher_deinit(cipher_hnd);
2393+ return gnutls_error_to_ntstatus(rc, NT_STATUS_CRYPTO_SYSTEM_INVALID);
2394+ }
2395+
2396+ rc = gnutls_cipher_encrypt(cipher_hnd,
2397+ data,
2398+ length);
2399+ if (rc < 0) {
2400+ gnutls_cipher_deinit(cipher_hnd);
2401+ return gnutls_error_to_ntstatus(rc, NT_STATUS_CRYPTO_SYSTEM_INVALID);
2402+ }
2403+ } else {
2404+
2405+ /*
2406+ * Workaround bug present in gnutls 3.6.8:
2407+ *
2408+ * gnutls_cipher_decrypt() uses an optimization
2409+ * internally that breaks decryption when processing
2410+ * buffers with their length not being a multiple
2411+ * of the blocksize.
2412+ */
2413+
2414+ uint8_t tmp[16] = { 0, };
2415+ uint32_t tmp_dlength = MIN(length, sizeof(tmp) - 8);
2416+
2417+ memcpy(tmp, confounder, 8);
2418+ memcpy(tmp + 8, data, tmp_dlength);
2419+
2420+ rc = gnutls_cipher_decrypt(cipher_hnd,
2421+ tmp,
2422+ 8 + tmp_dlength);
2423+ if (rc < 0) {
2424+ ZERO_STRUCT(tmp);
2425+ gnutls_cipher_deinit(cipher_hnd);
2426+ return gnutls_error_to_ntstatus(rc, NT_STATUS_CRYPTO_SYSTEM_INVALID);
2427+ }
2428+
2429+ memcpy(confounder, tmp, 8);
2430+ memcpy(data, tmp + 8, tmp_dlength);
2431+ ZERO_STRUCT(tmp);
2432+
2433+ if (length > tmp_dlength) {
2434+ rc = gnutls_cipher_decrypt(cipher_hnd,
2435+ data + tmp_dlength,
2436+ length - tmp_dlength);
2437+ if (rc < 0) {
2438+ gnutls_cipher_deinit(cipher_hnd);
2439+ return gnutls_error_to_ntstatus(rc, NT_STATUS_CRYPTO_SYSTEM_INVALID);
2440+ }
2441+ }
2442+ }
2443+ gnutls_cipher_deinit(cipher_hnd);
2444+#else /* NOT HAVE_GNUTLS_AES_CFB8 */
2445 AES_KEY key;
2446 uint8_t iv[AES_BLOCK_SIZE];
2447 uint8_t sess_kf0[16];
2448@@ -241,6 +376,7 @@ static NTSTATUS netsec_do_seal(struct schannel_state *state,
2449 aes_cfb8_encrypt(confounder, confounder, 8, &key, iv, AES_DECRYPT);
2450 aes_cfb8_encrypt(data, data, length, &key, iv, AES_DECRYPT);
2451 }
2452+#endif /* HAVE_GNUTLS_AES_CFB8 */
2453 } else {
2454 gnutls_cipher_hd_t cipher_hnd;
2455 uint8_t _sealing_key[16];
2456@@ -266,7 +402,7 @@ static NTSTATUS netsec_do_seal(struct schannel_state *state,
2457 digest2);
2458 if (rc < 0) {
2459 ZERO_ARRAY(digest2);
2460- return NT_STATUS_INTERNAL_ERROR;
2461+ return gnutls_error_to_ntstatus(rc, NT_STATUS_HMAC_NOT_SUPPORTED);
2462 }
2463
2464 rc = gnutls_hmac_fast(GNUTLS_MAC_MD5,
2465@@ -278,7 +414,7 @@ static NTSTATUS netsec_do_seal(struct schannel_state *state,
2466
2467 ZERO_ARRAY(digest2);
2468 if (rc < 0) {
2469- return NT_STATUS_INTERNAL_ERROR;
2470+ return gnutls_error_to_ntstatus(rc, NT_STATUS_HMAC_NOT_SUPPORTED);
2471 }
2472
2473 rc = gnutls_cipher_init(&cipher_hnd,
2474@@ -337,7 +473,7 @@ static NTSTATUS netsec_do_sign(struct schannel_state *state,
2475 state->creds->session_key,
2476 sizeof(state->creds->session_key));
2477 if (rc < 0) {
2478- return NT_STATUS_NO_MEMORY;
2479+ return gnutls_error_to_ntstatus(rc, NT_STATUS_HMAC_NOT_SUPPORTED);
2480 }
2481
2482 if (confounder) {
2483diff --git a/auth/gensec/spnego.c b/auth/gensec/spnego.c
2484index ddbe03c..db8a91b 100644
2485--- a/auth/gensec/spnego.c
2486+++ b/auth/gensec/spnego.c
2487@@ -72,7 +72,7 @@ struct spnego_neg_ops {
2488 * 'in_next'. Note that 'in_mem_ctx' is just passed as a hint, the
2489 * caller should treat 'in_next' as const and don't attempt to free the
2490 * content. NT_STATUS_OK indicates the finish hook should be invoked
2491- * directly withing the need of gensec_update() on the subcontext.
2492+ * directly within the need of gensec_update() on the subcontext.
2493 * Every other error indicates an error that's returned to the caller.
2494 */
2495 NTSTATUS (*start_fn)(struct gensec_security *gensec_security,
2496@@ -90,7 +90,7 @@ struct spnego_neg_ops {
2497 * 'in_next'. Note that 'in_mem_ctx' is just passed as a hint, the
2498 * caller should treat 'in_next' as const and don't attempt to free the
2499 * content. NT_STATUS_OK indicates the finish hook should be invoked
2500- * directly withing the need of gensec_update() on the subcontext.
2501+ * directly within the need of gensec_update() on the subcontext.
2502 * Every other error indicates an error that's returned to the caller.
2503 */
2504 NTSTATUS (*step_fn)(struct gensec_security *gensec_security,
2505@@ -900,8 +900,6 @@ static NTSTATUS gensec_spnego_client_negTokenTarg_finish(
2506 NTSTATUS status;
2507 struct spnego_data spnego_out;
2508
2509- status = sub_status;
2510-
2511 if (!spnego_state->sub_sec_ready) {
2512 /*
2513 * We're not yet ready to deal with signatures.
2514diff --git a/auth/ntlmssp/ntlmssp_client.c b/auth/ntlmssp/ntlmssp_client.c
2515index df891f8..58e4e3d 100644
2516--- a/auth/ntlmssp/ntlmssp_client.c
2517+++ b/auth/ntlmssp/ntlmssp_client.c
2518@@ -673,12 +673,20 @@ NTSTATUS ntlmssp_client_challenge(struct gensec_security *gensec_security,
2519 && ntlmssp_state->allow_lm_key && lm_session_key.length == 16) {
2520 DATA_BLOB new_session_key = data_blob_talloc(mem_ctx, NULL, 16);
2521 if (lm_response.length == 24) {
2522- SMBsesskeygen_lm_sess_key(lm_session_key.data, lm_response.data,
2523- new_session_key.data);
2524+ nt_status = SMBsesskeygen_lm_sess_key(lm_session_key.data,
2525+ lm_response.data,
2526+ new_session_key.data);
2527+ if (!NT_STATUS_IS_OK(nt_status)) {
2528+ return nt_status;
2529+ }
2530 } else {
2531 static const uint8_t zeros[24];
2532- SMBsesskeygen_lm_sess_key(lm_session_key.data, zeros,
2533- new_session_key.data);
2534+ nt_status = SMBsesskeygen_lm_sess_key(lm_session_key.data,
2535+ zeros,
2536+ new_session_key.data);
2537+ if (!NT_STATUS_IS_OK(nt_status)) {
2538+ return nt_status;
2539+ }
2540 }
2541 session_key = new_session_key;
2542 dump_data_pw("LM session key\n", session_key.data, session_key.length);
2543@@ -690,17 +698,43 @@ NTSTATUS ntlmssp_client_challenge(struct gensec_security *gensec_security,
2544 if (ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_KEY_EXCH) {
2545 /* Make up a new session key */
2546 uint8_t client_session_key[16];
2547- generate_secret_buffer(client_session_key, sizeof(client_session_key));
2548+ gnutls_cipher_hd_t cipher_hnd;
2549+ gnutls_datum_t enc_session_key = {
2550+ .data = session_key.data,
2551+ .size = session_key.length,
2552+ };
2553+
2554+ generate_random_buffer(client_session_key, sizeof(client_session_key));
2555
2556 /* Encrypt the new session key with the old one */
2557 encrypted_session_key = data_blob_talloc(ntlmssp_state,
2558 client_session_key, sizeof(client_session_key));
2559 dump_data_pw("KEY_EXCH session key:\n", encrypted_session_key.data, encrypted_session_key.length);
2560- arcfour_crypt(encrypted_session_key.data, session_key.data, encrypted_session_key.length);
2561+
2562+ rc = gnutls_cipher_init(&cipher_hnd,
2563+ GNUTLS_CIPHER_ARCFOUR_128,
2564+ &enc_session_key,
2565+ NULL);
2566+ if (rc < 0) {
2567+ nt_status = gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
2568+ ZERO_ARRAY(client_session_key);
2569+ goto done;
2570+ }
2571+ rc = gnutls_cipher_encrypt(cipher_hnd,
2572+ encrypted_session_key.data,
2573+ encrypted_session_key.length);
2574+ gnutls_cipher_deinit(cipher_hnd);
2575+ if (rc < 0) {
2576+ nt_status = gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
2577+ ZERO_ARRAY(client_session_key);
2578+ goto done;
2579+ }
2580+
2581 dump_data_pw("KEY_EXCH session key (enc):\n", encrypted_session_key.data, encrypted_session_key.length);
2582
2583 /* Mark the new session key as the 'real' session key */
2584 session_key = data_blob_talloc(mem_ctx, client_session_key, sizeof(client_session_key));
2585+ ZERO_ARRAY(client_session_key);
2586 }
2587
2588 /* this generates the actual auth packet */
2589diff --git a/auth/ntlmssp/ntlmssp_private.h b/auth/ntlmssp/ntlmssp_private.h
2590index 95ec637..4d84e33 100644
2591--- a/auth/ntlmssp/ntlmssp_private.h
2592+++ b/auth/ntlmssp/ntlmssp_private.h
2593@@ -20,14 +20,15 @@
2594
2595 /* For structures internal to the NTLMSSP implementation that should not be exposed */
2596
2597-#include "../lib/crypto/arcfour.h"
2598+#include <gnutls/gnutls.h>
2599+#include <gnutls/crypto.h>
2600
2601 struct auth_session_info;
2602
2603 struct ntlmssp_crypt_direction {
2604 uint32_t seq_num;
2605 uint8_t sign_key[16];
2606- struct arcfour_state seal_state;
2607+ gnutls_cipher_hd_t seal_state;
2608 };
2609
2610 union ntlmssp_crypt_state {
2611diff --git a/auth/ntlmssp/ntlmssp_server.c b/auth/ntlmssp/ntlmssp_server.c
2612index 5a56a4d..0012382 100644
2613--- a/auth/ntlmssp/ntlmssp_server.c
2614+++ b/auth/ntlmssp/ntlmssp_server.c
2615@@ -335,8 +335,8 @@ struct tevent_req *ntlmssp_server_auth_send(TALLOC_CTX *mem_ctx,
2616 struct gensec_ntlmssp_context);
2617 struct auth4_context *auth_context = gensec_security->auth_context;
2618 struct tevent_req *req = NULL;
2619+ struct tevent_req *subreq = NULL;
2620 struct ntlmssp_server_auth_state *state = NULL;
2621- uint8_t authoritative = 0;
2622 NTSTATUS status;
2623
2624 req = tevent_req_create(mem_ctx, &state,
2625@@ -355,54 +355,13 @@ struct tevent_req *ntlmssp_server_auth_send(TALLOC_CTX *mem_ctx,
2626 return tevent_req_post(req, ev);
2627 }
2628
2629- if (auth_context->check_ntlm_password_send != NULL) {
2630- struct tevent_req *subreq = NULL;
2631-
2632- subreq = auth_context->check_ntlm_password_send(state, ev,
2633- auth_context,
2634- state->user_info);
2635- if (tevent_req_nomem(subreq, req)) {
2636- return tevent_req_post(req, ev);
2637- }
2638- tevent_req_set_callback(subreq,
2639- ntlmssp_server_auth_done,
2640- req);
2641- return req;
2642- }
2643-
2644- if (auth_context->check_ntlm_password == NULL) {
2645- tevent_req_nterror(req, NT_STATUS_INTERNAL_ERROR);
2646- return tevent_req_post(req, ev);
2647- }
2648-
2649- status = auth_context->check_ntlm_password(auth_context,
2650- gensec_ntlmssp,
2651- state->user_info,
2652- &authoritative,
2653- &gensec_ntlmssp->server_returned_info,
2654- &state->user_session_key,
2655- &state->lm_session_key);
2656- if (!NT_STATUS_IS_OK(status)) {
2657- DBG_INFO("Checking NTLMSSP password for %s\\%s failed: %s\n",
2658- state->user_info->client.domain_name,
2659- state->user_info->client.account_name,
2660- nt_errstr(status));
2661- }
2662- if (tevent_req_nterror(req, status)) {
2663+ subreq = auth_context->check_ntlm_password_send(
2664+ state, ev, auth_context, state->user_info);
2665+ if (tevent_req_nomem(subreq, req)) {
2666 return tevent_req_post(req, ev);
2667 }
2668- talloc_steal(state, state->user_session_key.data);
2669- talloc_steal(state, state->lm_session_key.data);
2670-
2671- status = ntlmssp_server_postauth(gensec_security,
2672- gensec_ntlmssp,
2673- state, in);
2674- if (tevent_req_nterror(req, status)) {
2675- return tevent_req_post(req, ev);
2676- }
2677-
2678- tevent_req_done(req);
2679- return tevent_req_post(req, ev);
2680+ tevent_req_set_callback(subreq, ntlmssp_server_auth_done, req);
2681+ return req;
2682 }
2683
2684 /**
2685@@ -970,8 +929,12 @@ static NTSTATUS ntlmssp_server_postauth(struct gensec_security *gensec_security,
2686 if (session_key.data == NULL) {
2687 return NT_STATUS_NO_MEMORY;
2688 }
2689- SMBsesskeygen_lm_sess_key(lm_session_key.data, ntlmssp_state->lm_resp.data,
2690- session_key.data);
2691+ nt_status = SMBsesskeygen_lm_sess_key(lm_session_key.data,
2692+ ntlmssp_state->lm_resp.data,
2693+ session_key.data);
2694+ if (!NT_STATUS_IS_OK(nt_status)) {
2695+ return nt_status;
2696+ }
2697 DEBUG(10,("ntlmssp_server_auth: Created NTLM session key.\n"));
2698 } else {
2699 static const uint8_t zeros[24] = {0, };
2700@@ -980,8 +943,11 @@ static NTSTATUS ntlmssp_server_postauth(struct gensec_security *gensec_security,
2701 if (session_key.data == NULL) {
2702 return NT_STATUS_NO_MEMORY;
2703 }
2704- SMBsesskeygen_lm_sess_key(zeros, zeros,
2705- session_key.data);
2706+ nt_status = SMBsesskeygen_lm_sess_key(zeros, zeros,
2707+ session_key.data);
2708+ if (!NT_STATUS_IS_OK(nt_status)) {
2709+ return nt_status;
2710+ }
2711 DEBUG(10,("ntlmssp_server_auth: Created NTLM session key.\n"));
2712 }
2713 dump_data_pw("LM session key:\n", session_key.data,
2714diff --git a/auth/ntlmssp/ntlmssp_sign.c b/auth/ntlmssp/ntlmssp_sign.c
2715index 8ba2e24..89f1aa0 100644
2716--- a/auth/ntlmssp/ntlmssp_sign.c
2717+++ b/auth/ntlmssp/ntlmssp_sign.c
2718@@ -47,9 +47,9 @@
2719 */
2720
2721 static void dump_arc4_state(const char *description,
2722- struct arcfour_state *state)
2723+ gnutls_cipher_hd_t *state)
2724 {
2725- dump_data_pw(description, state->sbox, sizeof(state->sbox));
2726+ DBG_DEBUG("%s\n", description);
2727 }
2728
2729 static NTSTATUS calc_ntlmv2_key(uint8_t subkey[16],
2730@@ -90,13 +90,13 @@ static NTSTATUS ntlmssp_make_packet_signature(struct ntlmssp_state *ntlmssp_stat
2731 enum ntlmssp_direction direction,
2732 DATA_BLOB *sig, bool encrypt_sig)
2733 {
2734- NTSTATUS status;
2735+ NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
2736+ int rc;
2737
2738 if (ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_NTLM2) {
2739 gnutls_hmac_hd_t hmac_hnd = NULL;
2740 uint8_t digest[16];
2741 uint8_t seq_num[4];
2742- int rc;
2743
2744 *sig = data_blob_talloc(sig_mem_ctx, NULL, NTLMSSP_SIG_SIZE);
2745 if (!sig->data) {
2746@@ -158,14 +158,24 @@ static NTSTATUS ntlmssp_make_packet_signature(struct ntlmssp_state *ntlmssp_stat
2747 if (encrypt_sig && (ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_KEY_EXCH)) {
2748 switch (direction) {
2749 case NTLMSSP_SEND:
2750- arcfour_crypt_sbox(&ntlmssp_state->crypt->ntlm2.sending.seal_state,
2751- digest, 8);
2752+ rc = gnutls_cipher_encrypt(ntlmssp_state->crypt->ntlm2.sending.seal_state,
2753+ digest,
2754+ 8);
2755 break;
2756 case NTLMSSP_RECEIVE:
2757- arcfour_crypt_sbox(&ntlmssp_state->crypt->ntlm2.receiving.seal_state,
2758- digest, 8);
2759+ rc = gnutls_cipher_encrypt(ntlmssp_state->crypt->ntlm2.receiving.seal_state,
2760+ digest,
2761+ 8);
2762 break;
2763 }
2764+ if (rc < 0) {
2765+ DBG_ERR("gnutls_cipher_encrypt for NTLMv2 EXCH "
2766+ "%s packet signature failed: %s\n",
2767+ direction == NTLMSSP_SEND ?
2768+ "send" : "receive",
2769+ gnutls_strerror(rc));
2770+ return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
2771+ }
2772 }
2773
2774 SIVAL(sig->data, 0, NTLMSSP_SIGN_VERSION);
2775@@ -194,8 +204,15 @@ static NTSTATUS ntlmssp_make_packet_signature(struct ntlmssp_state *ntlmssp_stat
2776
2777 dump_arc4_state("ntlmssp hash: \n",
2778 &ntlmssp_state->crypt->ntlm.seal_state);
2779- arcfour_crypt_sbox(&ntlmssp_state->crypt->ntlm.seal_state,
2780- sig->data+4, sig->length-4);
2781+ rc = gnutls_cipher_encrypt(ntlmssp_state->crypt->ntlm.seal_state,
2782+ sig->data + 4,
2783+ sig->length - 4);
2784+ if (rc < 0) {
2785+ DBG_ERR("gnutls_cipher_encrypt for NTLM packet "
2786+ "signature failed: %s\n",
2787+ gnutls_strerror(rc));
2788+ return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
2789+ }
2790 }
2791
2792 return NT_STATUS_OK;
2793@@ -317,6 +334,8 @@ NTSTATUS ntlmssp_seal_packet(struct ntlmssp_state *ntlmssp_state,
2794 const uint8_t *whole_pdu, size_t pdu_length,
2795 DATA_BLOB *sig)
2796 {
2797+ int rc;
2798+
2799 if (!(ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_SEAL)) {
2800 DEBUG(3, ("NTLMSSP Sealing not negotiated - cannot seal packet!\n"));
2801 return NT_STATUS_INVALID_PARAMETER;
2802@@ -353,11 +372,25 @@ NTSTATUS ntlmssp_seal_packet(struct ntlmssp_state *ntlmssp_state,
2803 return nt_status;
2804 }
2805
2806- arcfour_crypt_sbox(&ntlmssp_state->crypt->ntlm2.sending.seal_state,
2807- data, length);
2808+ rc = gnutls_cipher_encrypt(ntlmssp_state->crypt->ntlm2.sending.seal_state,
2809+ data,
2810+ length);
2811+ if (rc < 0) {
2812+ DBG_ERR("gnutls_cipher_encrypt ntlmv2 sealing the data "
2813+ "failed: %s\n",
2814+ gnutls_strerror(rc));
2815+ return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
2816+ }
2817 if (ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_KEY_EXCH) {
2818- arcfour_crypt_sbox(&ntlmssp_state->crypt->ntlm2.sending.seal_state,
2819- sig->data+4, 8);
2820+ rc = gnutls_cipher_encrypt(ntlmssp_state->crypt->ntlm2.sending.seal_state,
2821+ sig->data + 4,
2822+ 8);
2823+ if (rc < 0) {
2824+ DBG_ERR("gnutls_cipher_encrypt ntlmv2 sealing "
2825+ "the EXCH signature data failed: %s\n",
2826+ gnutls_strerror(rc));
2827+ return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
2828+ }
2829 }
2830 } else {
2831 NTSTATUS status;
2832@@ -381,17 +414,30 @@ NTSTATUS ntlmssp_seal_packet(struct ntlmssp_state *ntlmssp_state,
2833 * is not constant, but is is rather updated with
2834 * each iteration
2835 */
2836-
2837 dump_arc4_state("ntlmv1 arc4 state:\n",
2838 &ntlmssp_state->crypt->ntlm.seal_state);
2839- arcfour_crypt_sbox(&ntlmssp_state->crypt->ntlm.seal_state,
2840- data, length);
2841+ rc = gnutls_cipher_encrypt(ntlmssp_state->crypt->ntlm.seal_state,
2842+ data,
2843+ length);
2844+ if (rc < 0) {
2845+ DBG_ERR("gnutls_cipher_encrypt ntlmv1 sealing data"
2846+ "failed: %s\n",
2847+ gnutls_strerror(rc));
2848+ return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
2849+ }
2850
2851 dump_arc4_state("ntlmv1 arc4 state:\n",
2852 &ntlmssp_state->crypt->ntlm.seal_state);
2853
2854- arcfour_crypt_sbox(&ntlmssp_state->crypt->ntlm.seal_state,
2855- sig->data+4, sig->length-4);
2856+ rc = gnutls_cipher_encrypt(ntlmssp_state->crypt->ntlm.seal_state,
2857+ sig->data + 4,
2858+ sig->length - 4);
2859+ if (rc < 0) {
2860+ DBG_ERR("gnutls_cipher_encrypt ntlmv1 sealing signing "
2861+ "data failed: %s\n",
2862+ gnutls_strerror(rc));
2863+ return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
2864+ }
2865
2866 ntlmssp_state->crypt->ntlm.seq_num++;
2867 }
2868@@ -412,6 +458,8 @@ NTSTATUS ntlmssp_unseal_packet(struct ntlmssp_state *ntlmssp_state,
2869 const DATA_BLOB *sig)
2870 {
2871 NTSTATUS status;
2872+ int rc;
2873+
2874 if (!ntlmssp_state->session_key.length) {
2875 DEBUG(3, ("NO session key, cannot unseal packet\n"));
2876 return NT_STATUS_NO_USER_SESSION_KEY;
2877@@ -422,14 +470,29 @@ NTSTATUS ntlmssp_unseal_packet(struct ntlmssp_state *ntlmssp_state,
2878
2879 if (ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_NTLM2) {
2880 /* First unseal the data. */
2881- arcfour_crypt_sbox(&ntlmssp_state->crypt->ntlm2.receiving.seal_state,
2882- data, length);
2883+ rc = gnutls_cipher_decrypt(ntlmssp_state->crypt->ntlm2.receiving.seal_state,
2884+ data,
2885+ length);
2886+ if (rc < 0) {
2887+ DBG_ERR("gnutls_cipher_decrypt ntlmv2 unsealing the "
2888+ "data failed: %s\n",
2889+ gnutls_strerror(rc));
2890+ return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
2891+ }
2892 dump_data_pw("ntlmv2 clear data\n", data, length);
2893 } else {
2894- arcfour_crypt_sbox(&ntlmssp_state->crypt->ntlm.seal_state,
2895- data, length);
2896+ rc = gnutls_cipher_decrypt(ntlmssp_state->crypt->ntlm.seal_state,
2897+ data,
2898+ length);
2899+ if (rc < 0) {
2900+ DBG_ERR("gnutls_cipher_decrypt ntlmv1 unsealing the "
2901+ "data failed: %s\n",
2902+ gnutls_strerror(rc));
2903+ return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
2904+ }
2905 dump_data_pw("ntlmv1 clear data\n", data, length);
2906 }
2907+
2908 status = ntlmssp_check_packet(ntlmssp_state,
2909 data, length,
2910 whole_pdu, pdu_length,
2911@@ -555,6 +618,8 @@ NTSTATUS ntlmssp_unwrap(struct ntlmssp_state *ntlmssp_state,
2912 NTSTATUS ntlmssp_sign_reset(struct ntlmssp_state *ntlmssp_state,
2913 bool reset_seqnums)
2914 {
2915+ int rc;
2916+
2917 DEBUG(3, ("NTLMSSP Sign/Seal - Initialising with flags:\n"));
2918 debug_ntlmssp_flags(ntlmssp_state->neg_flags);
2919
2920@@ -584,12 +649,16 @@ NTSTATUS ntlmssp_sign_reset(struct ntlmssp_state *ntlmssp_state,
2921 const char *send_seal_const;
2922 const char *recv_sign_const;
2923 const char *recv_seal_const;
2924- uint8_t send_seal_key[16];
2925- DATA_BLOB send_seal_blob = data_blob_const(send_seal_key,
2926- sizeof(send_seal_key));
2927- uint8_t recv_seal_key[16];
2928- DATA_BLOB recv_seal_blob = data_blob_const(recv_seal_key,
2929- sizeof(recv_seal_key));
2930+ uint8_t send_seal_key[16] = {0};
2931+ gnutls_datum_t send_seal_blob = {
2932+ .data = send_seal_key,
2933+ .size = sizeof(send_seal_key),
2934+ };
2935+ uint8_t recv_seal_key[16] = {0};
2936+ gnutls_datum_t recv_seal_blob = {
2937+ .data = recv_seal_key,
2938+ .size = sizeof(recv_seal_key),
2939+ };
2940 NTSTATUS status;
2941
2942 switch (ntlmssp_state->role) {
2943@@ -648,10 +717,22 @@ NTSTATUS ntlmssp_sign_reset(struct ntlmssp_state *ntlmssp_state,
2944 if (!NT_STATUS_IS_OK(status)) {
2945 return status;
2946 }
2947- dump_data_pw("NTLMSSP send seal key:\n", send_seal_key, 16);
2948+ dump_data_pw("NTLMSSP send seal key:\n",
2949+ send_seal_key,
2950+ sizeof(send_seal_key));
2951
2952- arcfour_init(&ntlmssp_state->crypt->ntlm2.sending.seal_state,
2953- &send_seal_blob);
2954+ if (ntlmssp_state->crypt->ntlm2.sending.seal_state != NULL) {
2955+ gnutls_cipher_deinit(ntlmssp_state->crypt->ntlm2.sending.seal_state);
2956+ }
2957+ rc = gnutls_cipher_init(&ntlmssp_state->crypt->ntlm2.sending.seal_state,
2958+ GNUTLS_CIPHER_ARCFOUR_128,
2959+ &send_seal_blob,
2960+ NULL);
2961+ if (rc < 0) {
2962+ DBG_ERR("gnutls_cipher_init failed: %s\n",
2963+ gnutls_strerror(rc));
2964+ return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
2965+ }
2966
2967 dump_arc4_state("NTLMSSP send seal arc4 state:\n",
2968 &ntlmssp_state->crypt->ntlm2.sending.seal_state);
2969@@ -677,10 +758,22 @@ NTSTATUS ntlmssp_sign_reset(struct ntlmssp_state *ntlmssp_state,
2970 if (!NT_STATUS_IS_OK(status)) {
2971 return status;
2972 }
2973- dump_data_pw("NTLMSSP recv seal key:\n", recv_seal_key, 16);
2974+ dump_data_pw("NTLMSSP recv seal key:\n",
2975+ recv_seal_key,
2976+ sizeof(recv_seal_key));
2977
2978- arcfour_init(&ntlmssp_state->crypt->ntlm2.receiving.seal_state,
2979- &recv_seal_blob);
2980+ if (ntlmssp_state->crypt->ntlm2.receiving.seal_state != NULL) {
2981+ gnutls_cipher_deinit(ntlmssp_state->crypt->ntlm2.receiving.seal_state);
2982+ }
2983+ rc = gnutls_cipher_init(&ntlmssp_state->crypt->ntlm2.receiving.seal_state,
2984+ GNUTLS_CIPHER_ARCFOUR_128,
2985+ &recv_seal_blob,
2986+ NULL);
2987+ if (rc < 0) {
2988+ DBG_ERR("gnutls_cipher_init failed: %s\n",
2989+ gnutls_strerror(rc));
2990+ return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
2991+ }
2992
2993 dump_arc4_state("NTLMSSP recv seal arc4 state:\n",
2994 &ntlmssp_state->crypt->ntlm2.receiving.seal_state);
2995@@ -690,8 +783,10 @@ NTSTATUS ntlmssp_sign_reset(struct ntlmssp_state *ntlmssp_state,
2996 ntlmssp_state->crypt->ntlm2.receiving.seq_num = 0;
2997 }
2998 } else {
2999- uint8_t weak_session_key[8];
3000- DATA_BLOB seal_session_key = ntlmssp_state->session_key;
3001+ gnutls_datum_t seal_session_key = {
3002+ .data = ntlmssp_state->session_key.data,
3003+ .size = ntlmssp_state->session_key.length,
3004+ };
3005 bool do_weak = false;
3006
3007 DEBUG(5, ("NTLMSSP Sign/Seal - using NTLM1\n"));
3008@@ -709,14 +804,19 @@ NTSTATUS ntlmssp_sign_reset(struct ntlmssp_state *ntlmssp_state,
3009 * Nothing to weaken.
3010 * We certainly don't want to 'extend' the length...
3011 */
3012- if (seal_session_key.length < 16) {
3013+ if (ntlmssp_state->session_key.length < 16) {
3014 /* TODO: is this really correct? */
3015 do_weak = false;
3016 }
3017
3018 if (do_weak) {
3019+ uint8_t weak_session_key[8];
3020+
3021 memcpy(weak_session_key, seal_session_key.data, 8);
3022- seal_session_key = data_blob_const(weak_session_key, 8);
3023+ seal_session_key = (gnutls_datum_t) {
3024+ .data = weak_session_key,
3025+ .size = sizeof(weak_session_key),
3026+ };
3027
3028 /*
3029 * LM key doesn't support 128 bit crypto, so this is
3030@@ -732,8 +832,18 @@ NTSTATUS ntlmssp_sign_reset(struct ntlmssp_state *ntlmssp_state,
3031 }
3032 }
3033
3034- arcfour_init(&ntlmssp_state->crypt->ntlm.seal_state,
3035- &seal_session_key);
3036+ if (ntlmssp_state->crypt->ntlm.seal_state != NULL) {
3037+ gnutls_cipher_deinit(ntlmssp_state->crypt->ntlm.seal_state);
3038+ }
3039+ rc = gnutls_cipher_init(&ntlmssp_state->crypt->ntlm.seal_state,
3040+ GNUTLS_CIPHER_ARCFOUR_128,
3041+ &seal_session_key,
3042+ NULL);
3043+ if (rc < 0) {
3044+ DBG_ERR("gnutls_cipher_init failed: %s\n",
3045+ gnutls_strerror(rc));
3046+ return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
3047+ }
3048
3049 dump_arc4_state("NTLMv1 arc4 state:\n",
3050 &ntlmssp_state->crypt->ntlm.seal_state);
3051@@ -746,6 +856,24 @@ NTSTATUS ntlmssp_sign_reset(struct ntlmssp_state *ntlmssp_state,
3052 return NT_STATUS_OK;
3053 }
3054
3055+static int ntlmssp_crypt_free_gnutls_cipher_state(union ntlmssp_crypt_state *c)
3056+{
3057+ if (c->ntlm2.sending.seal_state != NULL) {
3058+ gnutls_cipher_deinit(c->ntlm2.sending.seal_state);
3059+ c->ntlm2.sending.seal_state = NULL;
3060+ }
3061+ if (c->ntlm2.receiving.seal_state != NULL) {
3062+ gnutls_cipher_deinit(c->ntlm2.receiving.seal_state);
3063+ c->ntlm2.receiving.seal_state = NULL;
3064+ }
3065+ if (c->ntlm.seal_state != NULL) {
3066+ gnutls_cipher_deinit(c->ntlm.seal_state);
3067+ c->ntlm.seal_state = NULL;
3068+ }
3069+
3070+ return 0;
3071+}
3072+
3073 NTSTATUS ntlmssp_sign_init(struct ntlmssp_state *ntlmssp_state)
3074 {
3075 if (ntlmssp_state->session_key.length < 8) {
3076@@ -758,6 +886,8 @@ NTSTATUS ntlmssp_sign_init(struct ntlmssp_state *ntlmssp_state)
3077 if (ntlmssp_state->crypt == NULL) {
3078 return NT_STATUS_NO_MEMORY;
3079 }
3080+ talloc_set_destructor(ntlmssp_state->crypt,
3081+ ntlmssp_crypt_free_gnutls_cipher_state);
3082
3083 return ntlmssp_sign_reset(ntlmssp_state, true);
3084 }
3085diff --git a/bootstrap/.gitlab-ci.yml b/bootstrap/.gitlab-ci.yml
3086index 8bec8cc..aa0b644 100644
3087--- a/bootstrap/.gitlab-ci.yml
3088+++ b/bootstrap/.gitlab-ci.yml
3089@@ -6,6 +6,7 @@ services:
3090 stage: images
3091 tags:
3092 - docker
3093+ - gce
3094 variables:
3095 SAMBA_CI_IS_BROKEN_IMAGE: "no"
3096 before_script:
3097@@ -41,7 +42,7 @@ services:
3098 diff -u bootstrap/sha1sum.txt /tmp/sha1sum-template.txt
3099 # run smoke test with samba-o3
3100 docker run --volume $(pwd):${samba_repo_root} --workdir ${samba_repo_root} ${ci_image_name} \
3101- /bin/bash -c "sudo chown -R samba:samba ./** && script/autobuild.py samba-o3 --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase"
3102+ /bin/bash -c "sudo chown -R samba:samba ./** && export PKG_CONFIG_PATH=/usr/lib64/compat-gnutls34/pkgconfig:/usr/lib64/compat-nettle32/pkgconfig && script/autobuild.py samba-o3 --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase"
3103 docker tag ${ci_image_name} ${ci_image_path}:${SAMBA_CI_CONTAINER_TAG}
3104 docker tag ${ci_image_name} ${ci_image_path}:${timestamp_tag}
3105 # We build all images, but only upload is it's not marked as broken
3106@@ -91,6 +92,9 @@ ubuntu1604:
3107 ubuntu1404:
3108 extends: .build_image_template_force_broken
3109
3110+debian10:
3111+ extends: .build_image_template
3112+
3113 debian9:
3114 extends: .build_image_template
3115
3116@@ -100,20 +104,25 @@ debian8:
3117 debian7:
3118 extends: .build_image_template_force_broken
3119
3120+fedora31:
3121+ extends: .build_image_template
3122+
3123 fedora30:
3124 extends: .build_image_template
3125
3126 fedora29:
3127 extends: .build_image_template
3128
3129-fedora28:
3130- extends: .build_image_template_force_broken
3131+centos8:
3132+ extends: .build_image_template
3133
3134 centos7:
3135 extends: .build_image_template
3136 variables:
3137 # Shallow copies are not supported by git on CentOS7
3138 GIT_DEPTH: ""
3139+ # We install a compat-gnutls34 package for GnuTLS >= 3.4.7
3140+ PKG_CONFIG_PATH: /usr/lib64/compat-gnutls34/pkgconfig:/usr/lib64/compat-nettle32/pkgconfig
3141
3142 centos6:
3143 extends: .build_image_template_force_broken
3144diff --git a/bootstrap/READMD.md b/bootstrap/READMD.md
3145index d653d6d..b8a3009 100644
3146--- a/bootstrap/READMD.md
3147+++ b/bootstrap/READMD.md
3148@@ -12,7 +12,7 @@ A pure python3 module with CLI to bootstrap Samba envs for multiple distribution
3149
3150 ## Supported Distributions
3151
3152-deb: Debian 7|8|9, Ubuntu 1404|1604|1804
3153+deb: Debian 7|8|9|10, Ubuntu 1404|1604|1804
3154 rpm: CentOS 6|7, Fedora 28|29, openSUSE Leap 15.0|15.1
3155
3156 Easy to add more.
3157diff --git a/bootstrap/config.py b/bootstrap/config.py
3158index a83a3ef..bcada1d 100644
3159--- a/bootstrap/config.py
3160+++ b/bootstrap/config.py
3161@@ -37,6 +37,7 @@ COMMON = [
3162 'binutils',
3163 'bison',
3164 'curl',
3165+ 'chrpath',
3166 'flex',
3167 'gcc',
3168 'gdb',
3169@@ -66,10 +67,9 @@ PKGS = [
3170 # NAME1-dev, NAME2-devel
3171 ('lmdb-utils', 'lmdb'),
3172 ('mingw-w64', 'mingw64-gcc'),
3173- ('nettle-dev', 'nettle-devel'),
3174 ('zlib1g-dev', 'zlib-devel'),
3175 ('libbsd-dev', 'libbsd-devel'),
3176- ('libaio-dev', 'libaio-devel'),
3177+ ('liburing-dev', 'liburing-devel'),
3178 ('libarchive-dev', 'libarchive-devel'),
3179 ('libblkid-dev', 'libblkid-devel'),
3180 ('libcap-dev', 'libcap-devel'),
3181@@ -128,22 +128,11 @@ PKGS = [
3182 ('', 'rpcsvc-proto-devel'), # for <rpcsvc/rquota.h> header
3183 ('mawk', 'gawk'),
3184
3185- # python
3186- ('python-dev', 'python-devel'),
3187- ('python-dbg', ''),
3188- ('python-iso8601', ''),
3189- ('python-gpg', 'python2-gpg'), # defaults to ubuntu/fedora latest
3190- ('python-crypto', 'python-crypto'),
3191- ('python-markdown', 'python-markdown'),
3192- ('python-dnspython', 'python-dns'),
3193- ('python-pexpect', ''), # for wintest only
3194-
3195 ('python3', 'python3'),
3196 ('python3-dev', 'python3-devel'),
3197 ('python3-dbg', ''),
3198 ('python3-iso8601', ''),
3199 ('python3-gpg', 'python3-gpg'), # defaults to ubuntu/fedora latest
3200- ('python3-crypto', 'python3-crypto'),
3201 ('python3-markdown', 'python3-markdown'),
3202 ('python3-matplotlib', ''),
3203 ('python3-dnspython', 'python3-dns'),
3204@@ -215,6 +204,8 @@ set -xueo pipefail
3205
3206 yum update -y
3207 yum install -y epel-release
3208+yum install -y yum-plugin-copr
3209+yum copr enable -y sergiomb/SambaAD
3210 yum update -y
3211
3212 yum install -y \
3213@@ -227,6 +218,23 @@ if [ ! -f /usr/bin/python3 ]; then
3214 fi
3215 """
3216
3217+CENTOS8_YUM_BOOTSTRAP = r"""
3218+#!/bin/bash
3219+{GENERATED_MARKER}
3220+set -xueo pipefail
3221+
3222+yum update -y
3223+yum install -y dnf-plugins-core
3224+yum install -y epel-release
3225+yum config-manager --set-enabled PowerTools -y
3226+yum update -y
3227+
3228+yum install -y \
3229+ --setopt=install_weak_deps=False \
3230+ {pkgs}
3231+
3232+yum clean all
3233+"""
3234
3235 DNF_BOOTSTRAP = r"""
3236 #!/bin/bash
3237@@ -377,6 +385,7 @@ DEB_DISTS = {
3238 'python-gpg': 'python-gpgme',
3239 'python3-gpg': '', # no python3 gpg pkg available, remove
3240 'language-pack-en': '', # included in locales
3241+ 'liburing-dev': '', # not available
3242 }
3243 },
3244 'debian8': {
3245@@ -386,6 +395,7 @@ DEB_DISTS = {
3246 'python-gpg': 'python-gpgme',
3247 'python3-gpg': 'python3-gpgme',
3248 'language-pack-en': '', # included in locales
3249+ 'liburing-dev': '', # not available
3250 }
3251 },
3252 'debian9': {
3253@@ -393,6 +403,15 @@ DEB_DISTS = {
3254 'vagrant_box': 'debian/stretch64',
3255 'replace': {
3256 'language-pack-en': '', # included in locales
3257+ 'liburing-dev': '', # not available
3258+ }
3259+ },
3260+ 'debian10': {
3261+ 'docker_image': 'debian:10',
3262+ 'vagrant_box': 'debian/buster64',
3263+ 'replace': {
3264+ 'language-pack-en': '', # included in locales
3265+ 'liburing-dev': '', # not available
3266 }
3267 },
3268 'ubuntu1404': {
3269@@ -408,6 +427,7 @@ DEB_DISTS = {
3270 'libunwind-dev': 'libunwind8-dev',
3271 'glusterfs-common': '',
3272 'libcephfs-dev': '',
3273+ 'liburing-dev': '', # not available
3274 }
3275 },
3276 'ubuntu1604': {
3277@@ -418,11 +438,15 @@ DEB_DISTS = {
3278 'python3-gpg': 'python3-gpgme',
3279 'glusterfs-common': '',
3280 'libcephfs-dev': '',
3281+ 'liburing-dev': '', # not available
3282 }
3283 },
3284 'ubuntu1804': {
3285 'docker_image': 'ubuntu:18.04',
3286 'vagrant_box': 'ubuntu/bionic64',
3287+ 'replace': {
3288+ 'liburing-dev': '', # not available
3289+ }
3290 },
3291 }
3292
3293@@ -449,6 +473,7 @@ RPM_DISTS = {
3294 'glusterfs-api-devel': '',
3295 'glusterfs-devel': '',
3296 'libcephfs-devel': '',
3297+ 'liburing-devel': '', # not available
3298 }
3299 },
3300 'centos7': {
3301@@ -479,14 +504,25 @@ RPM_DISTS = {
3302 'glusterfs-api-devel': '',
3303 'glusterfs-devel': '',
3304 'libcephfs-devel': '',
3305+ 'gnutls-devel': 'compat-gnutls34-devel',
3306+ 'liburing-devel': '', # not available
3307 }
3308 },
3309- 'fedora28': {
3310- 'docker_image': 'fedora:28',
3311- 'vagrant_box': 'fedora/28-cloud-base',
3312- 'bootstrap': DNF_BOOTSTRAP,
3313+ 'centos8': {
3314+ 'docker_image': 'centos:8',
3315+ 'vagrant_box': 'centos/8',
3316+ 'bootstrap': CENTOS8_YUM_BOOTSTRAP,
3317 'replace': {
3318 'lsb-release': 'redhat-lsb',
3319+ '@development-tools': '"@Development Tools"', # add quotes
3320+ 'libsemanage-python': 'python3-libsemanage',
3321+ 'lcov': '', # does not exist
3322+ 'perl-JSON-Parse': '', # does not exist?
3323+ 'perl-Test-Base': 'perl-Test-Simple',
3324+ 'policycoreutils-python': 'python3-policycoreutils',
3325+ 'python3-crypto': '',
3326+ 'quota-devel': '', # FIXME: Add me back, once available!
3327+ 'liburing-devel': '', # not available yet, Add me back, once available!
3328 }
3329 },
3330 'fedora29': {
3331@@ -495,6 +531,7 @@ RPM_DISTS = {
3332 'bootstrap': DNF_BOOTSTRAP,
3333 'replace': {
3334 'lsb-release': 'redhat-lsb',
3335+ 'liburing-devel': '', # not available
3336 }
3337 },
3338 'fedora30': {
3339@@ -503,6 +540,17 @@ RPM_DISTS = {
3340 'bootstrap': DNF_BOOTSTRAP,
3341 'replace': {
3342 'lsb-release': 'redhat-lsb',
3343+ 'liburing-devel': '', # not available
3344+ }
3345+ },
3346+ 'fedora31': {
3347+ 'docker_image': 'fedora:31',
3348+ 'vagrant_box': 'fedora/31-cloud-base',
3349+ 'bootstrap': DNF_BOOTSTRAP,
3350+ 'replace': {
3351+ 'lsb-release': 'redhat-lsb',
3352+ 'libsemanage-python': 'python3-libsemanage',
3353+ 'policycoreutils-python': 'python3-policycoreutils',
3354 }
3355 },
3356 'opensuse150': {
3357@@ -521,7 +569,6 @@ RPM_DISTS = {
3358 'krb5-workstation': 'krb5-client',
3359 'libnsl2-devel': 'libnsl-devel',
3360 'libsemanage-python': 'python2-semanage',
3361- 'nettle-devel': 'libnettle-devel',
3362 'openldap-devel': 'openldap2-devel',
3363 'perl-Archive-Tar': 'perl-Archive-Tar-Wrapper',
3364 'perl-JSON-Parse': 'perl-JSON-XS',
3365@@ -536,6 +583,7 @@ RPM_DISTS = {
3366 'glusterfs-api-devel': '',
3367 'libtasn1-tools': '', # asn1Parser is part of libtasn1
3368 'mingw64-gcc': '', # doesn't exist
3369+ 'liburing-devel': '', # not available
3370 }
3371 },
3372 'opensuse151': {
3373@@ -554,7 +602,6 @@ RPM_DISTS = {
3374 'krb5-workstation': 'krb5-client',
3375 'libnsl2-devel': 'libnsl-devel',
3376 'libsemanage-python': 'python2-semanage',
3377- 'nettle-devel': 'libnettle-devel',
3378 'openldap-devel': 'openldap2-devel',
3379 'perl-Archive-Tar': 'perl-Archive-Tar-Wrapper',
3380 'perl-JSON-Parse': 'perl-JSON-XS',
3381@@ -569,6 +616,7 @@ RPM_DISTS = {
3382 'glusterfs-api-devel': '',
3383 'libtasn1-tools': '', # asn1Parser is part of libtasn1
3384 'mingw64-gcc': '', # doesn't exist
3385+ 'liburing-devel': '', # not available, will be added in 15.2
3386 }
3387 }
3388 }
3389diff --git a/bootstrap/generated-dists/Vagrantfile b/bootstrap/generated-dists/Vagrantfile
3390index 941cc9a..b3cb6be 100644
3391--- a/bootstrap/generated-dists/Vagrantfile
3392+++ b/bootstrap/generated-dists/Vagrantfile
3393@@ -24,6 +24,20 @@ Vagrant.configure("2") do |config|
3394 v.vm.provision :shell, path: "centos7/locale.sh"
3395 end
3396
3397+ config.vm.define "centos8" do |v|
3398+ v.vm.box = "centos/8"
3399+ v.vm.hostname = "centos8"
3400+ v.vm.provision :shell, path: "centos8/bootstrap.sh"
3401+ v.vm.provision :shell, path: "centos8/locale.sh"
3402+ end
3403+
3404+ config.vm.define "debian10" do |v|
3405+ v.vm.box = "debian/buster64"
3406+ v.vm.hostname = "debian10"
3407+ v.vm.provision :shell, path: "debian10/bootstrap.sh"
3408+ v.vm.provision :shell, path: "debian10/locale.sh"
3409+ end
3410+
3411 config.vm.define "debian7" do |v|
3412 v.vm.box = "debian/wheezy64"
3413 v.vm.hostname = "debian7"
3414@@ -45,13 +59,6 @@ Vagrant.configure("2") do |config|
3415 v.vm.provision :shell, path: "debian9/locale.sh"
3416 end
3417
3418- config.vm.define "fedora28" do |v|
3419- v.vm.box = "fedora/28-cloud-base"
3420- v.vm.hostname = "fedora28"
3421- v.vm.provision :shell, path: "fedora28/bootstrap.sh"
3422- v.vm.provision :shell, path: "fedora28/locale.sh"
3423- end
3424-
3425 config.vm.define "fedora29" do |v|
3426 v.vm.box = "fedora/29-cloud-base"
3427 v.vm.hostname = "fedora29"
3428@@ -66,6 +73,13 @@ Vagrant.configure("2") do |config|
3429 v.vm.provision :shell, path: "fedora30/locale.sh"
3430 end
3431
3432+ config.vm.define "fedora31" do |v|
3433+ v.vm.box = "fedora/31-cloud-base"
3434+ v.vm.hostname = "fedora31"
3435+ v.vm.provision :shell, path: "fedora31/bootstrap.sh"
3436+ v.vm.provision :shell, path: "fedora31/locale.sh"
3437+ end
3438+
3439 config.vm.define "opensuse150" do |v|
3440 v.vm.box = "opensuse/openSUSE-15.0-x86_64"
3441 v.vm.hostname = "opensuse150"
3442diff --git a/bootstrap/generated-dists/centos6/bootstrap.sh b/bootstrap/generated-dists/centos6/bootstrap.sh
3443index 6d60bd2..ee6fcc3 100755
3444--- a/bootstrap/generated-dists/centos6/bootstrap.sh
3445+++ b/bootstrap/generated-dists/centos6/bootstrap.sh
3446@@ -9,6 +9,8 @@ set -xueo pipefail
3447
3448 yum update -y
3449 yum install -y epel-release
3450+yum install -y yum-plugin-copr
3451+yum copr enable -y sergiomb/SambaAD
3452 yum update -y
3453
3454 yum install -y \
3455@@ -20,6 +22,7 @@ yum install -y \
3456 bind-utils \
3457 binutils \
3458 bison \
3459+ chrpath \
3460 cups-devel \
3461 curl \
3462 dbus-devel \
3463@@ -43,7 +46,6 @@ yum install -y \
3464 krb5-server \
3465 lcov \
3466 libacl-devel \
3467- libaio-devel \
3468 libarchive-devel \
3469 libattr-devel \
3470 libblkid-devel \
3471@@ -64,7 +66,6 @@ yum install -y \
3472 make \
3473 mingw64-gcc \
3474 ncurses-devel \
3475- nettle-devel \
3476 openldap-devel \
3477 pam-devel \
3478 patch \
3479@@ -81,12 +82,6 @@ yum install -y \
3480 popt-devel \
3481 procps \
3482 psmisc \
3483- pygpgme \
3484- python-crypto \
3485- python-devel \
3486- python-dns \
3487- python-markdown \
3488- python3-crypto \
3489 python3-dns \
3490 python3-markdown \
3491 python36 \
3492diff --git a/bootstrap/generated-dists/centos6/packages.yml b/bootstrap/generated-dists/centos6/packages.yml
3493index 168fbe9..1e2b5a9 100644
3494--- a/bootstrap/generated-dists/centos6/packages.yml
3495+++ b/bootstrap/generated-dists/centos6/packages.yml
3496@@ -8,6 +8,7 @@ packages:
3497 - bind-utils
3498 - binutils
3499 - bison
3500+ - chrpath
3501 - cups-devel
3502 - curl
3503 - dbus-devel
3504@@ -31,7 +32,6 @@ packages:
3505 - krb5-server
3506 - lcov
3507 - libacl-devel
3508- - libaio-devel
3509 - libarchive-devel
3510 - libattr-devel
3511 - libblkid-devel
3512@@ -52,7 +52,6 @@ packages:
3513 - make
3514 - mingw64-gcc
3515 - ncurses-devel
3516- - nettle-devel
3517 - openldap-devel
3518 - pam-devel
3519 - patch
3520@@ -69,12 +68,6 @@ packages:
3521 - popt-devel
3522 - procps
3523 - psmisc
3524- - pygpgme
3525- - python-crypto
3526- - python-devel
3527- - python-dns
3528- - python-markdown
3529- - python3-crypto
3530 - python3-dns
3531 - python3-markdown
3532 - python36
3533diff --git a/bootstrap/generated-dists/centos7/bootstrap.sh b/bootstrap/generated-dists/centos7/bootstrap.sh
3534index b59ef6a..2f0bb1b 100755
3535--- a/bootstrap/generated-dists/centos7/bootstrap.sh
3536+++ b/bootstrap/generated-dists/centos7/bootstrap.sh
3537@@ -9,6 +9,8 @@ set -xueo pipefail
3538
3539 yum update -y
3540 yum install -y epel-release
3541+yum install -y yum-plugin-copr
3542+yum copr enable -y sergiomb/SambaAD
3543 yum update -y
3544
3545 yum install -y \
3546@@ -20,6 +22,8 @@ yum install -y \
3547 bind-utils \
3548 binutils \
3549 bison \
3550+ chrpath \
3551+ compat-gnutls34-devel \
3552 cups-devel \
3553 curl \
3554 dbus-devel \
3555@@ -32,7 +36,6 @@ yum install -y \
3556 git \
3557 glib2-devel \
3558 glibc-common \
3559- gnutls-devel \
3560 gpgme-devel \
3561 gzip \
3562 hostname \
3563@@ -43,7 +46,6 @@ yum install -y \
3564 krb5-server \
3565 lcov \
3566 libacl-devel \
3567- libaio-devel \
3568 libarchive-devel \
3569 libattr-devel \
3570 libblkid-devel \
3571@@ -64,7 +66,6 @@ yum install -y \
3572 make \
3573 mingw64-gcc \
3574 ncurses-devel \
3575- nettle-devel \
3576 openldap-devel \
3577 pam-devel \
3578 patch \
3579@@ -81,13 +82,7 @@ yum install -y \
3580 popt-devel \
3581 procps-ng \
3582 psmisc \
3583- pygpgme \
3584- python-crypto \
3585- python-devel \
3586- python-dns \
3587- python-markdown \
3588 python36 \
3589- python36-crypto \
3590 python36-devel \
3591 python36-dns \
3592 python36-markdown \
3593diff --git a/bootstrap/generated-dists/centos7/packages.yml b/bootstrap/generated-dists/centos7/packages.yml
3594index 7a106d8..475326b 100644
3595--- a/bootstrap/generated-dists/centos7/packages.yml
3596+++ b/bootstrap/generated-dists/centos7/packages.yml
3597@@ -8,6 +8,8 @@ packages:
3598 - bind-utils
3599 - binutils
3600 - bison
3601+ - chrpath
3602+ - compat-gnutls34-devel
3603 - cups-devel
3604 - curl
3605 - dbus-devel
3606@@ -20,7 +22,6 @@ packages:
3607 - git
3608 - glib2-devel
3609 - glibc-common
3610- - gnutls-devel
3611 - gpgme-devel
3612 - gzip
3613 - hostname
3614@@ -31,7 +32,6 @@ packages:
3615 - krb5-server
3616 - lcov
3617 - libacl-devel
3618- - libaio-devel
3619 - libarchive-devel
3620 - libattr-devel
3621 - libblkid-devel
3622@@ -52,7 +52,6 @@ packages:
3623 - make
3624 - mingw64-gcc
3625 - ncurses-devel
3626- - nettle-devel
3627 - openldap-devel
3628 - pam-devel
3629 - patch
3630@@ -69,13 +68,7 @@ packages:
3631 - popt-devel
3632 - procps-ng
3633 - psmisc
3634- - pygpgme
3635- - python-crypto
3636- - python-devel
3637- - python-dns
3638- - python-markdown
3639 - python36
3640- - python36-crypto
3641 - python36-devel
3642 - python36-dns
3643 - python36-markdown
3644diff --git a/bootstrap/generated-dists/fedora28/Dockerfile b/bootstrap/generated-dists/centos8/Dockerfile
3645similarity index 95%
3646rename from bootstrap/generated-dists/fedora28/Dockerfile
3647rename to bootstrap/generated-dists/centos8/Dockerfile
3648index 4d25691..f6343e9 100644
3649--- a/bootstrap/generated-dists/fedora28/Dockerfile
3650+++ b/bootstrap/generated-dists/centos8/Dockerfile
3651@@ -3,7 +3,7 @@
3652 # See also bootstrap/config.py
3653 #
3654
3655-FROM fedora:28
3656+FROM centos:8
3657
3658 # pass in with --build-arg while build
3659 ARG SHA1SUM
3660diff --git a/bootstrap/generated-dists/centos8/bootstrap.sh b/bootstrap/generated-dists/centos8/bootstrap.sh
3661new file mode 100755
3662index 0000000..22484b3
3663--- /dev/null
3664+++ b/bootstrap/generated-dists/centos8/bootstrap.sh
3665@@ -0,0 +1,109 @@
3666+#!/bin/bash
3667+
3668+#
3669+# This file is generated by 'bootstrap/template.py --render'
3670+# See also bootstrap/config.py
3671+#
3672+
3673+set -xueo pipefail
3674+
3675+yum update -y
3676+yum install -y dnf-plugins-core
3677+yum install -y epel-release
3678+yum config-manager --set-enabled PowerTools -y
3679+yum update -y
3680+
3681+yum install -y \
3682+ --setopt=install_weak_deps=False \
3683+ "@Development Tools" \
3684+ acl \
3685+ attr \
3686+ autoconf \
3687+ avahi-devel \
3688+ bind-utils \
3689+ binutils \
3690+ bison \
3691+ chrpath \
3692+ cups-devel \
3693+ curl \
3694+ dbus-devel \
3695+ docbook-dtds \
3696+ docbook-style-xsl \
3697+ flex \
3698+ gawk \
3699+ gcc \
3700+ gdb \
3701+ git \
3702+ glib2-devel \
3703+ glibc-common \
3704+ glibc-langpack-en \
3705+ glusterfs-api-devel \
3706+ glusterfs-devel \
3707+ gnutls-devel \
3708+ gpgme-devel \
3709+ gzip \
3710+ hostname \
3711+ htop \
3712+ jansson-devel \
3713+ keyutils-libs-devel \
3714+ krb5-devel \
3715+ krb5-server \
3716+ libacl-devel \
3717+ libarchive-devel \
3718+ libattr-devel \
3719+ libblkid-devel \
3720+ libbsd-devel \
3721+ libcap-devel \
3722+ libcephfs-devel \
3723+ libicu-devel \
3724+ libnsl2-devel \
3725+ libpcap-devel \
3726+ libtasn1-devel \
3727+ libtasn1-tools \
3728+ libtirpc-devel \
3729+ libunwind-devel \
3730+ libuuid-devel \
3731+ libxslt \
3732+ lmdb \
3733+ lmdb-devel \
3734+ make \
3735+ mingw64-gcc \
3736+ ncurses-devel \
3737+ openldap-devel \
3738+ pam-devel \
3739+ patch \
3740+ perl \
3741+ perl-Archive-Tar \
3742+ perl-ExtUtils-MakeMaker \
3743+ perl-Parse-Yapp \
3744+ perl-Test-Simple \
3745+ perl-generators \
3746+ perl-interpreter \
3747+ pkgconfig \
3748+ popt-devel \
3749+ procps-ng \
3750+ psmisc \
3751+ python3 \
3752+ python3-devel \
3753+ python3-dns \
3754+ python3-gpg \
3755+ python3-libsemanage \
3756+ python3-markdown \
3757+ python3-policycoreutils \
3758+ readline-devel \
3759+ redhat-lsb \
3760+ rng-tools \
3761+ rpcgen \
3762+ rpcsvc-proto-devel \
3763+ rsync \
3764+ sed \
3765+ sudo \
3766+ systemd-devel \
3767+ tar \
3768+ tree \
3769+ which \
3770+ xfsprogs-devel \
3771+ yum-utils \
3772+ zlib-devel
3773+
3774+yum clean all
3775\ No newline at end of file
3776diff --git a/bootstrap/generated-dists/fedora28/locale.sh b/bootstrap/generated-dists/centos8/locale.sh
3777similarity index 100%
3778rename from bootstrap/generated-dists/fedora28/locale.sh
3779rename to bootstrap/generated-dists/centos8/locale.sh
3780diff --git a/bootstrap/generated-dists/centos8/packages.yml b/bootstrap/generated-dists/centos8/packages.yml
3781new file mode 100644
3782index 0000000..07be0de
3783--- /dev/null
3784+++ b/bootstrap/generated-dists/centos8/packages.yml
3785@@ -0,0 +1,92 @@
3786+---
3787+packages:
3788+ - "@Development Tools"
3789+ - acl
3790+ - attr
3791+ - autoconf
3792+ - avahi-devel
3793+ - bind-utils
3794+ - binutils
3795+ - bison
3796+ - chrpath
3797+ - cups-devel
3798+ - curl
3799+ - dbus-devel
3800+ - docbook-dtds
3801+ - docbook-style-xsl
3802+ - flex
3803+ - gawk
3804+ - gcc
3805+ - gdb
3806+ - git
3807+ - glib2-devel
3808+ - glibc-common
3809+ - glibc-langpack-en
3810+ - glusterfs-api-devel
3811+ - glusterfs-devel
3812+ - gnutls-devel
3813+ - gpgme-devel
3814+ - gzip
3815+ - hostname
3816+ - htop
3817+ - jansson-devel
3818+ - keyutils-libs-devel
3819+ - krb5-devel
3820+ - krb5-server
3821+ - libacl-devel
3822+ - libarchive-devel
3823+ - libattr-devel
3824+ - libblkid-devel
3825+ - libbsd-devel
3826+ - libcap-devel
3827+ - libcephfs-devel
3828+ - libicu-devel
3829+ - libnsl2-devel
3830+ - libpcap-devel
3831+ - libtasn1-devel
3832+ - libtasn1-tools
3833+ - libtirpc-devel
3834+ - libunwind-devel
3835+ - libuuid-devel
3836+ - libxslt
3837+ - lmdb
3838+ - lmdb-devel
3839+ - make
3840+ - mingw64-gcc
3841+ - ncurses-devel
3842+ - openldap-devel
3843+ - pam-devel
3844+ - patch
3845+ - perl
3846+ - perl-Archive-Tar
3847+ - perl-ExtUtils-MakeMaker
3848+ - perl-Parse-Yapp
3849+ - perl-Test-Simple
3850+ - perl-generators
3851+ - perl-interpreter
3852+ - pkgconfig
3853+ - popt-devel
3854+ - procps-ng
3855+ - psmisc
3856+ - python3
3857+ - python3-devel
3858+ - python3-dns
3859+ - python3-gpg
3860+ - python3-libsemanage
3861+ - python3-markdown
3862+ - python3-policycoreutils
3863+ - readline-devel
3864+ - redhat-lsb
3865+ - rng-tools
3866+ - rpcgen
3867+ - rpcsvc-proto-devel
3868+ - rsync
3869+ - sed
3870+ - sudo
3871+ - systemd-devel
3872+ - tar
3873+ - tree
3874+ - which
3875+ - xfsprogs-devel
3876+ - yum-utils
3877+ - zlib-devel
3878\ No newline at end of file
3879diff --git a/bootstrap/generated-dists/debian10/Dockerfile b/bootstrap/generated-dists/debian10/Dockerfile
3880new file mode 100644
3881index 0000000..a7141db
3882--- /dev/null
3883+++ b/bootstrap/generated-dists/debian10/Dockerfile
3884@@ -0,0 +1,27 @@
3885+#
3886+# This file is generated by 'bootstrap/template.py --render'
3887+# See also bootstrap/config.py
3888+#
3889+
3890+FROM debian:10
3891+
3892+# pass in with --build-arg while build
3893+ARG SHA1SUM
3894+RUN [ -n $SHA1SUM ] && echo $SHA1SUM > /sha1sum.txt
3895+
3896+ADD *.sh /tmp/
3897+# need root permission, do it before USER samba
3898+RUN /tmp/bootstrap.sh && /tmp/locale.sh
3899+
3900+# if ld.gold exists, force link it to ld
3901+RUN set -x; LD=$(which ld); LD_GOLD=$(which ld.gold); test -x $LD_GOLD && ln -sf $LD_GOLD $LD && test -x $LD && echo "$LD is now $LD_GOLD"
3902+
3903+# make test can not work with root, so we have to create a new user
3904+RUN useradd -m -U -s /bin/bash samba && \
3905+ mkdir -p /etc/sudoers.d && \
3906+ echo "samba ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/samba
3907+
3908+USER samba
3909+WORKDIR /home/samba
3910+# samba tests rely on this
3911+ENV USER=samba LC_ALL=en_US.utf8 LANG=en_US.utf8
3912\ No newline at end of file
3913diff --git a/bootstrap/generated-dists/debian10/bootstrap.sh b/bootstrap/generated-dists/debian10/bootstrap.sh
3914new file mode 100755
3915index 0000000..f0847eb
3916--- /dev/null
3917+++ b/bootstrap/generated-dists/debian10/bootstrap.sh
3918@@ -0,0 +1,105 @@
3919+#!/bin/bash
3920+
3921+#
3922+# This file is generated by 'bootstrap/template.py --render'
3923+# See also bootstrap/config.py
3924+#
3925+
3926+set -xueo pipefail
3927+
3928+export DEBIAN_FRONTEND=noninteractive
3929+apt-get -y update
3930+
3931+apt-get -y install \
3932+ acl \
3933+ apt-utils \
3934+ attr \
3935+ autoconf \
3936+ bind9utils \
3937+ binutils \
3938+ bison \
3939+ build-essential \
3940+ chrpath \
3941+ curl \
3942+ debhelper \
3943+ dnsutils \
3944+ docbook-xml \
3945+ docbook-xsl \
3946+ flex \
3947+ gcc \
3948+ gdb \
3949+ git \
3950+ glusterfs-common \
3951+ gzip \
3952+ heimdal-multidev \
3953+ hostname \
3954+ htop \
3955+ krb5-config \
3956+ krb5-kdc \
3957+ krb5-user \
3958+ lcov \
3959+ libacl1-dev \
3960+ libarchive-dev \
3961+ libattr1-dev \
3962+ libavahi-common-dev \
3963+ libblkid-dev \
3964+ libbsd-dev \
3965+ libcap-dev \
3966+ libcephfs-dev \
3967+ libcups2-dev \
3968+ libdbus-1-dev \
3969+ libglib2.0-dev \
3970+ libgnutls28-dev \
3971+ libgpgme11-dev \
3972+ libicu-dev \
3973+ libjansson-dev \
3974+ libjs-jquery \
3975+ libjson-perl \
3976+ libkrb5-dev \
3977+ libldap2-dev \
3978+ liblmdb-dev \
3979+ libncurses5-dev \
3980+ libpam0g-dev \
3981+ libparse-yapp-perl \
3982+ libpcap-dev \
3983+ libpopt-dev \
3984+ libreadline-dev \
3985+ libsystemd-dev \
3986+ libtasn1-bin \
3987+ libtasn1-dev \
3988+ libunwind-dev \
3989+ lmdb-utils \
3990+ locales \
3991+ lsb-release \
3992+ make \
3993+ mawk \
3994+ mingw-w64 \
3995+ patch \
3996+ perl \
3997+ perl-modules \
3998+ pkg-config \
3999+ procps \
4000+ psmisc \
4001+ python3 \
4002+ python3-dbg \
4003+ python3-dev \
4004+ python3-dnspython \
4005+ python3-gpg \
4006+ python3-iso8601 \
4007+ python3-markdown \
4008+ python3-matplotlib \
4009+ python3-pexpect \
4010+ rng-tools \
4011+ rsync \
4012+ sed \
4013+ sudo \
4014+ tar \
4015+ tree \
4016+ uuid-dev \
4017+ xfslibs-dev \
4018+ xsltproc \
4019+ zlib1g-dev
4020+
4021+apt-get -y autoremove
4022+apt-get -y autoclean
4023+apt-get -y clean
4024\ No newline at end of file
4025diff --git a/bootstrap/generated-dists/debian10/locale.sh b/bootstrap/generated-dists/debian10/locale.sh
4026new file mode 100755
4027index 0000000..cc64e18
4028--- /dev/null
4029+++ b/bootstrap/generated-dists/debian10/locale.sh
4030@@ -0,0 +1,55 @@
4031+#!/bin/bash
4032+
4033+#
4034+# This file is generated by 'bootstrap/template.py --render'
4035+# See also bootstrap/config.py
4036+#
4037+
4038+set -xueo pipefail
4039+
4040+# refer to /usr/share/i18n/locales
4041+INPUTFILE=en_US
4042+# refer to /usr/share/i18n/charmaps
4043+CHARMAP=UTF-8
4044+# locale to generate in /usr/lib/locale
4045+# glibc/localedef will normalize UTF-8 to utf8, follow the naming style
4046+LOCALE=$INPUTFILE.utf8
4047+
4048+# if locale is already correct, exit
4049+( locale | grep LC_ALL | grep -i $LOCALE ) && exit 0
4050+
4051+# if locale not available, generate locale into /usr/lib/locale
4052+if ! ( locale --all-locales | grep -i $LOCALE )
4053+then
4054+ # no-archive means create its own dir
4055+ localedef --inputfile $INPUTFILE --charmap $CHARMAP --no-archive $LOCALE
4056+fi
4057+
4058+# update locale conf and global env file
4059+# set both LC_ALL and LANG for safe
4060+
4061+# update conf for Debian family
4062+FILE=/etc/default/locale
4063+if [ -f $FILE ]
4064+then
4065+ echo LC_ALL="$LOCALE" > $FILE
4066+ echo LANG="$LOCALE" >> $FILE
4067+fi
4068+
4069+# update conf for RedHat family
4070+FILE=/etc/locale.conf
4071+if [ -f $FILE ]
4072+then
4073+ # LC_ALL is not valid in this file, set LANG only
4074+ echo LANG="$LOCALE" > $FILE
4075+fi
4076+
4077+# update global env file
4078+FILE=/etc/environment
4079+if [ -f $FILE ]
4080+then
4081+ # append LC_ALL if not exist
4082+ grep LC_ALL $FILE || echo LC_ALL="$LOCALE" >> $FILE
4083+ # append LANG if not exist
4084+ grep LANG $FILE || echo LANG="$LOCALE" >> $FILE
4085+fi
4086\ No newline at end of file
4087diff --git a/bootstrap/generated-dists/debian10/packages.yml b/bootstrap/generated-dists/debian10/packages.yml
4088new file mode 100644
4089index 0000000..a242cd8
4090--- /dev/null
4091+++ b/bootstrap/generated-dists/debian10/packages.yml
4092@@ -0,0 +1,90 @@
4093+---
4094+packages:
4095+ - acl
4096+ - apt-utils
4097+ - attr
4098+ - autoconf
4099+ - bind9utils
4100+ - binutils
4101+ - bison
4102+ - build-essential
4103+ - chrpath
4104+ - curl
4105+ - debhelper
4106+ - dnsutils
4107+ - docbook-xml
4108+ - docbook-xsl
4109+ - flex
4110+ - gcc
4111+ - gdb
4112+ - git
4113+ - glusterfs-common
4114+ - gzip
4115+ - heimdal-multidev
4116+ - hostname
4117+ - htop
4118+ - krb5-config
4119+ - krb5-kdc
4120+ - krb5-user
4121+ - lcov
4122+ - libacl1-dev
4123+ - libarchive-dev
4124+ - libattr1-dev
4125+ - libavahi-common-dev
4126+ - libblkid-dev
4127+ - libbsd-dev
4128+ - libcap-dev
4129+ - libcephfs-dev
4130+ - libcups2-dev
4131+ - libdbus-1-dev
4132+ - libglib2.0-dev
4133+ - libgnutls28-dev
4134+ - libgpgme11-dev
4135+ - libicu-dev
4136+ - libjansson-dev
4137+ - libjs-jquery
4138+ - libjson-perl
4139+ - libkrb5-dev
4140+ - libldap2-dev
4141+ - liblmdb-dev
4142+ - libncurses5-dev
4143+ - libpam0g-dev
4144+ - libparse-yapp-perl
4145+ - libpcap-dev
4146+ - libpopt-dev
4147+ - libreadline-dev
4148+ - libsystemd-dev
4149+ - libtasn1-bin
4150+ - libtasn1-dev
4151+ - libunwind-dev
4152+ - lmdb-utils
4153+ - locales
4154+ - lsb-release
4155+ - make
4156+ - mawk
4157+ - mingw-w64
4158+ - patch
4159+ - perl
4160+ - perl-modules
4161+ - pkg-config
4162+ - procps
4163+ - psmisc
4164+ - python3
4165+ - python3-dbg
4166+ - python3-dev
4167+ - python3-dnspython
4168+ - python3-gpg
4169+ - python3-iso8601
4170+ - python3-markdown
4171+ - python3-matplotlib
4172+ - python3-pexpect
4173+ - rng-tools
4174+ - rsync
4175+ - sed
4176+ - sudo
4177+ - tar
4178+ - tree
4179+ - uuid-dev
4180+ - xfslibs-dev
4181+ - xsltproc
4182+ - zlib1g-dev
4183\ No newline at end of file
4184diff --git a/bootstrap/generated-dists/debian7/bootstrap.sh b/bootstrap/generated-dists/debian7/bootstrap.sh
4185index fcba67c..daedce8 100755
4186--- a/bootstrap/generated-dists/debian7/bootstrap.sh
4187+++ b/bootstrap/generated-dists/debian7/bootstrap.sh
4188@@ -19,6 +19,7 @@ apt-get -y install \
4189 binutils \
4190 bison \
4191 build-essential \
4192+ chrpath \
4193 curl \
4194 debhelper \
4195 dnsutils \
4196@@ -38,7 +39,6 @@ apt-get -y install \
4197 krb5-user \
4198 lcov \
4199 libacl1-dev \
4200- libaio-dev \
4201 libarchive-dev \
4202 libattr1-dev \
4203 libavahi-common-dev \
4204@@ -71,23 +71,13 @@ apt-get -y install \
4205 make \
4206 mawk \
4207 mingw-w64 \
4208- nettle-dev \
4209 patch \
4210 perl \
4211 perl-modules \
4212 pkg-config \
4213 procps \
4214 psmisc \
4215- python-crypto \
4216- python-dbg \
4217- python-dev \
4218- python-dnspython \
4219- python-gpgme \
4220- python-iso8601 \
4221- python-markdown \
4222- python-pexpect \
4223 python3 \
4224- python3-crypto \
4225 python3-dbg \
4226 python3-dev \
4227 python3-dnspython \
4228diff --git a/bootstrap/generated-dists/debian7/packages.yml b/bootstrap/generated-dists/debian7/packages.yml
4229index 62fd54b..3cac687 100644
4230--- a/bootstrap/generated-dists/debian7/packages.yml
4231+++ b/bootstrap/generated-dists/debian7/packages.yml
4232@@ -8,6 +8,7 @@ packages:
4233 - binutils
4234 - bison
4235 - build-essential
4236+ - chrpath
4237 - curl
4238 - debhelper
4239 - dnsutils
4240@@ -27,7 +28,6 @@ packages:
4241 - krb5-user
4242 - lcov
4243 - libacl1-dev
4244- - libaio-dev
4245 - libarchive-dev
4246 - libattr1-dev
4247 - libavahi-common-dev
4248@@ -60,23 +60,13 @@ packages:
4249 - make
4250 - mawk
4251 - mingw-w64
4252- - nettle-dev
4253 - patch
4254 - perl
4255 - perl-modules
4256 - pkg-config
4257 - procps
4258 - psmisc
4259- - python-crypto
4260- - python-dbg
4261- - python-dev
4262- - python-dnspython
4263- - python-gpgme
4264- - python-iso8601
4265- - python-markdown
4266- - python-pexpect
4267 - python3
4268- - python3-crypto
4269 - python3-dbg
4270 - python3-dev
4271 - python3-dnspython
4272diff --git a/bootstrap/generated-dists/debian8/bootstrap.sh b/bootstrap/generated-dists/debian8/bootstrap.sh
4273index 54e3f78..0105083 100755
4274--- a/bootstrap/generated-dists/debian8/bootstrap.sh
4275+++ b/bootstrap/generated-dists/debian8/bootstrap.sh
4276@@ -19,6 +19,7 @@ apt-get -y install \
4277 binutils \
4278 bison \
4279 build-essential \
4280+ chrpath \
4281 curl \
4282 debhelper \
4283 dnsutils \
4284@@ -38,7 +39,6 @@ apt-get -y install \
4285 krb5-user \
4286 lcov \
4287 libacl1-dev \
4288- libaio-dev \
4289 libarchive-dev \
4290 libattr1-dev \
4291 libavahi-common-dev \
4292@@ -74,23 +74,13 @@ apt-get -y install \
4293 make \
4294 mawk \
4295 mingw-w64 \
4296- nettle-dev \
4297 patch \
4298 perl \
4299 perl-modules \
4300 pkg-config \
4301 procps \
4302 psmisc \
4303- python-crypto \
4304- python-dbg \
4305- python-dev \
4306- python-dnspython \
4307- python-gpgme \
4308- python-iso8601 \
4309- python-markdown \
4310- python-pexpect \
4311 python3 \
4312- python3-crypto \
4313 python3-dbg \
4314 python3-dev \
4315 python3-dnspython \
4316diff --git a/bootstrap/generated-dists/debian8/packages.yml b/bootstrap/generated-dists/debian8/packages.yml
4317index a65ca2f..1c9552b 100644
4318--- a/bootstrap/generated-dists/debian8/packages.yml
4319+++ b/bootstrap/generated-dists/debian8/packages.yml
4320@@ -8,6 +8,7 @@ packages:
4321 - binutils
4322 - bison
4323 - build-essential
4324+ - chrpath
4325 - curl
4326 - debhelper
4327 - dnsutils
4328@@ -27,7 +28,6 @@ packages:
4329 - krb5-user
4330 - lcov
4331 - libacl1-dev
4332- - libaio-dev
4333 - libarchive-dev
4334 - libattr1-dev
4335 - libavahi-common-dev
4336@@ -63,23 +63,13 @@ packages:
4337 - make
4338 - mawk
4339 - mingw-w64
4340- - nettle-dev
4341 - patch
4342 - perl
4343 - perl-modules
4344 - pkg-config
4345 - procps
4346 - psmisc
4347- - python-crypto
4348- - python-dbg
4349- - python-dev
4350- - python-dnspython
4351- - python-gpgme
4352- - python-iso8601
4353- - python-markdown
4354- - python-pexpect
4355 - python3
4356- - python3-crypto
4357 - python3-dbg
4358 - python3-dev
4359 - python3-dnspython
4360diff --git a/bootstrap/generated-dists/debian9/bootstrap.sh b/bootstrap/generated-dists/debian9/bootstrap.sh
4361index 4bc4214..f0847eb 100755
4362--- a/bootstrap/generated-dists/debian9/bootstrap.sh
4363+++ b/bootstrap/generated-dists/debian9/bootstrap.sh
4364@@ -19,6 +19,7 @@ apt-get -y install \
4365 binutils \
4366 bison \
4367 build-essential \
4368+ chrpath \
4369 curl \
4370 debhelper \
4371 dnsutils \
4372@@ -38,7 +39,6 @@ apt-get -y install \
4373 krb5-user \
4374 lcov \
4375 libacl1-dev \
4376- libaio-dev \
4377 libarchive-dev \
4378 libattr1-dev \
4379 libavahi-common-dev \
4380@@ -74,23 +74,13 @@ apt-get -y install \
4381 make \
4382 mawk \
4383 mingw-w64 \
4384- nettle-dev \
4385 patch \
4386 perl \
4387 perl-modules \
4388 pkg-config \
4389 procps \
4390 psmisc \
4391- python-crypto \
4392- python-dbg \
4393- python-dev \
4394- python-dnspython \
4395- python-gpg \
4396- python-iso8601 \
4397- python-markdown \
4398- python-pexpect \
4399 python3 \
4400- python3-crypto \
4401 python3-dbg \
4402 python3-dev \
4403 python3-dnspython \
4404diff --git a/bootstrap/generated-dists/debian9/packages.yml b/bootstrap/generated-dists/debian9/packages.yml
4405index 0021d64..a242cd8 100644
4406--- a/bootstrap/generated-dists/debian9/packages.yml
4407+++ b/bootstrap/generated-dists/debian9/packages.yml
4408@@ -8,6 +8,7 @@ packages:
4409 - binutils
4410 - bison
4411 - build-essential
4412+ - chrpath
4413 - curl
4414 - debhelper
4415 - dnsutils
4416@@ -27,7 +28,6 @@ packages:
4417 - krb5-user
4418 - lcov
4419 - libacl1-dev
4420- - libaio-dev
4421 - libarchive-dev
4422 - libattr1-dev
4423 - libavahi-common-dev
4424@@ -63,23 +63,13 @@ packages:
4425 - make
4426 - mawk
4427 - mingw-w64
4428- - nettle-dev
4429 - patch
4430 - perl
4431 - perl-modules
4432 - pkg-config
4433 - procps
4434 - psmisc
4435- - python-crypto
4436- - python-dbg
4437- - python-dev
4438- - python-dnspython
4439- - python-gpg
4440- - python-iso8601
4441- - python-markdown
4442- - python-pexpect
4443 - python3
4444- - python3-crypto
4445 - python3-dbg
4446 - python3-dev
4447 - python3-dnspython
4448diff --git a/bootstrap/generated-dists/fedora29/bootstrap.sh b/bootstrap/generated-dists/fedora29/bootstrap.sh
4449index 048efa5..effe2a9 100755
4450--- a/bootstrap/generated-dists/fedora29/bootstrap.sh
4451+++ b/bootstrap/generated-dists/fedora29/bootstrap.sh
4452@@ -19,6 +19,7 @@ dnf install -y \
4453 bind-utils \
4454 binutils \
4455 bison \
4456+ chrpath \
4457 cups-devel \
4458 curl \
4459 dbus-devel \
4460@@ -45,7 +46,6 @@ dnf install -y \
4461 krb5-server \
4462 lcov \
4463 libacl-devel \
4464- libaio-devel \
4465 libarchive-devel \
4466 libattr-devel \
4467 libblkid-devel \
4468@@ -67,7 +67,6 @@ dnf install -y \
4469 make \
4470 mingw64-gcc \
4471 ncurses-devel \
4472- nettle-devel \
4473 openldap-devel \
4474 pam-devel \
4475 patch \
4476@@ -84,13 +83,7 @@ dnf install -y \
4477 popt-devel \
4478 procps-ng \
4479 psmisc \
4480- python-crypto \
4481- python-devel \
4482- python-dns \
4483- python-markdown \
4484- python2-gpg \
4485 python3 \
4486- python3-crypto \
4487 python3-devel \
4488 python3-dns \
4489 python3-gpg \
4490diff --git a/bootstrap/generated-dists/fedora29/packages.yml b/bootstrap/generated-dists/fedora29/packages.yml
4491index c96df0b..3b767f8 100644
4492--- a/bootstrap/generated-dists/fedora29/packages.yml
4493+++ b/bootstrap/generated-dists/fedora29/packages.yml
4494@@ -8,6 +8,7 @@ packages:
4495 - bind-utils
4496 - binutils
4497 - bison
4498+ - chrpath
4499 - cups-devel
4500 - curl
4501 - dbus-devel
4502@@ -34,7 +35,6 @@ packages:
4503 - krb5-server
4504 - lcov
4505 - libacl-devel
4506- - libaio-devel
4507 - libarchive-devel
4508 - libattr-devel
4509 - libblkid-devel
4510@@ -56,7 +56,6 @@ packages:
4511 - make
4512 - mingw64-gcc
4513 - ncurses-devel
4514- - nettle-devel
4515 - openldap-devel
4516 - pam-devel
4517 - patch
4518@@ -73,13 +72,7 @@ packages:
4519 - popt-devel
4520 - procps-ng
4521 - psmisc
4522- - python-crypto
4523- - python-devel
4524- - python-dns
4525- - python-markdown
4526- - python2-gpg
4527 - python3
4528- - python3-crypto
4529 - python3-devel
4530 - python3-dns
4531 - python3-gpg
4532diff --git a/bootstrap/generated-dists/fedora30/bootstrap.sh b/bootstrap/generated-dists/fedora30/bootstrap.sh
4533index 048efa5..effe2a9 100755
4534--- a/bootstrap/generated-dists/fedora30/bootstrap.sh
4535+++ b/bootstrap/generated-dists/fedora30/bootstrap.sh
4536@@ -19,6 +19,7 @@ dnf install -y \
4537 bind-utils \
4538 binutils \
4539 bison \
4540+ chrpath \
4541 cups-devel \
4542 curl \
4543 dbus-devel \
4544@@ -45,7 +46,6 @@ dnf install -y \
4545 krb5-server \
4546 lcov \
4547 libacl-devel \
4548- libaio-devel \
4549 libarchive-devel \
4550 libattr-devel \
4551 libblkid-devel \
4552@@ -67,7 +67,6 @@ dnf install -y \
4553 make \
4554 mingw64-gcc \
4555 ncurses-devel \
4556- nettle-devel \
4557 openldap-devel \
4558 pam-devel \
4559 patch \
4560@@ -84,13 +83,7 @@ dnf install -y \
4561 popt-devel \
4562 procps-ng \
4563 psmisc \
4564- python-crypto \
4565- python-devel \
4566- python-dns \
4567- python-markdown \
4568- python2-gpg \
4569 python3 \
4570- python3-crypto \
4571 python3-devel \
4572 python3-dns \
4573 python3-gpg \
4574diff --git a/bootstrap/generated-dists/fedora30/packages.yml b/bootstrap/generated-dists/fedora30/packages.yml
4575index c96df0b..3b767f8 100644
4576--- a/bootstrap/generated-dists/fedora30/packages.yml
4577+++ b/bootstrap/generated-dists/fedora30/packages.yml
4578@@ -8,6 +8,7 @@ packages:
4579 - bind-utils
4580 - binutils
4581 - bison
4582+ - chrpath
4583 - cups-devel
4584 - curl
4585 - dbus-devel
4586@@ -34,7 +35,6 @@ packages:
4587 - krb5-server
4588 - lcov
4589 - libacl-devel
4590- - libaio-devel
4591 - libarchive-devel
4592 - libattr-devel
4593 - libblkid-devel
4594@@ -56,7 +56,6 @@ packages:
4595 - make
4596 - mingw64-gcc
4597 - ncurses-devel
4598- - nettle-devel
4599 - openldap-devel
4600 - pam-devel
4601 - patch
4602@@ -73,13 +72,7 @@ packages:
4603 - popt-devel
4604 - procps-ng
4605 - psmisc
4606- - python-crypto
4607- - python-devel
4608- - python-dns
4609- - python-markdown
4610- - python2-gpg
4611 - python3
4612- - python3-crypto
4613 - python3-devel
4614 - python3-dns
4615 - python3-gpg
4616diff --git a/bootstrap/generated-dists/fedora31/Dockerfile b/bootstrap/generated-dists/fedora31/Dockerfile
4617new file mode 100644
4618index 0000000..ff8d0b4
4619--- /dev/null
4620+++ b/bootstrap/generated-dists/fedora31/Dockerfile
4621@@ -0,0 +1,27 @@
4622+#
4623+# This file is generated by 'bootstrap/template.py --render'
4624+# See also bootstrap/config.py
4625+#
4626+
4627+FROM fedora:31
4628+
4629+# pass in with --build-arg while build
4630+ARG SHA1SUM
4631+RUN [ -n $SHA1SUM ] && echo $SHA1SUM > /sha1sum.txt
4632+
4633+ADD *.sh /tmp/
4634+# need root permission, do it before USER samba
4635+RUN /tmp/bootstrap.sh && /tmp/locale.sh
4636+
4637+# if ld.gold exists, force link it to ld
4638+RUN set -x; LD=$(which ld); LD_GOLD=$(which ld.gold); test -x $LD_GOLD && ln -sf $LD_GOLD $LD && test -x $LD && echo "$LD is now $LD_GOLD"
4639+
4640+# make test can not work with root, so we have to create a new user
4641+RUN useradd -m -U -s /bin/bash samba && \
4642+ mkdir -p /etc/sudoers.d && \
4643+ echo "samba ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/samba
4644+
4645+USER samba
4646+WORKDIR /home/samba
4647+# samba tests rely on this
4648+ENV USER=samba LC_ALL=en_US.utf8 LANG=en_US.utf8
4649\ No newline at end of file
4650diff --git a/bootstrap/generated-dists/fedora28/bootstrap.sh b/bootstrap/generated-dists/fedora31/bootstrap.sh
4651similarity index 93%
4652rename from bootstrap/generated-dists/fedora28/bootstrap.sh
4653rename to bootstrap/generated-dists/fedora31/bootstrap.sh
4654index 048efa5..18c5809 100755
4655--- a/bootstrap/generated-dists/fedora28/bootstrap.sh
4656+++ b/bootstrap/generated-dists/fedora31/bootstrap.sh
4657@@ -19,6 +19,7 @@ dnf install -y \
4658 bind-utils \
4659 binutils \
4660 bison \
4661+ chrpath \
4662 cups-devel \
4663 curl \
4664 dbus-devel \
4665@@ -45,7 +46,6 @@ dnf install -y \
4666 krb5-server \
4667 lcov \
4668 libacl-devel \
4669- libaio-devel \
4670 libarchive-devel \
4671 libattr-devel \
4672 libblkid-devel \
4673@@ -55,11 +55,11 @@ dnf install -y \
4674 libicu-devel \
4675 libnsl2-devel \
4676 libpcap-devel \
4677- libsemanage-python \
4678 libtasn1-devel \
4679 libtasn1-tools \
4680 libtirpc-devel \
4681 libunwind-devel \
4682+ liburing-devel \
4683 libuuid-devel \
4684 libxslt \
4685 lmdb \
4686@@ -67,7 +67,6 @@ dnf install -y \
4687 make \
4688 mingw64-gcc \
4689 ncurses-devel \
4690- nettle-devel \
4691 openldap-devel \
4692 pam-devel \
4693 patch \
4694@@ -80,21 +79,16 @@ dnf install -y \
4695 perl-generators \
4696 perl-interpreter \
4697 pkgconfig \
4698- policycoreutils-python \
4699 popt-devel \
4700 procps-ng \
4701 psmisc \
4702- python-crypto \
4703- python-devel \
4704- python-dns \
4705- python-markdown \
4706- python2-gpg \
4707 python3 \
4708- python3-crypto \
4709 python3-devel \
4710 python3-dns \
4711 python3-gpg \
4712+ python3-libsemanage \
4713 python3-markdown \
4714+ python3-policycoreutils \
4715 quota-devel \
4716 readline-devel \
4717 redhat-lsb \
4718diff --git a/bootstrap/generated-dists/fedora31/locale.sh b/bootstrap/generated-dists/fedora31/locale.sh
4719new file mode 100755
4720index 0000000..cc64e18
4721--- /dev/null
4722+++ b/bootstrap/generated-dists/fedora31/locale.sh
4723@@ -0,0 +1,55 @@
4724+#!/bin/bash
4725+
4726+#
4727+# This file is generated by 'bootstrap/template.py --render'
4728+# See also bootstrap/config.py
4729+#
4730+
4731+set -xueo pipefail
4732+
4733+# refer to /usr/share/i18n/locales
4734+INPUTFILE=en_US
4735+# refer to /usr/share/i18n/charmaps
4736+CHARMAP=UTF-8
4737+# locale to generate in /usr/lib/locale
4738+# glibc/localedef will normalize UTF-8 to utf8, follow the naming style
4739+LOCALE=$INPUTFILE.utf8
4740+
4741+# if locale is already correct, exit
4742+( locale | grep LC_ALL | grep -i $LOCALE ) && exit 0
4743+
4744+# if locale not available, generate locale into /usr/lib/locale
4745+if ! ( locale --all-locales | grep -i $LOCALE )
4746+then
4747+ # no-archive means create its own dir
4748+ localedef --inputfile $INPUTFILE --charmap $CHARMAP --no-archive $LOCALE
4749+fi
4750+
4751+# update locale conf and global env file
4752+# set both LC_ALL and LANG for safe
4753+
4754+# update conf for Debian family
4755+FILE=/etc/default/locale
4756+if [ -f $FILE ]
4757+then
4758+ echo LC_ALL="$LOCALE" > $FILE
4759+ echo LANG="$LOCALE" >> $FILE
4760+fi
4761+
4762+# update conf for RedHat family
4763+FILE=/etc/locale.conf
4764+if [ -f $FILE ]
4765+then
4766+ # LC_ALL is not valid in this file, set LANG only
4767+ echo LANG="$LOCALE" > $FILE
4768+fi
4769+
4770+# update global env file
4771+FILE=/etc/environment
4772+if [ -f $FILE ]
4773+then
4774+ # append LC_ALL if not exist
4775+ grep LC_ALL $FILE || echo LC_ALL="$LOCALE" >> $FILE
4776+ # append LANG if not exist
4777+ grep LANG $FILE || echo LANG="$LOCALE" >> $FILE
4778+fi
4779\ No newline at end of file
4780diff --git a/bootstrap/generated-dists/fedora28/packages.yml b/bootstrap/generated-dists/fedora31/packages.yml
4781similarity index 92%
4782rename from bootstrap/generated-dists/fedora28/packages.yml
4783rename to bootstrap/generated-dists/fedora31/packages.yml
4784index c96df0b..3165af8 100644
4785--- a/bootstrap/generated-dists/fedora28/packages.yml
4786+++ b/bootstrap/generated-dists/fedora31/packages.yml
4787@@ -8,6 +8,7 @@ packages:
4788 - bind-utils
4789 - binutils
4790 - bison
4791+ - chrpath
4792 - cups-devel
4793 - curl
4794 - dbus-devel
4795@@ -34,7 +35,6 @@ packages:
4796 - krb5-server
4797 - lcov
4798 - libacl-devel
4799- - libaio-devel
4800 - libarchive-devel
4801 - libattr-devel
4802 - libblkid-devel
4803@@ -44,11 +44,11 @@ packages:
4804 - libicu-devel
4805 - libnsl2-devel
4806 - libpcap-devel
4807- - libsemanage-python
4808 - libtasn1-devel
4809 - libtasn1-tools
4810 - libtirpc-devel
4811 - libunwind-devel
4812+ - liburing-devel
4813 - libuuid-devel
4814 - libxslt
4815 - lmdb
4816@@ -56,7 +56,6 @@ packages:
4817 - make
4818 - mingw64-gcc
4819 - ncurses-devel
4820- - nettle-devel
4821 - openldap-devel
4822 - pam-devel
4823 - patch
4824@@ -69,21 +68,16 @@ packages:
4825 - perl-generators
4826 - perl-interpreter
4827 - pkgconfig
4828- - policycoreutils-python
4829 - popt-devel
4830 - procps-ng
4831 - psmisc
4832- - python-crypto
4833- - python-devel
4834- - python-dns
4835- - python-markdown
4836- - python2-gpg
4837 - python3
4838- - python3-crypto
4839 - python3-devel
4840 - python3-dns
4841 - python3-gpg
4842+ - python3-libsemanage
4843 - python3-markdown
4844+ - python3-policycoreutils
4845 - quota-devel
4846 - readline-devel
4847 - redhat-lsb
4848diff --git a/bootstrap/generated-dists/opensuse150/bootstrap.sh b/bootstrap/generated-dists/opensuse150/bootstrap.sh
4849index 4bf205e..3fbcaac 100755
4850--- a/bootstrap/generated-dists/opensuse150/bootstrap.sh
4851+++ b/bootstrap/generated-dists/opensuse150/bootstrap.sh
4852@@ -19,6 +19,7 @@ zypper --non-interactive install \
4853 bind-utils \
4854 binutils \
4855 bison \
4856+ chrpath \
4857 cups-devel \
4858 curl \
4859 dbus-1-devel \
4860@@ -42,7 +43,6 @@ zypper --non-interactive install \
4861 krb5-server \
4862 lcov \
4863 libacl-devel \
4864- libaio-devel \
4865 libarchive-devel \
4866 libattr-devel \
4867 libblkid-devel \
4868@@ -51,7 +51,6 @@ zypper --non-interactive install \
4869 libcephfs-devel \
4870 libicu-devel \
4871 libjansson-devel \
4872- libnettle-devel \
4873 libnsl-devel \
4874 libpcap-devel \
4875 libtasn1-devel \
4876@@ -78,18 +77,12 @@ zypper --non-interactive install \
4877 popt-devel \
4878 procps \
4879 psmisc \
4880- python-crypto \
4881- python-devel \
4882- python-markdown \
4883- python2-dnspython \
4884- python2-gpg \
4885 python2-semanage \
4886 python3 \
4887 python3-Markdown \
4888 python3-devel \
4889 python3-dnspython \
4890 python3-gpg \
4891- python3-pycrypto \
4892 readline-devel \
4893 rng-tools \
4894 rpcgen \
4895diff --git a/bootstrap/generated-dists/opensuse150/packages.yml b/bootstrap/generated-dists/opensuse150/packages.yml
4896index 8183e89..0eb1924 100644
4897--- a/bootstrap/generated-dists/opensuse150/packages.yml
4898+++ b/bootstrap/generated-dists/opensuse150/packages.yml
4899@@ -7,6 +7,7 @@ packages:
4900 - bind-utils
4901 - binutils
4902 - bison
4903+ - chrpath
4904 - cups-devel
4905 - curl
4906 - dbus-1-devel
4907@@ -30,7 +31,6 @@ packages:
4908 - krb5-server
4909 - lcov
4910 - libacl-devel
4911- - libaio-devel
4912 - libarchive-devel
4913 - libattr-devel
4914 - libblkid-devel
4915@@ -39,7 +39,6 @@ packages:
4916 - libcephfs-devel
4917 - libicu-devel
4918 - libjansson-devel
4919- - libnettle-devel
4920 - libnsl-devel
4921 - libpcap-devel
4922 - libtasn1-devel
4923@@ -66,18 +65,12 @@ packages:
4924 - popt-devel
4925 - procps
4926 - psmisc
4927- - python-crypto
4928- - python-devel
4929- - python-markdown
4930- - python2-dnspython
4931- - python2-gpg
4932 - python2-semanage
4933 - python3
4934 - python3-Markdown
4935 - python3-devel
4936 - python3-dnspython
4937 - python3-gpg
4938- - python3-pycrypto
4939 - readline-devel
4940 - rng-tools
4941 - rpcgen
4942diff --git a/bootstrap/generated-dists/opensuse151/bootstrap.sh b/bootstrap/generated-dists/opensuse151/bootstrap.sh
4943index 4bf205e..3fbcaac 100755
4944--- a/bootstrap/generated-dists/opensuse151/bootstrap.sh
4945+++ b/bootstrap/generated-dists/opensuse151/bootstrap.sh
4946@@ -19,6 +19,7 @@ zypper --non-interactive install \
4947 bind-utils \
4948 binutils \
4949 bison \
4950+ chrpath \
4951 cups-devel \
4952 curl \
4953 dbus-1-devel \
4954@@ -42,7 +43,6 @@ zypper --non-interactive install \
4955 krb5-server \
4956 lcov \
4957 libacl-devel \
4958- libaio-devel \
4959 libarchive-devel \
4960 libattr-devel \
4961 libblkid-devel \
4962@@ -51,7 +51,6 @@ zypper --non-interactive install \
4963 libcephfs-devel \
4964 libicu-devel \
4965 libjansson-devel \
4966- libnettle-devel \
4967 libnsl-devel \
4968 libpcap-devel \
4969 libtasn1-devel \
4970@@ -78,18 +77,12 @@ zypper --non-interactive install \
4971 popt-devel \
4972 procps \
4973 psmisc \
4974- python-crypto \
4975- python-devel \
4976- python-markdown \
4977- python2-dnspython \
4978- python2-gpg \
4979 python2-semanage \
4980 python3 \
4981 python3-Markdown \
4982 python3-devel \
4983 python3-dnspython \
4984 python3-gpg \
4985- python3-pycrypto \
4986 readline-devel \
4987 rng-tools \
4988 rpcgen \
4989diff --git a/bootstrap/generated-dists/opensuse151/packages.yml b/bootstrap/generated-dists/opensuse151/packages.yml
4990index 8183e89..0eb1924 100644
4991--- a/bootstrap/generated-dists/opensuse151/packages.yml
4992+++ b/bootstrap/generated-dists/opensuse151/packages.yml
4993@@ -7,6 +7,7 @@ packages:
4994 - bind-utils
4995 - binutils
4996 - bison
4997+ - chrpath
4998 - cups-devel
4999 - curl
5000 - dbus-1-devel
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches