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 :/

Update scan failed

At least one of the branches involved have failed to scan. You can manually schedule a rescan if required.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 67a86d2..56adf10 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -22,7 +22,7 @@ variables:
22 # Set this to the contents of bootstrap/sha1sum.txt22 # Set this to the contents of bootstrap/sha1sum.txt
23 # which is generated by bootstrap/template.py --render23 # which is generated by bootstrap/template.py --render
24 #24 #
25 SAMBA_CI_CONTAINER_TAG: 970e3a86b8a9dc10a0a3ec716ab355eb9664dc3825 SAMBA_CI_CONTAINER_TAG: 41319f2580c026f66b2750604a0eb15d6b6f7b50
26 #26 #
27 # We use the ubuntu1804 image as default as27 # We use the ubuntu1804 image as default as
28 # it matches what we have on sn-devel-184.28 # it matches what we have on sn-devel-184.
@@ -36,11 +36,14 @@ variables:
36 SAMBA_CI_CONTAINER_IMAGE_ubuntu1804: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-ubuntu1804:${SAMBA_CI_CONTAINER_TAG}36 SAMBA_CI_CONTAINER_IMAGE_ubuntu1804: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-ubuntu1804:${SAMBA_CI_CONTAINER_TAG}
37 SAMBA_CI_CONTAINER_IMAGE_ubuntu1604: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-ubuntu1604:${SAMBA_CI_CONTAINER_TAG}37 SAMBA_CI_CONTAINER_IMAGE_ubuntu1604: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-ubuntu1604:${SAMBA_CI_CONTAINER_TAG}
38 SAMBA_CI_CONTAINER_IMAGE_debian9: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-debian9:${SAMBA_CI_CONTAINER_TAG}38 SAMBA_CI_CONTAINER_IMAGE_debian9: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-debian9:${SAMBA_CI_CONTAINER_TAG}
39 SAMBA_CI_CONTAINER_IMAGE_debian10: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-debian10:${SAMBA_CI_CONTAINER_TAG}
39 SAMBA_CI_CONTAINER_IMAGE_opensuse150: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-opensuse150:${SAMBA_CI_CONTAINER_TAG}40 SAMBA_CI_CONTAINER_IMAGE_opensuse150: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-opensuse150:${SAMBA_CI_CONTAINER_TAG}
40 SAMBA_CI_CONTAINER_IMAGE_opensuse151: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-opensuse151:${SAMBA_CI_CONTAINER_TAG}41 SAMBA_CI_CONTAINER_IMAGE_opensuse151: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-opensuse151:${SAMBA_CI_CONTAINER_TAG}
41 SAMBA_CI_CONTAINER_IMAGE_fedora29: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-fedora29:${SAMBA_CI_CONTAINER_TAG}42 SAMBA_CI_CONTAINER_IMAGE_fedora29: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-fedora29:${SAMBA_CI_CONTAINER_TAG}
42 SAMBA_CI_CONTAINER_IMAGE_fedora30: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-fedora30:${SAMBA_CI_CONTAINER_TAG}43 SAMBA_CI_CONTAINER_IMAGE_fedora30: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-fedora30:${SAMBA_CI_CONTAINER_TAG}
44 SAMBA_CI_CONTAINER_IMAGE_fedora31: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-fedora31:${SAMBA_CI_CONTAINER_TAG}
43 SAMBA_CI_CONTAINER_IMAGE_centos7: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-centos7:${SAMBA_CI_CONTAINER_TAG}45 SAMBA_CI_CONTAINER_IMAGE_centos7: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-centos7:${SAMBA_CI_CONTAINER_TAG}
46 SAMBA_CI_CONTAINER_IMAGE_centos8: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-centos8:${SAMBA_CI_CONTAINER_TAG}
4447
45include:48include:
46 # The image creation details are specified in a separate file49 # The image creation details are specified in a separate file
@@ -96,6 +99,10 @@ include:
96 - echo "Running cmd script/autobuild.py $AUTOBUILD_JOB_NAME $SAMBA_CI_AUTOBUILD_ENABLE_COVERAGE --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase"99 - echo "Running cmd script/autobuild.py $AUTOBUILD_JOB_NAME $SAMBA_CI_AUTOBUILD_ENABLE_COVERAGE --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase"
97 - script/autobuild.py $AUTOBUILD_JOB_NAME $SAMBA_CI_AUTOBUILD_ENABLE_COVERAGE --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase100 - script/autobuild.py $AUTOBUILD_JOB_NAME $SAMBA_CI_AUTOBUILD_ENABLE_COVERAGE --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase
98101
102# Ensure when adding a new job below that you also add it to
103# the dependencies for 'pages' below for the code coverage page
104# generation.
105
99others:106others:
100 extends: .shared_template107 extends: .shared_template
101 script:108 script:
@@ -109,6 +116,9 @@ others:
109samba:116samba:
110 extends: .shared_template117 extends: .shared_template
111118
119samba-mitkrb5:
120 extends: .shared_template
121
112samba-none-env:122samba-none-env:
113 extends: .shared_template123 extends: .shared_template
114124
@@ -118,13 +128,10 @@ samba-nopython:
118samba-nopython-py2:128samba-nopython-py2:
119 extends: .shared_template129 extends: .shared_template
120130
121samba-systemkrb5:
122 extends: .shared_template
123
124samba-xc:131samba-xc:
125 extends: .shared_template132 extends: .shared_template
126133
127samba-ad-member:134samba-admem:
128 extends: .shared_template135 extends: .shared_template
129136
130samba-ad-dc-2:137samba-ad-dc-2:
@@ -148,6 +155,9 @@ samba-libs:
148samba-static:155samba-static:
149 extends: .shared_template156 extends: .shared_template
150157
158samba-fuzz:
159 extends: .shared_template
160
151ctdb:161ctdb:
152 extends: .shared_template162 extends: .shared_template
153163
@@ -157,6 +167,12 @@ samba-ctdb:
157samba-ad-dc-ntvfs:167samba-ad-dc-ntvfs:
158 extends: .shared_template168 extends: .shared_template
159169
170samba-admem-mit:
171 extends: .shared_template
172
173samba-ad-dc-4-mitkrb5:
174 extends: .shared_template
175
160.private_template:176.private_template:
161 extends: .shared_template177 extends: .shared_template
162 tags:178 tags:
@@ -173,6 +189,9 @@ samba-ad-dc-ntvfs:
173samba-ad-dc-backup:189samba-ad-dc-backup:
174 extends: .private_template190 extends: .private_template
175191
192samba-simpleserver:
193 extends: .private_template
194
176samba-fileserver:195samba-fileserver:
177 extends: .private_template196 extends: .private_template
178197
@@ -188,6 +207,9 @@ samba-nt4:
188samba-schemaupgrade:207samba-schemaupgrade:
189 extends: .private_template208 extends: .private_template
190209
210samba-ad-dc-1-mitkrb5:
211 extends: .private_template
212
191# 'pages' is a special job which can publish artifacts in `public` dir to gitlab pages213# 'pages' is a special job which can publish artifacts in `public` dir to gitlab pages
192pages:214pages:
193 image: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-${SAMBA_CI_CONTAINER_IMAGE}:${SAMBA_CI_CONTAINER_TAG}215 image: ${SAMBA_CI_CONTAINER_REGISTRY}/samba-ci-${SAMBA_CI_CONTAINER_IMAGE}:${SAMBA_CI_CONTAINER_TAG}
@@ -196,29 +218,35 @@ pages:
196 - docker218 - docker
197 - shared219 - shared
198 dependencies: # tell gitlab to download artifacts for these jobs220 dependencies: # tell gitlab to download artifacts for these jobs
221 - others
199 - samba222 - samba
200 - samba-ad-dc-1223 - samba-mitkrb5
224 - samba-none-env
225 - samba-nopython
226 - samba-nopython-py2
227 - samba-xc
228 - samba-admem
201 - samba-ad-dc-2229 - samba-ad-dc-2
202 - samba-ad-dc-3230 - samba-ad-dc-3
203 - samba-ad-dc-4231 - samba-ad-dc-4
204 - samba-ad-dc-5232 - samba-ad-dc-5
205 - samba-ad-dc-6233 - samba-ad-dc-6
206 - samba-ad-dc-backup234 - samba-libs
207 - samba-ad-dc-ntvfs235 - samba-static
208 - samba-ad-member236 - samba-fuzz
237 # - ctdb # TODO
209 - samba-ctdb238 - samba-ctdb
239 - samba-ad-dc-ntvfs
240 - samba-admem-mit
241 - samba-ad-dc-4-mitkrb5
242 - samba-ad-dc-backup
243 - samba-simpleserver
210 - samba-fileserver244 - samba-fileserver
211 - samba-libs245 - samba-ktest-heimdal
212 - samba-none-env246 - samba-ad-dc-1
213 - samba-nopython
214 - samba-nopython-py2
215 - samba-nt4247 - samba-nt4
216 - samba-schemaupgrade248 - samba-schemaupgrade
217 - samba-static249 - samba-ad-dc-1-mitkrb5
218 - samba-systemkrb5
219 - samba-xc
220 # - ctdb # TODO
221 - others
222 script:250 script:
223 - ./configure.developer251 - ./configure.developer
224 - make -j252 - make -j
@@ -257,6 +285,10 @@ debian9-samba-o3:
257 extends: .samba-o3-template285 extends: .samba-o3-template
258 image: $SAMBA_CI_CONTAINER_IMAGE_debian9286 image: $SAMBA_CI_CONTAINER_IMAGE_debian9
259287
288debian10-samba-o3:
289 extends: .samba-o3-template
290 image: $SAMBA_CI_CONTAINER_IMAGE_debian10
291
260opensuse150-samba-o3:292opensuse150-samba-o3:
261 extends: .samba-o3-template293 extends: .samba-o3-template
262 image: $SAMBA_CI_CONTAINER_IMAGE_opensuse150294 image: $SAMBA_CI_CONTAINER_IMAGE_opensuse150
@@ -271,6 +303,12 @@ centos7-samba-o3:
271 variables:303 variables:
272 # Git on CentOS doesn't support shallow git cloning304 # Git on CentOS doesn't support shallow git cloning
273 GIT_DEPTH: ""305 GIT_DEPTH: ""
306 # We need a newer GnuTLS version on CentOS7
307 PKG_CONFIG_PATH: "/usr/lib64/compat-gnutls34/pkgconfig:/usr/lib64/compat-nettle32/pkgconfig"
308
309centos8-samba-o3:
310 extends: .samba-o3-template
311 image: $SAMBA_CI_CONTAINER_IMAGE_centos8
274312
275fedora29-samba-o3:313fedora29-samba-o3:
276 extends: .samba-o3-template314 extends: .samba-o3-template
@@ -280,6 +318,10 @@ fedora30-samba-o3:
280 extends: .samba-o3-template318 extends: .samba-o3-template
281 image: $SAMBA_CI_CONTAINER_IMAGE_fedora30319 image: $SAMBA_CI_CONTAINER_IMAGE_fedora30
282320
321fedora31-samba-o3:
322 extends: .samba-o3-template
323 image: $SAMBA_CI_CONTAINER_IMAGE_fedora31
324
283#325#
284# Keep the samba-o3 sections at the end ...326# Keep the samba-o3 sections at the end ...
285#327#
diff --git a/Makefile b/Makefile
index 07b928e..0b7b0ae 100644
--- a/Makefile
+++ b/Makefile
@@ -100,7 +100,7 @@ pydoctor:
100pep8:100pep8:
101 $(WAF) pep8101 $(WAF) pep8
102102
103# Adding force on the depencies will force the target to be always rebuild form the Make103# Adding force on the dependencies will force the target to be always rebuild form the Make
104# point of view forcing make to invoke waf104# point of view forcing make to invoke waf
105105
106bin/smbd: FORCE106bin/smbd: FORCE
diff --git a/SECURITY.md b/SECURITY.md
107new file mode 100644107new file mode 100644
index 0000000..5d3c88c
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,15 @@
1# Security Policy
2
3## Supported Versions
4
5See https://wiki.samba.org/index.php/Samba_Release_Planning for a
6matrix showing the currently supported versions of Samba.
7
8## Reporting a Vulnerability
9
10Please report all security issues or defects to security@samba.org and **never** on IRC, public mailing lists or in Bugzilla!
11
12Once reported and if warrented by the specific issue, the Samba Team
13will follow the process outlined in
14https://wiki.samba.org/index.php/Samba_Security_Process to produce a
15security release.
diff --git a/VERSION b/VERSION
index c07b1d1..a8cdfb7 100644
--- a/VERSION
+++ b/VERSION
@@ -24,8 +24,8 @@
24# -> "3.0.0" #24# -> "3.0.0" #
25########################################################25########################################################
26SAMBA_VERSION_MAJOR=426SAMBA_VERSION_MAJOR=4
27SAMBA_VERSION_MINOR=1127SAMBA_VERSION_MINOR=12
28SAMBA_VERSION_RELEASE=628SAMBA_VERSION_RELEASE=2
2929
30########################################################30########################################################
31# If a official release has a serious bug #31# If a official release has a serious bug #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 6f63561..57498cd 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,265 +1,39 @@
1 ==============================1 ==============================
2 Release Notes for Samba 4.11.62 Release Notes for Samba 4.12.2
3 January 28, 20203 April 28, 2020
4 ==============================
5
6
7This is the latest stable release of the Samba 4.11 release series.
8
9
10Changes since 4.11.5:
11---------------------
12
13o Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
14 * BUG 14209: pygpo: Use correct method flags.
15
16o David Disseldorp <ddiss@samba.org>
17 * BUG 14216: vfs_ceph_snapshots: Fix root relative path handling.
18
19o Torsten Fohrer <torsten.fohrer@sbe.de>
20 * BUG 14209: Avoiding bad call flags with python 3.8, using METH_NOARGS
21 instead of zero.
22
23o Fabrice Fontaine <fontaine.fabrice@gmail.com>
24 * BUG 14218: source4/utils/oLschema2ldif: Include stdint.h before cmocka.h.
25
26o Björn Jacke <bjacke@samba.org>
27 * BUG 14122: docs-xml/winbindnssinfo: Clarify interaction with idmap_ad etc.
28
29o Volker Lendecke <vl@samba.org>
30 * BUG 14251: smbd: Fix the build with clang.
31
32o Gary Lockyer <gary@catalyst.net.nz>
33 * BUG 14199: upgradedns: Ensure lmdb lock files linked.
34
35o Anoop C S <anoopcs@redhat.com>
36 * BUG 14182: s3: VFS: glusterfs: Reset nlinks for symlink entries during
37 readdir.
38
39o Andreas Schneider <asn@samba.org>
40 * BUG 14101: smbc_stat() doesn't return the correct st_mode and also the
41 uid/gid is not filled (SMBv1) file.
42 * BUG 14219: librpc: Fix string length checking in
43 ndr_pull_charset_to_null().
44
45o Martin Schwenke <martin@meltin.net>
46 * BUG 14227: ctdb-scripts: Strip square brackets when gathering connection
47 info.
48
49
50#######################################
51Reporting bugs & Development Discussion
52#######################################
53
54Please discuss this release on the samba-technical mailing list or by
55joining the #samba-technical IRC channel on irc.freenode.net.
56
57If you do report problems then please try to send high quality
58feedback. If you don't provide vital information to help us track down
59the problem then you will probably be ignored. All bug reports should
60be filed under the "Samba 4.1 and newer" product in the project's Bugzilla
61database (https://bugzilla.samba.org/).
62
63
64======================================================================
65== Our Code, Our Bugs, Our Responsibility.
66== The Samba Team
67======================================================================
68
69
70Release notes for older releases follow:
71----------------------------------------
72
73 ==============================
74 Release Notes for Samba 4.11.5
75 January 21, 2020
76 ==============================
77
78
79This is a security release in order to address the following defects:
80
81o CVE-2019-14902: Replication of ACLs set to inherit down a subtree on AD
82 Directory not automatic.
83o CVE-2019-14907: Crash after failed character conversion at log level 3 or
84 above.
85o CVE-2019-19344: Use after free during DNS zone scavenging in Samba AD DC.
86
87
88=======
89Details
90=======
91
92o CVE-2019-14902:
93 The implementation of ACL inheritance in the Samba AD DC was not complete,
94 and so absent a 'full-sync' replication, ACLs could get out of sync between
95 domain controllers.
96
97o CVE-2019-14907:
98 When processing untrusted string input Samba can read past the end of the
99 allocated buffer when printing a "Conversion error" message to the logs.
100
101o CVE-2019-19344:
102 During DNS zone scavenging (of expired dynamic entries) there is a read of
103 memory after it has been freed.
104
105For more details and workarounds, please refer to the security advisories.
106
107
108Changes since 4.11.4:
109---------------------
110
111o Andrew Bartlett <abartlet@samba.org>
112 * BUG 12497: CVE-2019-14902: Replication of ACLs down subtree on AD Directory
113 not automatic.
114 * BUG 14208: CVE-2019-14907: lib/util: Do not print the failed to convert
115 string into the logs.
116
117o Gary Lockyer <gary@catalyst.net.nz>
118 * BUG 14050: CVE-2019-19344: kcc dns scavenging: Fix use after free in
119 dns_tombstone_records_zone.
120
121
122#######################################
123Reporting bugs & Development Discussion
124#######################################
125
126Please discuss this release on the samba-technical mailing list or by
127joining the #samba-technical IRC channel on irc.freenode.net.
128
129If you do report problems then please try to send high quality
130feedback. If you don't provide vital information to help us track down
131the problem then you will probably be ignored. All bug reports should
132be filed under the "Samba 4.1 and newer" product in the project's Bugzilla
133database (https://bugzilla.samba.org/).
134
135
136======================================================================
137== Our Code, Our Bugs, Our Responsibility.
138== The Samba Team
139======================================================================
140
141
142----------------------------------------------------------------------
143
144
145 ==============================
146 Release Notes for Samba 4.11.4
147 December 16, 2019
148 ==============================
149
150
151This is the latest stable release of the Samba 4.11 release series.
152
153
154Changes since 4.11.3:
155---------------------
156
157o Jeremy Allison <jra@samba.org>
158 * BUG 14161: s3: libsmb: Ensure SMB1 cli_qpathinfo2() doesn't return an inode
159 number.
160 * BUG 14174: s3: utils: smbtree. Ensure we don't call cli_RNetShareEnum()
161 on an SMB1 connection.
162 * BUG 14176: NT_STATUS_ACCESS_DENIED becomes EINVAL when using SMB2 in
163 SMBC_opendir_ctx.
164 * BUG 14189: s3: smbd: SMB2 - Ensure we use the correct session_id if
165 encrypting an interim response.
166 * BUG 14205: Prevent smbd crash after invalid SMB1 negprot.
167
168o Ralph Boehme <slow@samba.org>
169 * BUG 13745: s3:printing: Fix %J substition.
170 * BUG 13925: s3: Remove now unneeded call to cmdline_messaging_context().
171 * BUG 14069: Incomplete conversion of former parametric options.
172 * BUG 14070: Fix sync dosmode fallback in async dosmode codepath.
173 * BUG 14171: vfs_fruit returns capped resource fork length.
174
175o Isaac Boukris <iboukris@gmail.com>
176 * BUG 14116: libnet_join: Add SPNs for additional-dns-hostnames entries.
177
178o Volker Lendecke <vl@samba.org>
179 * BUG 14211: smbd: Increase a debug level.
180
181o Stefan Metzmacher <metze@samba.org>
182 * BUG 14153: Prevent azure ad connect from reporting discovery errors:
183 reference-value-not-ldap-conformant.
184
185o Christof Schmitt <cs@samba.org>
186 * BUG 14179: krb5_plugin: Fix developer build with newer heimdal system
187 library.
188
189o Andreas Schneider <asn@samba.org>
190 * BUG 14168: replace: Only link libnsl and libsocket if requrired.
191
192o Martin Schwenke <martin@meltin.net>
193 * BUG 14175: ctdb: Incoming queue can be orphaned causing communication
194 breakdown.
195
196o Uri Simchoni <uri@samba.org>
197 * BUG 13846: ldb: Release ldb 2.0.8. Cross-compile will not take
198 cross-answers or cross-execute.
199 * BUG 13856: heimdal-build: Avoid hard-coded /usr/include/heimdal in
200 asn1_compile-generated code.
201
202
203#######################################
204Reporting bugs & Development Discussion
205#######################################
206
207Please discuss this release on the samba-technical mailing list or by
208joining the #samba-technical IRC channel on irc.freenode.net.
209
210If you do report problems then please try to send high quality
211feedback. If you don't provide vital information to help us track down
212the problem then you will probably be ignored. All bug reports should
213be filed under the "Samba 4.1 and newer" product in the project's Bugzilla
214database (https://bugzilla.samba.org/).
215
216
217======================================================================
218== Our Code, Our Bugs, Our Responsibility.
219== The Samba Team
220======================================================================
221
222
223----------------------------------------------------------------------
224
225
226 ==============================
227 Release Notes for Samba 4.11.3
228 December 10, 2019
229 ==============================4 ==============================
2305
2316
232This is a security release in order to address the following defects:7This is a security release in order to address the following defects:
2338
234o CVE-2019-14861: Samba AD DC zone-named record Denial of Service in DNS9o CVE-2020-10700: Use-after-free in Samba AD DC LDAP Server with ASQ
235 management server (dnsserver).10o CVE-2020-10704: LDAP Denial of Service (stack overflow) in Samba AD DC
236o CVE-2019-14870: DelegationNotAllowed not being enforced in protocol transition
237 on Samba AD DC.
23811
23912
240=======13=======
241Details14Details
242=======15=======
24316
244o CVE-2019-14861:17o CVE-2020-10700:
245 An authenticated user can crash the DCE/RPC DNS management server by creating18 A client combining the 'ASQ' and 'Paged Results' LDAP controls can cause a
246 records with matching the zone name.19 use-after-free in Samba's AD DC LDAP server.
20o CVE-2020-10704:
21 A deeply nested filter in an un-authenticated LDAP search can exhaust the
22 LDAP server's stack memory causing a SIGSEGV.
24723
248o CVE-2019-14870:24For more details, please refer to the security advisories.
249 The DelegationNotAllowed Kerberos feature restriction was not being applied
250 when processing protocol transition requests (S4U2Self), in the AD DC KDC.
25125
252For more details and workarounds, please refer to the security advisories.
25326
25427Changes since 4.12.1
255Changes since 4.11.2:28--------------------
256---------------------
25729
258o Andrew Bartlett <abartlet@samba.org>30o Andrew Bartlett <abartlet@samba.org>
259 * BUG 14138: CVE-2019-14861: Fix DNSServer RPC server crash.31 * BUG 14331: CVE-2020-10700: Fix use-after-free in AD DC LDAP server when
32 ASQ and paged_results combined.
26033
261o Isaac Boukris <iboukris@gmail.com>34o Gary Lockyer <gary@catalyst.net.nz>
262 * BUG 14187: CVE-2019-14870: DelegationNotAllowed not being enforced.35 * BUG 20454: CVE-2020-10704: Fix LDAP Denial of Service (stack overflow) in
36 Samba AD DC.
26337
26438
265#######################################39#######################################
@@ -272,7 +46,7 @@ joining the #samba-technical IRC channel on irc.freenode.net.
272If you do report problems then please try to send high quality46If you do report problems then please try to send high quality
273feedback. If you don't provide vital information to help us track down47feedback. If you don't provide vital information to help us track down
274the problem then you will probably be ignored. All bug reports should48the problem then you will probably be ignored. All bug reports should
275be filed under the "Samba 4.1 and newer" product in the project's Bugzilla49be filed under the Samba 4.1 and newer product in the project's Bugzilla
276database (https://bugzilla.samba.org/).50database (https://bugzilla.samba.org/).
27751
27852
@@ -282,144 +56,59 @@ database (https://bugzilla.samba.org/).
282======================================================================56======================================================================
28357
28458
285----------------------------------------------------------------------59Release notes for older releases follow:
28660----------------------------------------
28761
288 ==============================62 ==============================
289 Release Notes for Samba 4.11.263 Release Notes for Samba 4.12.1
290 October 29, 201964 April 07, 2020
291 ==============================65 ==============================
29266
29367
294This is a security release in order to address the following defects:68This is the latest stable release of the Samba 4.12 release series.
295
296o CVE-2019-10218: Client code can return filenames containing path separators.
297o CVE-2019-14833: Samba AD DC check password script does not receive the full
298 password.
299o CVE-2019-14847: User with "get changes" permission can crash AD DC LDAP server
300 via dirsync.
301
302=======
303Details
304=======
305
306o CVE-2019-10218:
307 Malicious servers can cause Samba client code to return filenames containing
308 path separators to calling code.
309
310o CVE-2019-14833:
311 When the password contains multi-byte (non-ASCII) characters, the check
312 password script does not receive the full password string.
31369
314o CVE-2019-14847:
315 Users with the "get changes" extended access right can crash the AD DC LDAP
316 server by requesting an attribute using the range= syntax.
31770
318For more details and workarounds, please refer to the security advisories.71Changes since 4.12.0
72--------------------
31973
32074o Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
321Changes since 4.11.1:75 * BUG 14295: nmblib: Avoid undefined behaviour in handle_name_ptrs().
322---------------------
323
324o Jeremy Allison <jra@samba.org>
325 * BUG 14071: CVE-2019-10218 - s3: libsmb: Protect SMB1 and SMB2 client code
326 from evil server returned names.
327
328o Andrew Bartlett <abartlet@samba.org>
329 * BUG 12438: CVE-2019-14833: Use utf8 characters in the unacceptable
330 password.
331 * BUG 14040: CVE-2019-14847 dsdb: Correct behaviour of ranged_results when
332 combined with dirsync.
33376
334o Björn Baumbach <bb@sernet.de>77o Björn Baumbach <bb@sernet.de>
335 * BUG 12438: CVE-2019-14833 dsdb: Send full password to check password78 * BUG 14296: samba-tool group: Handle group names with special chars
336 script.79 correctly.
337
338
339#######################################
340Reporting bugs & Development Discussion
341#######################################
342
343Please discuss this release on the samba-technical mailing list or by
344joining the #samba-technical IRC channel on irc.freenode.net.
345
346If you do report problems then please try to send high quality
347feedback. If you don't provide vital information to help us track down
348the problem then you will probably be ignored. All bug reports should
349be filed under the "Samba 4.1 and newer" product in the project's Bugzilla
350database (https://bugzilla.samba.org/).
351
352
353======================================================================
354== Our Code, Our Bugs, Our Responsibility.
355== The Samba Team
356======================================================================
357
358
359----------------------------------------------------------------------
360
361
362 ==============================
363 Release Notes for Samba 4.11.1
364 October 18, 2019
365 ==============================
366
367
368This is the latest stable release of the Samba 4.11 release series.
369
370
371Changes since 4.11.0:
372---------------------
373
374o Michael Adam <obnox@samba.org>
375 * BUG 14141: getpwnam and getpwuid need to return data for ID_TYPE_BOTH
376 group.
377
378o Jeremy Allison <jra@samba.org>
379 * BUG 14094: smbc_readdirplus() is incompatible with smbc_telldir() and
380 smbc_lseekdir().
381 * BUG 14152: s3: smbclient: Stop an SMB2-connection from blundering into
382 SMB1-specific calls.
38380
384o Ralph Boehme <slow@samba.org>81o Ralph Boehme <slow@samba.org>
385 * BUG 14137: Fix stale file handle error when using mkstemp on a share.82 * BUG 14293: Add missing check for DMAPI offline status in async DOS
38683 attributes.
387o Isaac Boukris <iboukris@gmail.com>84 * BUG 14295: Starting ctdb node that was powered off hard before results in
388 * BUG 14106: Fix spnego fallback from kerberos to ntlmssp in smbd server.85 recovery loop.
389 * BUG 14140: Overlinking libreplace against librt and pthread against every86 * BUG 14307: smbd: Ignore set NTACL requests which contain S-1-5-88 NFS ACEs.
390 binary or library causes issues.87 * BUG 14316: vfs_recycle: Prevent flooding the log if we're called on
88 non-existant paths.
39189
392o Günther Deschner <gd@samba.org>90o Günther Deschner <gd@samba.org>
393 * BUG 14130: s3-winbindd: Fix forest trusts with additional trust attributes.91 * BUG 14313: librpc: Fix IDL for svcctl_ChangeServiceConfigW.
394 * BUG 14134: auth/gensec: Fix non-AES schannel seal.92 * BUG 14327: nsswitch: Fix use-after-free causing segfault in
39593 _pam_delete_cred.
396o Amitay Isaacs <amitay@gmail.com>
397 * BUG 14147: Deleted records can be resurrected during recovery.
39894
399o Björn Jacke <bj@sernet.de>95o Art M. Gallagher <repos@artmg.net>
400 * BUG 14136: Fix uncaught exception in classicupgrade.96 * BUG 13622: fruit:time machine max size is broken on arm.
401 * BUG 14139: fault.c: Improve fault_report message text pointing to our wiki.
40297
403o Bryan Mason <bmason@redhat.com>98o Amitay Isaacs <amitay@gmail.com>
404 * BUG 14128: s3:client: Use DEVICE_URI, instead of argv[0], for Device URI.99 * BUG 14294: CTDB recovery corner cases can cause record resurrection and
405100 node banning.
406o Stefan Metzmacher <metze@samba.org>
407 * BUG 14124: pam_winbind with krb5_auth or wbinfo -K doesn't work for users
408 of trusted domains/forests.
409
410o Mathieu Parent <math.parent@gmail.com>
411 * BUG 14131: Remove 'pod2man' as it is no longer needed.
412101
413o Andreas Schneider <asn@samba.org>102o Noel Power <noel.power@suse.com>
414 * BUG 13884: Joining Active Directory should not use SAMR to set the103 * BUG 14332: s3/utils: Fix double free error with smbtree.
415 password.
416 * BUG 14140: Overlinking libreplace against librt and pthread against every
417 binary or library causes issues.
418 * BUG 14155: 'kpasswd' fails when built with MIT Kerberos.
419104
420o Martin Schwenke <martin@meltin.net>105o Martin Schwenke <martin@meltin.net>
421 * BUG 14129: Exit code of ctdb nodestatus should not be influenced by deleted106 * BUG 14294: CTDB recovery corner cases can cause record resurrection and
422 nodes.107 node banning.
108 * BUG 14295: Starting ctdb node that was powered off hard before results in
109 recovery loop.
110 * BUG 14324: CTDB recovery daemon can crash due to dereference of NULL
111 pointer.
423112
424113
425#######################################114#######################################
@@ -432,7 +121,7 @@ joining the #samba-technical IRC channel on irc.freenode.net.
432If you do report problems then please try to send high quality121If you do report problems then please try to send high quality
433feedback. If you don't provide vital information to help us track down122feedback. If you don't provide vital information to help us track down
434the problem then you will probably be ignored. All bug reports should123the problem then you will probably be ignored. All bug reports should
435be filed under the "Samba 4.1 and newer" product in the project's Bugzilla124be filed under the Samba 4.1 and newer product in the project's Bugzilla
436database (https://bugzilla.samba.org/).125database (https://bugzilla.samba.org/).
437126
438127
@@ -446,185 +135,49 @@ database (https://bugzilla.samba.org/).
446135
447136
448 ==============================137 ==============================
449 Release Notes for Samba 4.11.0138 Release Notes for Samba 4.12.0
450 September 17, 2019139 March 03, 2020
451 ==============================140 ==============================
452141
453142
454This is the first stable release of the Samba 4.11 release series.143This is the first stable release of the Samba 4.12 release series.
455Please read the release notes carefully before upgrading.144Please read the release notes carefully before upgrading.
456145
457146
458UPGRADING
459=========
460
461AD Database compatibility
462-------------------------
463
464Samba 4.11 has changed how the AD database is stored on disk. AD users should
465not really be affected by this change when upgrading to 4.11. However, AD
466users should be extremely careful if they need to downgrade from Samba 4.11 to
467an older release.
468
469Samba 4.11 maintains database compatibility with older Samba releases. The
470database will automatically get rewritten in the new 4.11 format when you
471first start the upgraded samba executable.
472
473However, when downgrading from 4.11 you will need to manually downgrade the AD
474database yourself. Note that you will need to do this step before you install
475the downgraded Samba packages. For more details, see:
476https://wiki.samba.org/index.php/Downgrading_an_Active_Directory_DC
477
478When either upgrading or downgrading, users should also avoid making any
479database modifications between installing the new Samba packages and starting
480the samba executable.
481
482SMB1 is disabled by default
483---------------------------
484
485The defaults of 'client min protocol' and 'server min protocol'
486have been changed to SMB2_02.
487
488This means clients without support for SMB2 or SMB3 are no longer
489able to connect to smbd (by default).
490
491It also means client tools like smbclient and other,
492as well as applications making use of libsmbclient are no longer
493able to connect to servers without SMB2 or SMB3 support (by default).
494
495It's still possible to allow SMB1 dialects, e.g. NT1, LANMAN2
496and LANMAN1 for client and server, as well as CORE and COREPLUS on
497the client.
498
499Note that most commandline tools e.g. smbclient, smbcacls and others
500also support the '--option' argument to overwrite smb.conf options,
501e.g. --option='client min protocol=NT1' might be useful.
502
503As Microsoft no longer installs SMB1 support in recent releases
504or uninstalls it after 30 days without usage, the Samba Team
505tries to get remove the SMB1 usage as much as possible.
506
507SMB1 is officially deprecated and might be removed step by step
508in the following years. If you have a strong requirement for SMB1
509(except for supporting old Linux Kernels), please file a bug
510at https://bugzilla.samba.org and let us know about the details.
511
512LanMan and plaintext authentication deprecated
513----------------------------------------------
514
515The "lanman auth" and "encrypt passwords" parameters are deprecated
516with this release as both are only applicable to SMB1 and are quite
517insecure. NTLM, NTLMv2 and Kerberos authentication are unaffected, as
518"encrypt passwords = yes" has been the default since Samba 3.0.0.
519
520If you have a strong requirement for these authentication protocols,
521please file a bug at https://bugzilla.samba.org and let us know about
522the details.
523
524BIND9_FLATFILE deprecated
525-------------------------
526
527The BIND9_FLATFILE DNS backend is deprecated in this release and will
528be removed in the future. This was only practically useful on a single
529domain controller or under expert care and supervision.
530
531This release therefore deprecates the "rndc command" smb.conf
532parameter, which is used to support this configuration. After writing
533out a list of DCs permitted to make changes to the DNS Zone "rndc
534command" is called with reload to tell the 'named' server if a DC was
535added/removed to to the domain.
536
537
538NEW FEATURES/CHANGES147NEW FEATURES/CHANGES
539====================148====================
540149
541Default samba process model150Python 3.5 Required
542---------------------------151-------------------
543
544The default for the '--model' argument passed to the samba executable has changed
545from 'standard' to 'prefork'. This means a difference in the number of samba
546child processes that are created to handle client connections. The previous
547default would create a separate process for every LDAP or NETLOGON client
548connection. For a network with a lot of persistent client connections, this
549could result in significant memory overhead. Now, with the new default of
550'prefork', the LDAP, NETLOGON, and KDC services will create a fixed number of
551worker processes at startup and share the client connections amongst these
552workers. The number of worker processes can be configured by the 'prefork
553children' setting in the smb.conf (the default is 4).
554
555Authentication Logging
556----------------------
557
558Winbind now logs PAM_AUTH and NTLM_AUTH events, a new attribute "logonId" has
559been added to the Authentication JSON log messages. This contains a random
560logon id that is generated for each PAM_AUTH and NTLM_AUTH request and is passed
561to SamLogon, linking the windbind and SamLogon requests.
562
563The serviceDescription of the messages is set to "winbind", the authDescription
564is set to one of:
565 "PASSDB, <command>, <pid>"
566 "PAM_AUTH, <command>, <pid>"
567 "NTLM_AUTH, <command>, <pid>"
568where:
569 <command> is the name of the command makinmg the winbind request i.e. wbinfo
570 <pid> is the process id of the requesting process.
571
572The version of the JSON Authentication messages has been changed from 1.1 to
5731.2.
574
575LDAP referrals
576--------------
577
578The scheme of returned LDAP referrals now reflects the scheme of the original
579request, i.e. referrals received via ldap are prefixed with "ldap://"
580and those over ldaps are prefixed with "ldaps://".
581
582Previously all referrals were prefixed with "ldap://".
583
584Bind9 logging
585-------------
586
587It is now possible to log the duration of DNS operations performed by Bind9.
588This should aid future diagnosis of performance issues and could be used to
589monitor DNS performance. The logging is enabled by setting log level to
590"dns:10" in smb.conf.
591
592The logs are currently human readable text only, i.e. no JSON formatted output.
593
594Log lines are of the form:
595
596 <function>: DNS timing: result: [<result>] duration: (<duration>)
597 zone: [<zone>] name: [<name>] data: [<data>]
598
599 durations are in microseconds.
600
601Default schema updated to 2012_R2
602---------------------------------
603152
604Default AD schema changed from 2008_R2 to 2012_R2. 2012_R2 functional level153Samba's minimum runtime requirement for python was raised to Python
605is not yet available. Older schemas can be used by provisioning with the1543.4 with samba 4.11. Samba 4.12 raises this minimum version to Python
606'--base-schema' argument. Existing installations can be updated with the1553.5 both to access new features and because this is the oldest version
607samba-tool command "domain schemaupgrade".156we test with in our CI infrastructure.
608157
609Samba's replication code has also been improved to handle replication158(Build time support for the file server with Python 2.6 has not
610with the 2012 schema (the core of this replication fix has also been159changed)
611backported to 4.9.11 and will be in a 4.10.x release).
612160
613For more about how the AD schema relates to overall Windows compatibility,161Removing in-tree cryptography: GnuTLS 3.4.7 required
614please read:162----------------------------------------------------
615https://wiki.samba.org/index.php/Windows_2012_Server_compatibility
616
617GnuTLS 3.2 required
618-------------------
619163
620Samba is making efforts to remove in-tree cryptographic functionality,164Samba is making efforts to remove in-tree cryptographic functionality,
621and to instead rely on externally maintained libraries. To this end,165and to instead rely on externally maintained libraries. To this end,
622Samba has chosen GnuTLS as our standard cryptographic provider.166Samba has chosen GnuTLS as our standard cryptographic provider.
623167
624Samba now requires GnuTLS 3.2 to be installed (including development168Samba now requires GnuTLS 3.4.7 to be installed (including development
625headers at build time) for all configurations, not just the Samba AD169headers at build time) for all configurations, not just the Samba AD
626DC.170DC.
627171
172Thanks to this work Samba no longer ships an in-tree DES
173implementation and on GnuTLS 3.6.5 or later Samba will include no
174in-tree cryptography other than the MD4 hash and that
175implemented in our copy of Heimdal.
176
177Using GnuTLS for SMB3 encryption you will notice huge performance and copy
178speed improvements. Tests with the CIFS Kernel client from Linux Kernel 5.3
179show a 3x speed improvement for writing and a 2.5x speed improvement for reads!
180
628NOTE WELL: The use of GnuTLS means that Samba will honour the181NOTE WELL: The use of GnuTLS means that Samba will honour the
629system-wide 'FIPS mode' (a reference to the US FIPS-140 cryptographic182system-wide 'FIPS mode' (a reference to the US FIPS-140 cryptographic
630standard) and so will not operate in many still common situations if183standard) and so will not operate in many still common situations if
@@ -635,165 +188,200 @@ A future Samba version will mitigate this to some extent where good
635cryptography effectively wraps bad cryptography, but for now that above188cryptography effectively wraps bad cryptography, but for now that above
636applies.189applies.
637190
638samba-tool improvements191zlib library is now required to build Samba
639-----------------------192-------------------------------------------
640193
641A new "samba-tool contact" command has been added to allow the194Samba no longer includes a local copy of zlib in our source tarball.
642command-line manipulation of contacts, as used for address book195By removing this we do not need to ship (even where we did not
643lookups in LDAP.196build) the old, broken zip encryption code found there.
644197
645The "samba-tool [user|group|computer|group|contact] edit" command has been198New Spotlight backend for Elasticsearch
646improved to operate more pleasantly on international character sets.199---------------------------------------
647200
648100,000 USER and LARGER Samba AD DOMAINS201Support for the macOS specific Spotlight search protocol has been enhanced
649========================================202significantly. Starting with 4.12 Samba supports using Elasticsearch as search
203backend. Various new parameters have been added to configure this:
650204
651Extensive efforts have been made to optimise Samba for use in205 spotlight backend = noindex | elasticsearch | tracker
652organisations (for example) targeting 100,000 users, plus 120,000206 elasticsearch:address = ADDRESS
653computer objects, as well as large number of group memberships.207 elasticsearch:port = PORT
208 elasticsearch:use tls = BOOLEAN
209 elasticsearch:index = INDEXNAME
210 elasticsearch:mappings = PATH
211 elasticsearch:max results = NUMBER
654212
655Many of the specific efforts are detailed below, but the net results213Samba also ships a Spotlight client command "mdfind" which can be used to search
656is to remove barriers to significantly larger Samba deployments214any SMB server that runs the Spotlight RPC service. See the manpage of mdfind
657compared to previous releases.215for details.
658216
659Reindex performance improvements217Note that when upgrading existing installations that are using the previous
660--------------------------------218default Spotlight backend Gnome Tracker must explicitly set "spotlight backend =
219tracker" as the new default is "noindex".
661220
662The performance of samba-tool dbcheck --reindex has been improved,221'net ads kerberos pac save' and 'net eventlog export'
663especially for large domains.222-----------------------------------------------------
664223
665join performance improvements224The 'net ads kerberos pac save' and 'net eventlog export' tools will
666-----------------------------225no longer silently overwrite an existing file during data export. If
226the filename given exits, an error will be shown.
667227
668The performance of samba-tool domain join has been improved,228Fuzzing
669especially for large domains.229-------
670230
671LDAP Server memory improvements231A large number of fuzz targets have been added to Samba, and Samba has
672-------------------------------232been registered in Google's oss-fuzz cloud fuzzing service. In
233particular, we now have good fuzzing coverage of our generated NDR
234parsing code.
673235
674The LDAP server has improved memory efficiency, ensuring that large236A large number of issues have been found and fixed thanks to this
675LDAP responses (for example a search for all objects) is not copied237effort.
676multiple times into memory.
677238
678Setting lmdb map size239'samba-tool' improvements add contacts as member to groups
679---------------------240----------------------------------------------------------
680241
681It is now possible to set the lmdb map size (the maximum permitted242Previously 'samba-tool group addmemers' can just add users, groups and
682size for the database). "samba-tool" now accepts the243computers as members to groups. But also contacts can be members of
683"--backend-store-size" i.e. --backend-store-size=4Gb. If not244groups. Samba 4.12 adds the functionality to add contacts to
684specified it defaults to 8Gb.245groups. Since contacts have no sAMAccountName, it's possible that
246there are more than one contact with the same name in different
247organizational units. Therefore it's necessary to have an option to
248handle group members by their DN.
685249
686This option is avaiable for the following sub commands:250To get the DN of an object there is now the "--full-dn" option available
687 * domain provision251for all necessary commands.
688 * domain join
689 * domain dcpromo
690 * drs clone-dc-database
691252
692LDB "batch_mode"253The MS Windows UI allows to search for specific types of group members
693----------------254when searching for new members for a group. This feature is included
255here with the new samba-tool group addmembers "--object-type=OBJECTYPE"
256option. The different types are selected accordingly to the Windows
257UI. The default samba-toole behaviour shouldn't be changed.
694258
695To improve performance during batch operations i.e. joins, ldb now259Allow filtering by OU or subtree in samba-tool
696accepts a "batch_mode" option. However to prevent any index or260----------------------------------------------
697database inconsistencies if an operation fails, the entire transaction
698will be aborted at commit.
699
700New LDB pack format
701-------------------
702261
703On first use (startup of 'samba' or the first transaction write)262A new "--base-dn" and "--member-base-dn" option is added to relevant
704Samba's sam.ldb will be updated to a new more efficient pack format.263samba-tool user, group and ou management commands to allow operation
705This will take a few moments.264on just one part of the AD tree, such as a single OU.
706265
707New LDB <= and >= index mode to improve replication performance266VFS
708---------------------------------------------------------------267===
709268
710As well as a new pack format, Samba's sam.ldb uses a new index format269SMB_VFS_NTIMES
711allowing Samba to efficiently select objects changed since the last270--------------
712replication cycle. This in turn improves performance during
713replication of large domains.
714271
715https://wiki.samba.org/index.php/LDB_Greater_than_and_Less_than_indexing272Samba now uses a sentinel value based on utimensat(2) UTIME_OMIT to denote
273to-be-ignored timestamp variables passed to the SMB_VFS_NTIMES() VFS function.
716274
717Improvements to ldb search performance275VFS modules can check whether any of the time values inside a struct
718--------------------------------------276smb_file_time is to be ignored by calling is_omit_timespec() on the value.
719277
720Search performance on large LDB databases has been improved by278'io_uring' vfs module
721reducing memory allocations made on each object.279---------------------
722280
723Improvements to subtree rename performance281The module makes use of the new io_uring infrastructure
724------------------------------------------282(intruduced in Linux 5.1), see https://lwn.net/Articles/776703/
725283
726Improvements have been made to Samba's handling of subtree renames,284Currently this implements SMB_VFS_{PREAD,PWRITE,FSYNC}_SEND/RECV
727for example of containers and organisational units, however large285and avoids the overhead of the userspace threadpool in the default
728renames are still not recommended.286vfs backend. See also vfs_io_uring(8).
729287
730CTDB changes288In order to build the module you need the liburing userspace library
731============289and its developement headers installed, see
290https://git.kernel.dk/cgit/liburing/
732291
733* nfs-linux-kernel-callout now defaults to using systemd service names292At runtime you'll need a Linux kernel with version 5.1 or higher.
293Note that 5.4.14 and 5.4.15 have a regression that breaks the Samba
294module! The regression was fixed in Linux 5.4.16 again.
734295
735 The Red Hat service names continue to be the default.296MS-DFS changes in the VFS
297-------------------------
736298
737 Other distributions should patch this file when packaging it.299This release changes set getting and setting of MS-DFS redirects
300on the filesystem to go through two new VFS functions:
738301
739* The onnode -o option has been removed302SMB_VFS_CREATE_DFS_PATHAT()
303SMB_VFS_READ_DFS_PATHAT()
740304
741* ctdbd logs when it is using more than 90% of a CPU thread305instead of smbd explicitly storing MS-DFS redirects inside
306symbolic links on the filesystem. The underlying default
307implementations of this has not changed, the redirects are
308still stored inside symbolic links on the filesystem, but
309moving the creation and reading of these links into the VFS
310as first-class functions now allows alternate methods of
311storing them (maybe in extended attributes) for OEMs who
312don't want to mis-use filesystem symbolic links in this
313way.
742314
743 ctdbd is single threaded, so can become saturated if it uses the
744 full capacity of a CPU thread. To help detect this situation, ctdbd
745 now logs messages when CPU utilisation exceeds 90%. Each change in
746 CPU utilisation over 90% is logged. A message is also logged when
747 CPU utilisation drops below the 90% threshold.
748315
749* Script configuration variable CTDB_MONITOR_SWAP_USAGE has been removed316CTDB changes
317============
750318
751 05.system.script now monitors total memory (i.e. physical memory +319* The ctdb_mutex_fcntl_helper periodically re-checks the lock file
752 swap) utilisation using the existing CTDB_MONITOR_MEMORY_USAGE
753 script configuration variable.
754320
755CephFS Snapshot Integration321 The re-check period is specified using a 2nd argument to this
756---------------------------322 helper. The default re-check period is 5s.
757323
758CephFS snapshots can now be exposed as previous file versions using the new324 If the file no longer exists or the inode number changes then the
759ceph_snapshots VFS module. See the vfs_ceph_snapshots(8) man page for details.325 helper exits. This triggers an election.
760326
761327
762REMOVED FEATURES328REMOVED FEATURES
763================329================
764330
765Web server331The smb.conf parameter "write cache size" has been removed.
766----------
767332
768As a leftover from work related to the Samba Web Administration Tool (SWAT),333Since the in-memory write caching code was written, our write path has
769Samba still supported a Python WSGI web server (which could still be turned on334changed significantly. In particular we have gained very flexible
770from the 'server services' smb.conf parameter). This service was unused and has335support for async I/O, with the new linux io_uring interface in
771now been removed from Samba.336development. The old write cache concept which cached data in main
337memory followed by a blocking pwrite no longer gives any improvement
338on modern systems, and may make performance worse on memory-contrained
339systems, so this functionality should not be enabled in core smbd
340code.
772341
773samba-tool join subdomain342In addition, it complicated the write code, which is a performance
774-------------------------343critical code path.
344
345If required for specialist purposes, it can be recreated as a VFS
346module.
347
348Retiring DES encryption types in Kerberos.
349------------------------------------------
350With this release, support for DES encryption types has been removed from
351Samba, and setting DES_ONLY flag for an account will cause Kerberos
352authentication to fail for that account (see RFC-6649).
353
354Samba-DC: DES keys no longer saved in DB.
355-----------------------------------------
356When a new password is set for an account, Samba DC will store random keys
357in DB instead of DES keys derived from the password. If the account is being
358migrated to Windbows or to an older version of Samba in order to use DES keys,
359the password must be reset to make it work.
360
361Heimdal-DC: removal of weak-crypto.
362-----------------------------------
363Following removal of DES encryption types from Samba, the embedded Heimdal
364build has been updated to not compile weak crypto code (HEIM_WEAK_CRYPTO).
775365
776The subdomain role has been removed from the join command. This option did366vfs_netatalk: The netatalk VFS module has been removed.
777not work and has no tests.367-------------------------------------------------------
778368
779Python2 support369The netatalk VFS module has been removed. It was unmaintained and is not needed
780---------------370any more.
781371
782Samba 4.11 will not have any runtime support for Python 2.372BIND9_FLATFILE deprecated
373-------------------------
783374
784If you are building Samba using the '--disable-python' option375The BIND9_FLATFILE DNS backend is deprecated in this release and will
785(i.e. you're excluding all the run-time Python support), then this376be removed in the future. This was only practically useful on a single
786will continue to work on a system that supports either python2 or377domain controller or under expert care and supervision.
787python3.
788378
789To build Samba with python2 you *must* set the 'PYTHON' environment379This release removes the 'rndc command' smb.conf parameter, which
790variable for both the 'configure' and 'make' steps, i.e.380supported this configuration by writing out a list of DCs permitted to
791 'PYTHON=python2 ./configure'381make changes to the DNS Zone and nudging the 'named' server if a new
792 'PYTHON=python2 make'382DC was added to the domain. Administrators using BIND9_FLATFILE will
793This will override the python3 default.383need to maintain this manually from now on.
794384
795Except for this specific build-time use of python2, Samba now requires
796Python 3.4 as a minimum.
797385
798smb.conf changes386smb.conf changes
799================387================
@@ -801,111 +389,85 @@ smb.conf changes
801 Parameter Name Description Default389 Parameter Name Description Default
802 -------------- ----------- -------390 -------------- ----------- -------
803391
804 allocation roundup size Default changed/ 0392 elasticsearch:address New localhost
805 Deprecated393 elasticsearch:port New 9200
806 client min protocol Changed default SMB2_02394 elasticsearch:use tls New No
807 server min protocol Changed default SMB2_02395 elasticsearch:index New _all
808 mangled names Changed default illegal396 elasticsearch:mappings New DATADIR/elasticsearch_mappings.json
809 web port Removed397 elasticsearch:max results New 100
810 fruit:zero_file_id Changed default False398 nfs4:acedup Changed default merge
811 debug encryption New: dump encryption keys False399 rndc command Removed
812 rndc command Deprecated400 write cache size Removed
813 lanman auth Deprecated401 spotlight backend New noindex
814 encrypt passwords Deprecated
815402
816403
817CHANGES SINCE 4.11.0rc4404CHANGES SINCE 4.12.0rc4
818=======================405=======================
819406
407o Andrew Bartlett <abartlet@samba.org>
408 * BUG 14258: dsdb: Correctly handle memory in objectclass_attrs.
409
820410
821CHANGES SINCE 4.11.0rc3411CHANGES SINCE 4.12.0rc3
822=======================412=======================
823413
414o Jeremy Allison <jra@samba.org>
415 * BUG 14269: s3: DFS: Don't allow link deletion on a read-only share.
416
824o Douglas Bagnall <douglas.bagnall@catalyst.net.nz>417o Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
825 * BUG 14049: ldb: Don't try to save a value that isn't there.418 * BUG 14284: pidl/wscript: configure should insist on Parse::Yapp::Driver.
826 * ldb_dn: Free dn components on explode failure.
827 * ldb: Do not allow adding a DN as a base to itself.
828419
829o Andrew Bartlett <abartlet@samba.org>420o Andrew Bartlett <abartlet@samba.org>
830 * ldb: Release ldb 2.0.7.421 * BUG 14270: ldb: Fix search with scope ONE and small result sets.
831 * BUG 13695: ldb: Correct Pigeonhole principle validation in422 * BUG 14284: build: Do not check if system perl modules should be bundled.
832 ldb_filter_attrs().
833 * BUG 14049: Fix ldb dn crash.
834 * BUG 14117: Deprecate "lanman auth = yes" and "encrypt passwords = no".
835423
836o Ralph Boehme <slow@samba.org>424o Volker Lendecke <vl@samba.org>
837 * BUG 14038: Fix compiling ctdb on older systems lacking POSIX robust425 * BUG 14285: smbd fails to handle EINTR from open(2) properly.
838 mutexes.
839 * BUG 14121: smbd returns bad File-ID on filehandle used to create a file or
840 directory.
841
842o Poornima G <pgurusid@redhat.com>
843 * BUG 14098: vfs_glusterfs: Use pthreadpool for scheduling aio operations.
844426
845o Stefan Metzmacher <metze@samba.org>427o Stefan Metzmacher <metze@samba.org>
846 * BUG 14055: Add the target server name of SMB 3.1.1 connections as a hint to428 * BUG 14270: ldb: version 2.1.1.
847 load balancers or servers with "multi-tenancy" support.
848 * BUG 14113: Fix byte range locking bugs/regressions.
849429
850o Swen Schillig <swen@linux.ibm.com>
851 * ldb: Fix mem-leak if talloc_realloc fails.
852430
853o Evgeny Sinelnikov <sin@altlinux.org>431CHANGES SINCE 4.12.0rc2
854 * BUG 14007: Fix join with don't exists machine account.
855
856o Martin Schwenke <martin@meltin.net>
857 * BUG 14085: ctdb-recoverd: Only check for LMASTER nodes in the VNN map.
858
859
860CHANGES SINCE 4.11.0rc2
861=======================432=======================
862433
863o Michael Adam <obnox@samba.org>
864 * BUG 13972: Different Device Id for GlusterFS FUSE mount is causing data
865 loss in CTDB cluster.
866
867o Jeremy Allison <jra@samba.org>434o Jeremy Allison <jra@samba.org>
868 * BUG 14035: CVE-2019-10197: Permissions check deny can allow user to escape435 * BUG 14282: Set getting and setting of MS-DFS redirects on the filesystem
869 from the share.436 to go through two new VFS functions SMB_VFS_CREATE_DFS_PATHAT() and
437 SMB_VFS_READ_DFS_PATHAT().
870438
871o Andrew Bartlett <abartlet@samba.org>439o Andrew Bartlett <abartlet@samba.org>
872 * BUG 14059: ldb: Release ldb 2.0.6 (log database repack so users know what440 * BUG 14255: bootstrap: Remove un-used dependency python3-crypto.
873 is happening).
874 * BUG 14092: docs: Deprecate "rndc command" for Samba 4.11.
875441
876o Tim Beale <timbeale@catalyst.net.nz>442o Volker Lendecke <vl@samba.org>
877 * BUG 14059: ldb: Free memory when repacking database.443 * BUG 14247: Fix CID 1458418 and 1458420.
444 * BUG 14281: lib: Fix a shutdown crash with "clustering = yes".
878445
879o Ralph Boehme <slow@samba.org>446o Stefan Metzmacher <metze@samba.org>
880 * BUG 14089: vfs_default: Use correct flag in vfswrap_fs_file_id.447 * BUG 14247: Winbind member (source3) fails local SAM auth with empty domain
881 * BUG 14090: vfs_glusterfs: Initialize st_ex_file_id, st_ex_itime and448 name.
882 st_ex_iflags.449 * BUG 14265: winbindd: Handle missing idmap in getgrgid().
450 * BUG 14271: Don't use forward declaration for GnuTLS typedefs.
451 * BUG 14280: Add io_uring vfs module.
883452
884o Anoop C S <anoopcs@redhat.com>453o Andreas Schneider <asn@samba.org>
885 * BUG 14093: vfs_glusterfs: Enable profiling for file system operations.454 * BUG 14250: libcli:smb: Improve check for gnutls_aead_cipher_(en|de)cryptv2.
886455
887o Aaron Haslett <aaronhaslett@catalyst.net.nz>
888 * BUG 14059: Backport sambadowngradedatabase for v4.11.
889456
890o Stefan Metzmacher <metze@samba.org>457CHANGES SINCE 4.12.0rc1
891 * BUG 14035: CVE-2019-10197: Permissions check deny can allow user to escape458=======================
892 from the share.
893459
894o Christof Schmitt <cs@samba.org>460o Jeremy Allison <jra@samba.org>
895 * BUG 14032: vfs_gpfs: Implement special case for denying owner access to461 * BUG 14239: s3: lib: nmblib. Clean up and harden nmb packet processing.
896 ACL.
897462
898o Martin Schwenke <martin@meltin.net>463o Andreas Schneider <asn@samba.org>
899 * BUG 14084: Avoid marking a node as connected before it can receive packets.464 * BUG 14253: lib:util: Log mkdir error on correct debug levels.
900 * BUG 14086: Fix onnode test failure with ShellCheck >= 0.4.7.
901 * BUG 14087: ctdb-daemon: Stop "ctdb stop" from completing before freezing
902 databases.
903465
904466
905KNOWN ISSUES467KNOWN ISSUES
906============468============
907469
908https://wiki.samba.org/index.php/Release_Planning_for_Samba_4.11#Release_blocking_bugs470https://wiki.samba.org/index.php/Release_Planning_for_Samba_4.12#Release_blocking_bugs
909471
910472
911#######################################473#######################################
diff --git a/auth/common_auth.h b/auth/common_auth.h
index 9f04c9b..0452c67 100644
--- a/auth/common_auth.h
+++ b/auth/common_auth.h
@@ -129,12 +129,6 @@ struct auth4_context {
129 /* Private data for the callbacks on this auth context */129 /* Private data for the callbacks on this auth context */
130 void *private_data;130 void *private_data;
131131
132 NTSTATUS (*check_ntlm_password)(struct auth4_context *auth_ctx,
133 TALLOC_CTX *mem_ctx,
134 const struct auth_usersupplied_info *user_info,
135 uint8_t *pauthoritative,
136 void **server_returned_info,
137 DATA_BLOB *nt_session_key, DATA_BLOB *lm_session_key);
138 struct tevent_req *(*check_ntlm_password_send)(TALLOC_CTX *mem_ctx,132 struct tevent_req *(*check_ntlm_password_send)(TALLOC_CTX *mem_ctx,
139 struct tevent_context *ev,133 struct tevent_context *ev,
140 struct auth4_context *auth_ctx,134 struct auth4_context *auth_ctx,
diff --git a/auth/credentials/credentials.c b/auth/credentials/credentials.c
index 5ebec48..81f9dbb 100644
--- a/auth/credentials/credentials.c
+++ b/auth/credentials/credentials.c
@@ -1333,19 +1333,19 @@ _PUBLIC_ NTSTATUS netlogon_creds_session_encrypt(
1333 return NT_STATUS_INVALID_PARAMETER;1333 return NT_STATUS_INVALID_PARAMETER;
1334 }1334 }
1335 if (state->negotiate_flags & NETLOGON_NEG_SUPPORTS_AES) {1335 if (state->negotiate_flags & NETLOGON_NEG_SUPPORTS_AES) {
1336 netlogon_creds_aes_encrypt(state,1336 status = netlogon_creds_aes_encrypt(state,
1337 data.data,1337 data.data,
1338 data.length);1338 data.length);
1339 } else if (state->negotiate_flags & NETLOGON_NEG_ARCFOUR) {1339 } else if (state->negotiate_flags & NETLOGON_NEG_ARCFOUR) {
1340 status = netlogon_creds_arcfour_crypt(state,1340 status = netlogon_creds_arcfour_crypt(state,
1341 data.data,1341 data.data,
1342 data.length);1342 data.length);
1343 if (!NT_STATUS_IS_OK(status)) {
1344 return status;
1345 }
1346 } else {1343 } else {
1347 DBG_ERR("Unsupported encryption option negotiated");1344 DBG_ERR("Unsupported encryption option negotiated");
1348 return NT_STATUS_NOT_SUPPORTED;1345 status = NT_STATUS_NOT_SUPPORTED;
1346 }
1347 if (!NT_STATUS_IS_OK(status)) {
1348 return status;
1349 }1349 }
1350 return NT_STATUS_OK;1350 return NT_STATUS_OK;
1351}1351}
diff --git a/auth/credentials/credentials_ntlm.c b/auth/credentials/credentials_ntlm.c
index bf55ab9..f1b22a6 100644
--- a/auth/credentials/credentials_ntlm.c
+++ b/auth/credentials/credentials_ntlm.c
@@ -51,6 +51,7 @@ _PUBLIC_ NTSTATUS cli_credentials_get_ntlm_response(struct cli_credentials *cred
51 DATA_BLOB lm_session_key = data_blob_null;51 DATA_BLOB lm_session_key = data_blob_null;
52 DATA_BLOB session_key = data_blob_null;52 DATA_BLOB session_key = data_blob_null;
53 const struct samr_Password *nt_hash = NULL;53 const struct samr_Password *nt_hash = NULL;
54 int rc;
5455
55 if (cred->use_kerberos == CRED_MUST_USE_KERBEROS) {56 if (cred->use_kerberos == CRED_MUST_USE_KERBEROS) {
56 TALLOC_FREE(frame);57 TALLOC_FREE(frame);
@@ -159,7 +160,6 @@ _PUBLIC_ NTSTATUS cli_credentials_get_ntlm_response(struct cli_credentials *cred
159 uint8_t session_nonce[16];160 uint8_t session_nonce[16];
160 uint8_t session_nonce_hash[16];161 uint8_t session_nonce_hash[16];
161 uint8_t user_session_key[16];162 uint8_t user_session_key[16];
162 int rc;
163163
164 lm_response = data_blob_talloc_zero(frame, 24);164 lm_response = data_blob_talloc_zero(frame, 24);
165 if (lm_response.data == NULL) {165 if (lm_response.data == NULL) {
@@ -188,9 +188,13 @@ _PUBLIC_ NTSTATUS cli_credentials_get_ntlm_response(struct cli_credentials *cred
188 TALLOC_FREE(frame);188 TALLOC_FREE(frame);
189 return NT_STATUS_NO_MEMORY;189 return NT_STATUS_NO_MEMORY;
190 }190 }
191 SMBOWFencrypt(nt_hash->hash,191 rc = SMBOWFencrypt(nt_hash->hash,
192 session_nonce_hash,192 session_nonce_hash,
193 nt_response.data);193 nt_response.data);
194 if (rc != 0) {
195 TALLOC_FREE(frame);
196 return gnutls_error_to_ntstatus(rc, NT_STATUS_ACCESS_DISABLED_BY_POLICY_OTHER);
197 }
194198
195 ZERO_ARRAY(session_nonce_hash);199 ZERO_ARRAY(session_nonce_hash);
196200
@@ -228,8 +232,12 @@ _PUBLIC_ NTSTATUS cli_credentials_get_ntlm_response(struct cli_credentials *cred
228 TALLOC_FREE(frame);232 TALLOC_FREE(frame);
229 return NT_STATUS_NO_MEMORY;233 return NT_STATUS_NO_MEMORY;
230 }234 }
231 SMBOWFencrypt(nt_hash->hash, challenge.data,235 rc = SMBOWFencrypt(nt_hash->hash, challenge.data,
232 nt_response.data);236 nt_response.data);
237 if (rc != 0) {
238 TALLOC_FREE(frame);
239 return gnutls_error_to_ntstatus(rc, NT_STATUS_ACCESS_DISABLED_BY_POLICY_OTHER);
240 }
233241
234 session_key = data_blob_talloc_zero(frame, 16);242 session_key = data_blob_talloc_zero(frame, 16);
235 if (session_key.data == NULL) {243 if (session_key.data == NULL) {
@@ -254,9 +262,14 @@ _PUBLIC_ NTSTATUS cli_credentials_get_ntlm_response(struct cli_credentials *cred
254 return NT_STATUS_NO_MEMORY;262 return NT_STATUS_NO_MEMORY;
255 }263 }
256264
257 SMBencrypt_hash(lm_hash,265 rc = SMBencrypt_hash(lm_hash,
258 challenge.data,266 challenge.data,
259 lm_response.data);267 lm_response.data);
268 if (rc != 0) {
269 ZERO_STRUCT(lm_hash);
270 TALLOC_FREE(frame);
271 return gnutls_error_to_ntstatus(rc, NT_STATUS_ACCESS_DISABLED_BY_POLICY_OTHER);
272 }
260 } else {273 } else {
261 /* just copy the nt_response */274 /* just copy the nt_response */
262 lm_response = data_blob_dup_talloc(frame, nt_response);275 lm_response = data_blob_dup_talloc(frame, nt_response);
diff --git a/auth/credentials/pycredentials.c b/auth/credentials/pycredentials.c
index 1aef16a..7427e28 100644
--- a/auth/credentials/pycredentials.c
+++ b/auth/credentials/pycredentials.c
@@ -37,13 +37,6 @@
3737
38void initcredentials(void);38void initcredentials(void);
3939
40static PyObject *PyString_FromStringOrNULL(const char *str)
41{
42 if (str == NULL)
43 Py_RETURN_NONE;
44 return PyUnicode_FromString(str);
45}
46
47static PyObject *py_creds_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)40static PyObject *py_creds_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
48{41{
49 return pytalloc_steal(type, cli_credentials_init(NULL));42 return pytalloc_steal(type, cli_credentials_init(NULL));
@@ -51,7 +44,12 @@ static PyObject *py_creds_new(PyTypeObject *type, PyObject *args, PyObject *kwar
5144
52static PyObject *py_creds_get_username(PyObject *self, PyObject *unused)45static PyObject *py_creds_get_username(PyObject *self, PyObject *unused)
53{46{
54 return PyString_FromStringOrNULL(cli_credentials_get_username(PyCredentials_AsCliCredentials(self)));47 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
48 if (creds == NULL) {
49 PyErr_Format(PyExc_TypeError, "Credentials expected");
50 return NULL;
51 }
52 return PyString_FromStringOrNULL(cli_credentials_get_username(creds));
55}53}
5654
57static PyObject *py_creds_set_username(PyObject *self, PyObject *args)55static PyObject *py_creds_set_username(PyObject *self, PyObject *args)
@@ -59,13 +57,18 @@ static PyObject *py_creds_set_username(PyObject *self, PyObject *args)
59 char *newval;57 char *newval;
60 enum credentials_obtained obt = CRED_SPECIFIED;58 enum credentials_obtained obt = CRED_SPECIFIED;
61 int _obt = obt;59 int _obt = obt;
60 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
61 if (creds == NULL) {
62 PyErr_Format(PyExc_TypeError, "Credentials expected");
63 return NULL;
64 }
6265
63 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {66 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {
64 return NULL;67 return NULL;
65 }68 }
66 obt = _obt;69 obt = _obt;
6770
68 return PyBool_FromLong(cli_credentials_set_username(PyCredentials_AsCliCredentials(self), newval, obt));71 return PyBool_FromLong(cli_credentials_set_username(creds, newval, obt));
69}72}
7073
71static PyObject *py_creds_get_ntlm_username_domain(PyObject *self, PyObject *unused)74static PyObject *py_creds_get_ntlm_username_domain(PyObject *self, PyObject *unused)
@@ -74,7 +77,12 @@ static PyObject *py_creds_get_ntlm_username_domain(PyObject *self, PyObject *unu
74 const char *user = NULL;77 const char *user = NULL;
75 const char *domain = NULL;78 const char *domain = NULL;
76 PyObject *ret = NULL;79 PyObject *ret = NULL;
77 cli_credentials_get_ntlm_username_domain(PyCredentials_AsCliCredentials(self),80 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
81 if (creds == NULL) {
82 PyErr_Format(PyExc_TypeError, "Credentials expected");
83 return NULL;
84 }
85 cli_credentials_get_ntlm_username_domain(creds,
78 frame, &user, &domain);86 frame, &user, &domain);
79 ret = Py_BuildValue("(ss)",87 ret = Py_BuildValue("(ss)",
80 user,88 user,
@@ -101,6 +109,11 @@ static PyObject *py_creds_get_ntlm_response(PyObject *self, PyObject *args, PyOb
101 const char *kwnames[] = { "flags", "challenge",109 const char *kwnames[] = { "flags", "challenge",
102 "target_info",110 "target_info",
103 NULL };111 NULL };
112 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
113 if (creds == NULL) {
114 PyErr_Format(PyExc_TypeError, "Credentials expected");
115 return NULL;
116 }
104117
105 tv_now = timeval_current();118 tv_now = timeval_current();
106 server_timestamp = timeval_to_nttime(&tv_now);119 server_timestamp = timeval_to_nttime(&tv_now);
@@ -115,7 +128,7 @@ static PyObject *py_creds_get_ntlm_response(PyObject *self, PyObject *args, PyOb
115 return NULL;128 return NULL;
116 }129 }
117130
118 status = cli_credentials_get_ntlm_response(PyCredentials_AsCliCredentials(self),131 status = cli_credentials_get_ntlm_response(creds,
119 frame, &flags,132 frame, &flags,
120 challenge,133 challenge,
121 &server_timestamp,134 &server_timestamp,
@@ -147,7 +160,13 @@ static PyObject *py_creds_get_ntlm_response(PyObject *self, PyObject *args, PyOb
147static PyObject *py_creds_get_principal(PyObject *self, PyObject *unused)160static PyObject *py_creds_get_principal(PyObject *self, PyObject *unused)
148{161{
149 TALLOC_CTX *frame = talloc_stackframe();162 TALLOC_CTX *frame = talloc_stackframe();
150 PyObject *ret = PyString_FromStringOrNULL(cli_credentials_get_principal(PyCredentials_AsCliCredentials(self), frame));163 PyObject *ret = NULL;
164 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
165 if (creds == NULL) {
166 PyErr_Format(PyExc_TypeError, "Credentials expected");
167 return NULL;
168 }
169 ret = PyString_FromStringOrNULL(cli_credentials_get_principal(creds, frame));
151 TALLOC_FREE(frame);170 TALLOC_FREE(frame);
152 return ret;171 return ret;
153}172}
@@ -157,18 +176,28 @@ static PyObject *py_creds_set_principal(PyObject *self, PyObject *args)
157 char *newval;176 char *newval;
158 enum credentials_obtained obt = CRED_SPECIFIED;177 enum credentials_obtained obt = CRED_SPECIFIED;
159 int _obt = obt;178 int _obt = obt;
179 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
180 if (creds == NULL) {
181 PyErr_Format(PyExc_TypeError, "Credentials expected");
182 return NULL;
183 }
160184
161 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {185 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {
162 return NULL;186 return NULL;
163 }187 }
164 obt = _obt;188 obt = _obt;
165189
166 return PyBool_FromLong(cli_credentials_set_principal(PyCredentials_AsCliCredentials(self), newval, obt));190 return PyBool_FromLong(cli_credentials_set_principal(creds, newval, obt));
167}191}
168192
169static PyObject *py_creds_get_password(PyObject *self, PyObject *unused)193static PyObject *py_creds_get_password(PyObject *self, PyObject *unused)
170{194{
171 return PyString_FromStringOrNULL(cli_credentials_get_password(PyCredentials_AsCliCredentials(self)));195 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
196 if (creds == NULL) {
197 PyErr_Format(PyExc_TypeError, "Credentials expected");
198 return NULL;
199 }
200 return PyString_FromStringOrNULL(cli_credentials_get_password(creds));
172}201}
173202
174static PyObject *py_creds_set_password(PyObject *self, PyObject *args)203static PyObject *py_creds_set_password(PyObject *self, PyObject *args)
@@ -177,12 +206,18 @@ static PyObject *py_creds_set_password(PyObject *self, PyObject *args)
177 enum credentials_obtained obt = CRED_SPECIFIED;206 enum credentials_obtained obt = CRED_SPECIFIED;
178 int _obt = obt;207 int _obt = obt;
179 PyObject *result = NULL;208 PyObject *result = NULL;
209 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
210 if (creds == NULL) {
211 PyErr_Format(PyExc_TypeError, "Credentials expected");
212 return NULL;
213 }
214
180 if (!PyArg_ParseTuple(args, PYARG_STR_UNI"|i", "utf8", &newval, &_obt)) {215 if (!PyArg_ParseTuple(args, PYARG_STR_UNI"|i", "utf8", &newval, &_obt)) {
181 return NULL;216 return NULL;
182 }217 }
183 obt = _obt;218 obt = _obt;
184219
185 result = PyBool_FromLong(cli_credentials_set_password(PyCredentials_AsCliCredentials(self), newval, obt));220 result = PyBool_FromLong(cli_credentials_set_password(creds, newval, obt));
186 PyMem_Free(discard_const_p(void*, newval));221 PyMem_Free(discard_const_p(void*, newval));
187 return result;222 return result;
188}223}
@@ -196,6 +231,11 @@ static PyObject *py_creds_set_utf16_password(PyObject *self, PyObject *args)
196 Py_ssize_t size = 0;231 Py_ssize_t size = 0;
197 int result;232 int result;
198 bool ok;233 bool ok;
234 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
235 if (creds == NULL) {
236 PyErr_Format(PyExc_TypeError, "Credentials expected");
237 return NULL;
238 }
199239
200 if (!PyArg_ParseTuple(args, "O|i", &newval, &_obt)) {240 if (!PyArg_ParseTuple(args, "O|i", &newval, &_obt)) {
201 return NULL;241 return NULL;
@@ -209,7 +249,7 @@ static PyObject *py_creds_set_utf16_password(PyObject *self, PyObject *args)
209 }249 }
210 blob.length = size;250 blob.length = size;
211251
212 ok = cli_credentials_set_utf16_password(PyCredentials_AsCliCredentials(self),252 ok = cli_credentials_set_utf16_password(creds,
213 &blob, obt);253 &blob, obt);
214254
215 return PyBool_FromLong(ok);255 return PyBool_FromLong(ok);
@@ -217,7 +257,12 @@ static PyObject *py_creds_set_utf16_password(PyObject *self, PyObject *args)
217257
218static PyObject *py_creds_get_old_password(PyObject *self, PyObject *unused)258static PyObject *py_creds_get_old_password(PyObject *self, PyObject *unused)
219{259{
220 return PyString_FromStringOrNULL(cli_credentials_get_old_password(PyCredentials_AsCliCredentials(self)));260 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
261 if (creds == NULL) {
262 PyErr_Format(PyExc_TypeError, "Credentials expected");
263 return NULL;
264 }
265 return PyString_FromStringOrNULL(cli_credentials_get_old_password(creds));
221}266}
222267
223static PyObject *py_creds_set_old_password(PyObject *self, PyObject *args)268static PyObject *py_creds_set_old_password(PyObject *self, PyObject *args)
@@ -225,13 +270,18 @@ static PyObject *py_creds_set_old_password(PyObject *self, PyObject *args)
225 char *oldval;270 char *oldval;
226 enum credentials_obtained obt = CRED_SPECIFIED;271 enum credentials_obtained obt = CRED_SPECIFIED;
227 int _obt = obt;272 int _obt = obt;
273 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
274 if (creds == NULL) {
275 PyErr_Format(PyExc_TypeError, "Credentials expected");
276 return NULL;
277 }
228278
229 if (!PyArg_ParseTuple(args, "s|i", &oldval, &_obt)) {279 if (!PyArg_ParseTuple(args, "s|i", &oldval, &_obt)) {
230 return NULL;280 return NULL;
231 }281 }
232 obt = _obt;282 obt = _obt;
233283
234 return PyBool_FromLong(cli_credentials_set_old_password(PyCredentials_AsCliCredentials(self), oldval, obt));284 return PyBool_FromLong(cli_credentials_set_old_password(creds, oldval, obt));
235}285}
236286
237static PyObject *py_creds_set_old_utf16_password(PyObject *self, PyObject *args)287static PyObject *py_creds_set_old_utf16_password(PyObject *self, PyObject *args)
@@ -241,6 +291,11 @@ static PyObject *py_creds_set_old_utf16_password(PyObject *self, PyObject *args)
241 Py_ssize_t size = 0;291 Py_ssize_t size = 0;
242 int result;292 int result;
243 bool ok;293 bool ok;
294 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
295 if (creds == NULL) {
296 PyErr_Format(PyExc_TypeError, "Credentials expected");
297 return NULL;
298 }
244299
245 if (!PyArg_ParseTuple(args, "O", &oldval)) {300 if (!PyArg_ParseTuple(args, "O", &oldval)) {
246 return NULL;301 return NULL;
@@ -253,7 +308,7 @@ static PyObject *py_creds_set_old_utf16_password(PyObject *self, PyObject *args)
253 }308 }
254 blob.length = size;309 blob.length = size;
255310
256 ok = cli_credentials_set_old_utf16_password(PyCredentials_AsCliCredentials(self),311 ok = cli_credentials_set_old_utf16_password(creds,
257 &blob);312 &blob);
258313
259 return PyBool_FromLong(ok);314 return PyBool_FromLong(ok);
@@ -261,7 +316,12 @@ static PyObject *py_creds_set_old_utf16_password(PyObject *self, PyObject *args)
261316
262static PyObject *py_creds_get_domain(PyObject *self, PyObject *unused)317static PyObject *py_creds_get_domain(PyObject *self, PyObject *unused)
263{318{
264 return PyString_FromStringOrNULL(cli_credentials_get_domain(PyCredentials_AsCliCredentials(self)));319 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
320 if (creds == NULL) {
321 PyErr_Format(PyExc_TypeError, "Credentials expected");
322 return NULL;
323 }
324 return PyString_FromStringOrNULL(cli_credentials_get_domain(creds));
265}325}
266326
267static PyObject *py_creds_set_domain(PyObject *self, PyObject *args)327static PyObject *py_creds_set_domain(PyObject *self, PyObject *args)
@@ -269,18 +329,28 @@ static PyObject *py_creds_set_domain(PyObject *self, PyObject *args)
269 char *newval;329 char *newval;
270 enum credentials_obtained obt = CRED_SPECIFIED;330 enum credentials_obtained obt = CRED_SPECIFIED;
271 int _obt = obt;331 int _obt = obt;
332 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
333 if (creds == NULL) {
334 PyErr_Format(PyExc_TypeError, "Credentials expected");
335 return NULL;
336 }
272337
273 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {338 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {
274 return NULL;339 return NULL;
275 }340 }
276 obt = _obt;341 obt = _obt;
277342
278 return PyBool_FromLong(cli_credentials_set_domain(PyCredentials_AsCliCredentials(self), newval, obt));343 return PyBool_FromLong(cli_credentials_set_domain(creds, newval, obt));
279}344}
280345
281static PyObject *py_creds_get_realm(PyObject *self, PyObject *unused)346static PyObject *py_creds_get_realm(PyObject *self, PyObject *unused)
282{347{
283 return PyString_FromStringOrNULL(cli_credentials_get_realm(PyCredentials_AsCliCredentials(self)));348 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
349 if (creds == NULL) {
350 PyErr_Format(PyExc_TypeError, "Credentials expected");
351 return NULL;
352 }
353 return PyString_FromStringOrNULL(cli_credentials_get_realm(creds));
284}354}
285355
286static PyObject *py_creds_set_realm(PyObject *self, PyObject *args)356static PyObject *py_creds_set_realm(PyObject *self, PyObject *args)
@@ -288,32 +358,52 @@ static PyObject *py_creds_set_realm(PyObject *self, PyObject *args)
288 char *newval;358 char *newval;
289 enum credentials_obtained obt = CRED_SPECIFIED;359 enum credentials_obtained obt = CRED_SPECIFIED;
290 int _obt = obt;360 int _obt = obt;
361 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
362 if (creds == NULL) {
363 PyErr_Format(PyExc_TypeError, "Credentials expected");
364 return NULL;
365 }
291366
292 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {367 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {
293 return NULL;368 return NULL;
294 }369 }
295 obt = _obt;370 obt = _obt;
296371
297 return PyBool_FromLong(cli_credentials_set_realm(PyCredentials_AsCliCredentials(self), newval, obt));372 return PyBool_FromLong(cli_credentials_set_realm(creds, newval, obt));
298}373}
299374
300static PyObject *py_creds_get_bind_dn(PyObject *self, PyObject *unused)375static PyObject *py_creds_get_bind_dn(PyObject *self, PyObject *unused)
301{376{
302 return PyString_FromStringOrNULL(cli_credentials_get_bind_dn(PyCredentials_AsCliCredentials(self)));377 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
378 if (creds == NULL) {
379 PyErr_Format(PyExc_TypeError, "Credentials expected");
380 return NULL;
381 }
382 return PyString_FromStringOrNULL(cli_credentials_get_bind_dn(creds));
303}383}
304384
305static PyObject *py_creds_set_bind_dn(PyObject *self, PyObject *args)385static PyObject *py_creds_set_bind_dn(PyObject *self, PyObject *args)
306{386{
307 char *newval;387 char *newval;
388 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
389 if (creds == NULL) {
390 PyErr_Format(PyExc_TypeError, "Credentials expected");
391 return NULL;
392 }
308 if (!PyArg_ParseTuple(args, "s", &newval))393 if (!PyArg_ParseTuple(args, "s", &newval))
309 return NULL;394 return NULL;
310395
311 return PyBool_FromLong(cli_credentials_set_bind_dn(PyCredentials_AsCliCredentials(self), newval));396 return PyBool_FromLong(cli_credentials_set_bind_dn(creds, newval));
312}397}
313398
314static PyObject *py_creds_get_workstation(PyObject *self, PyObject *unused)399static PyObject *py_creds_get_workstation(PyObject *self, PyObject *unused)
315{400{
316 return PyString_FromStringOrNULL(cli_credentials_get_workstation(PyCredentials_AsCliCredentials(self)));401 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
402 if (creds == NULL) {
403 PyErr_Format(PyExc_TypeError, "Credentials expected");
404 return NULL;
405 }
406 return PyString_FromStringOrNULL(cli_credentials_get_workstation(creds));
317}407}
318408
319static PyObject *py_creds_set_workstation(PyObject *self, PyObject *args)409static PyObject *py_creds_set_workstation(PyObject *self, PyObject *args)
@@ -321,39 +411,69 @@ static PyObject *py_creds_set_workstation(PyObject *self, PyObject *args)
321 char *newval;411 char *newval;
322 enum credentials_obtained obt = CRED_SPECIFIED;412 enum credentials_obtained obt = CRED_SPECIFIED;
323 int _obt = obt;413 int _obt = obt;
414 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
415 if (creds == NULL) {
416 PyErr_Format(PyExc_TypeError, "Credentials expected");
417 return NULL;
418 }
324419
325 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {420 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {
326 return NULL;421 return NULL;
327 }422 }
328 obt = _obt;423 obt = _obt;
329424
330 return PyBool_FromLong(cli_credentials_set_workstation(PyCredentials_AsCliCredentials(self), newval, obt));425 return PyBool_FromLong(cli_credentials_set_workstation(creds, newval, obt));
331}426}
332427
333static PyObject *py_creds_is_anonymous(PyObject *self, PyObject *unused)428static PyObject *py_creds_is_anonymous(PyObject *self, PyObject *unused)
334{429{
335 return PyBool_FromLong(cli_credentials_is_anonymous(PyCredentials_AsCliCredentials(self)));430 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
431 if (creds == NULL) {
432 PyErr_Format(PyExc_TypeError, "Credentials expected");
433 return NULL;
434 }
435 return PyBool_FromLong(cli_credentials_is_anonymous(creds));
336}436}
337437
338static PyObject *py_creds_set_anonymous(PyObject *self, PyObject *unused)438static PyObject *py_creds_set_anonymous(PyObject *self, PyObject *unused)
339{439{
340 cli_credentials_set_anonymous(PyCredentials_AsCliCredentials(self));440 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
441 if (creds == NULL) {
442 PyErr_Format(PyExc_TypeError, "Credentials expected");
443 return NULL;
444 }
445 cli_credentials_set_anonymous(creds);
341 Py_RETURN_NONE;446 Py_RETURN_NONE;
342}447}
343448
344static PyObject *py_creds_authentication_requested(PyObject *self, PyObject *unused)449static PyObject *py_creds_authentication_requested(PyObject *self, PyObject *unused)
345{450{
346 return PyBool_FromLong(cli_credentials_authentication_requested(PyCredentials_AsCliCredentials(self)));451 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
452 if (creds == NULL) {
453 PyErr_Format(PyExc_TypeError, "Credentials expected");
454 return NULL;
455 }
456 return PyBool_FromLong(cli_credentials_authentication_requested(creds));
347}457}
348458
349static PyObject *py_creds_wrong_password(PyObject *self, PyObject *unused)459static PyObject *py_creds_wrong_password(PyObject *self, PyObject *unused)
350{460{
351 return PyBool_FromLong(cli_credentials_wrong_password(PyCredentials_AsCliCredentials(self)));461 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
462 if (creds == NULL) {
463 PyErr_Format(PyExc_TypeError, "Credentials expected");
464 return NULL;
465 }
466 return PyBool_FromLong(cli_credentials_wrong_password(creds));
352}467}
353468
354static PyObject *py_creds_set_cmdline_callbacks(PyObject *self, PyObject *unused)469static PyObject *py_creds_set_cmdline_callbacks(PyObject *self, PyObject *unused)
355{470{
356 return PyBool_FromLong(cli_credentials_set_cmdline_callbacks(PyCredentials_AsCliCredentials(self)));471 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
472 if (creds == NULL) {
473 PyErr_Format(PyExc_TypeError, "Credentials expected");
474 return NULL;
475 }
476 return PyBool_FromLong(cli_credentials_set_cmdline_callbacks(creds));
357}477}
358478
359static PyObject *py_creds_parse_string(PyObject *self, PyObject *args)479static PyObject *py_creds_parse_string(PyObject *self, PyObject *args)
@@ -361,13 +481,18 @@ static PyObject *py_creds_parse_string(PyObject *self, PyObject *args)
361 char *newval;481 char *newval;
362 enum credentials_obtained obt = CRED_SPECIFIED;482 enum credentials_obtained obt = CRED_SPECIFIED;
363 int _obt = obt;483 int _obt = obt;
484 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
485 if (creds == NULL) {
486 PyErr_Format(PyExc_TypeError, "Credentials expected");
487 return NULL;
488 }
364489
365 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {490 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {
366 return NULL;491 return NULL;
367 }492 }
368 obt = _obt;493 obt = _obt;
369494
370 cli_credentials_parse_string(PyCredentials_AsCliCredentials(self), newval, obt);495 cli_credentials_parse_string(creds, newval, obt);
371 Py_RETURN_NONE;496 Py_RETURN_NONE;
372}497}
373498
@@ -376,13 +501,18 @@ static PyObject *py_creds_parse_file(PyObject *self, PyObject *args)
376 char *newval;501 char *newval;
377 enum credentials_obtained obt = CRED_SPECIFIED;502 enum credentials_obtained obt = CRED_SPECIFIED;
378 int _obt = obt;503 int _obt = obt;
504 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
505 if (creds == NULL) {
506 PyErr_Format(PyExc_TypeError, "Credentials expected");
507 return NULL;
508 }
379509
380 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {510 if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {
381 return NULL;511 return NULL;
382 }512 }
383 obt = _obt;513 obt = _obt;
384514
385 cli_credentials_parse_file(PyCredentials_AsCliCredentials(self), newval, obt);515 cli_credentials_parse_file(creds, newval, obt);
386 Py_RETURN_NONE;516 Py_RETURN_NONE;
387}517}
388518
@@ -404,8 +534,13 @@ static PyObject *py_cli_credentials_set_password_will_be_nt_hash(PyObject *self,
404static PyObject *py_creds_get_nt_hash(PyObject *self, PyObject *unused)534static PyObject *py_creds_get_nt_hash(PyObject *self, PyObject *unused)
405{535{
406 PyObject *ret;536 PyObject *ret;
537 struct samr_Password *ntpw = NULL;
407 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);538 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
408 struct samr_Password *ntpw = cli_credentials_get_nt_hash(creds, creds);539 if (creds == NULL) {
540 PyErr_Format(PyExc_TypeError, "Credentials expected");
541 return NULL;
542 }
543 ntpw = cli_credentials_get_nt_hash(creds, creds);
409544
410 ret = PyBytes_FromStringAndSize(discard_const_p(char, ntpw->hash), 16);545 ret = PyBytes_FromStringAndSize(discard_const_p(char, ntpw->hash), 16);
411 TALLOC_FREE(ntpw);546 TALLOC_FREE(ntpw);
@@ -414,34 +549,55 @@ static PyObject *py_creds_get_nt_hash(PyObject *self, PyObject *unused)
414549
415static PyObject *py_creds_get_kerberos_state(PyObject *self, PyObject *unused)550static PyObject *py_creds_get_kerberos_state(PyObject *self, PyObject *unused)
416{551{
417 int state = cli_credentials_get_kerberos_state(PyCredentials_AsCliCredentials(self));552 int state;
553 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
554 if (creds == NULL) {
555 PyErr_Format(PyExc_TypeError, "Credentials expected");
556 return NULL;
557 }
558 state = cli_credentials_get_kerberos_state(creds);
418 return PyInt_FromLong(state);559 return PyInt_FromLong(state);
419}560}
420561
421static PyObject *py_creds_set_kerberos_state(PyObject *self, PyObject *args)562static PyObject *py_creds_set_kerberos_state(PyObject *self, PyObject *args)
422{563{
423 int state;564 int state;
565 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
566 if (creds == NULL) {
567 PyErr_Format(PyExc_TypeError, "Credentials expected");
568 return NULL;
569 }
424 if (!PyArg_ParseTuple(args, "i", &state))570 if (!PyArg_ParseTuple(args, "i", &state))
425 return NULL;571 return NULL;
426572
427 cli_credentials_set_kerberos_state(PyCredentials_AsCliCredentials(self), state);573 cli_credentials_set_kerberos_state(creds, state);
428 Py_RETURN_NONE;574 Py_RETURN_NONE;
429}575}
430576
431static PyObject *py_creds_set_krb_forwardable(PyObject *self, PyObject *args)577static PyObject *py_creds_set_krb_forwardable(PyObject *self, PyObject *args)
432{578{
433 int state;579 int state;
580 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
581 if (creds == NULL) {
582 PyErr_Format(PyExc_TypeError, "Credentials expected");
583 return NULL;
584 }
434 if (!PyArg_ParseTuple(args, "i", &state))585 if (!PyArg_ParseTuple(args, "i", &state))
435 return NULL;586 return NULL;
436587
437 cli_credentials_set_krb_forwardable(PyCredentials_AsCliCredentials(self), state);588 cli_credentials_set_krb_forwardable(creds, state);
438 Py_RETURN_NONE;589 Py_RETURN_NONE;
439}590}
440591
441592
442static PyObject *py_creds_get_forced_sasl_mech(PyObject *self, PyObject *unused)593static PyObject *py_creds_get_forced_sasl_mech(PyObject *self, PyObject *unused)
443{594{
444 return PyString_FromStringOrNULL(cli_credentials_get_forced_sasl_mech(PyCredentials_AsCliCredentials(self)));595 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
596 if (creds == NULL) {
597 PyErr_Format(PyExc_TypeError, "Credentials expected");
598 return NULL;
599 }
600 return PyString_FromStringOrNULL(cli_credentials_get_forced_sasl_mech(creds));
445}601}
446602
447static PyObject *py_creds_set_forced_sasl_mech(PyObject *self, PyObject *args)603static PyObject *py_creds_set_forced_sasl_mech(PyObject *self, PyObject *args)
@@ -449,13 +605,18 @@ static PyObject *py_creds_set_forced_sasl_mech(PyObject *self, PyObject *args)
449 char *newval;605 char *newval;
450 enum credentials_obtained obt = CRED_SPECIFIED;606 enum credentials_obtained obt = CRED_SPECIFIED;
451 int _obt = obt;607 int _obt = obt;
608 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
609 if (creds == NULL) {
610 PyErr_Format(PyExc_TypeError, "Credentials expected");
611 return NULL;
612 }
452613
453 if (!PyArg_ParseTuple(args, "s", &newval)) {614 if (!PyArg_ParseTuple(args, "s", &newval)) {
454 return NULL;615 return NULL;
455 }616 }
456 obt = _obt;617 obt = _obt;
457618
458 cli_credentials_set_forced_sasl_mech(PyCredentials_AsCliCredentials(self), newval);619 cli_credentials_set_forced_sasl_mech(creds, newval);
459 Py_RETURN_NONE;620 Py_RETURN_NONE;
460}621}
461622
@@ -467,6 +628,10 @@ static PyObject *py_creds_guess(PyObject *self, PyObject *args)
467 struct cli_credentials *creds;628 struct cli_credentials *creds;
468629
469 creds = PyCredentials_AsCliCredentials(self);630 creds = PyCredentials_AsCliCredentials(self);
631 if (creds == NULL) {
632 PyErr_Format(PyExc_TypeError, "Credentials expected");
633 return NULL;
634 }
470635
471 if (!PyArg_ParseTuple(args, "|O", &py_lp_ctx))636 if (!PyArg_ParseTuple(args, "|O", &py_lp_ctx))
472 return NULL;637 return NULL;
@@ -499,6 +664,10 @@ static PyObject *py_creds_set_machine_account(PyObject *self, PyObject *args)
499 TALLOC_CTX *mem_ctx;664 TALLOC_CTX *mem_ctx;
500665
501 creds = PyCredentials_AsCliCredentials(self);666 creds = PyCredentials_AsCliCredentials(self);
667 if (creds == NULL) {
668 PyErr_Format(PyExc_TypeError, "Credentials expected");
669 return NULL;
670 }
502671
503 if (!PyArg_ParseTuple(args, "|O", &py_lp_ctx))672 if (!PyArg_ParseTuple(args, "|O", &py_lp_ctx))
504 return NULL;673 return NULL;
@@ -542,6 +711,10 @@ static PyObject *py_creds_get_named_ccache(PyObject *self, PyObject *args)
542 TALLOC_CTX *mem_ctx;711 TALLOC_CTX *mem_ctx;
543712
544 creds = PyCredentials_AsCliCredentials(self);713 creds = PyCredentials_AsCliCredentials(self);
714 if (creds == NULL) {
715 PyErr_Format(PyExc_TypeError, "Credentials expected");
716 return NULL;
717 }
545718
546 if (!PyArg_ParseTuple(args, "|Os", &py_lp_ctx, &ccache_name))719 if (!PyArg_ParseTuple(args, "|Os", &py_lp_ctx, &ccache_name))
547 return NULL;720 return NULL;
@@ -585,6 +758,11 @@ static PyObject *py_creds_set_named_ccache(PyObject *self, PyObject *args)
585 PyObject *py_lp_ctx = Py_None;758 PyObject *py_lp_ctx = Py_None;
586 int _obt = obt;759 int _obt = obt;
587 int ret;760 int ret;
761 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
762 if (creds == NULL) {
763 PyErr_Format(PyExc_TypeError, "Credentials expected");
764 return NULL;
765 }
588766
589 if (!PyArg_ParseTuple(args, "s|iO", &newval, &_obt, &py_lp_ctx))767 if (!PyArg_ParseTuple(args, "s|iO", &newval, &_obt, &py_lp_ctx))
590 return NULL;768 return NULL;
@@ -601,7 +779,7 @@ static PyObject *py_creds_set_named_ccache(PyObject *self, PyObject *args)
601 return NULL;779 return NULL;
602 }780 }
603781
604 ret = cli_credentials_set_ccache(PyCredentials_AsCliCredentials(self),782 ret = cli_credentials_set_ccache(creds,
605 lp_ctx,783 lp_ctx,
606 newval, CRED_SPECIFIED,784 newval, CRED_SPECIFIED,
607 &error_string);785 &error_string);
@@ -620,11 +798,16 @@ static PyObject *py_creds_set_named_ccache(PyObject *self, PyObject *args)
620static PyObject *py_creds_set_gensec_features(PyObject *self, PyObject *args)798static PyObject *py_creds_set_gensec_features(PyObject *self, PyObject *args)
621{799{
622 unsigned int gensec_features;800 unsigned int gensec_features;
801 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
802 if (creds == NULL) {
803 PyErr_Format(PyExc_TypeError, "Credentials expected");
804 return NULL;
805 }
623806
624 if (!PyArg_ParseTuple(args, "I", &gensec_features))807 if (!PyArg_ParseTuple(args, "I", &gensec_features))
625 return NULL;808 return NULL;
626809
627 cli_credentials_set_gensec_features(PyCredentials_AsCliCredentials(self), gensec_features);810 cli_credentials_set_gensec_features(creds, gensec_features);
628811
629 Py_RETURN_NONE;812 Py_RETURN_NONE;
630}813}
@@ -632,8 +815,13 @@ static PyObject *py_creds_set_gensec_features(PyObject *self, PyObject *args)
632static PyObject *py_creds_get_gensec_features(PyObject *self, PyObject *args)815static PyObject *py_creds_get_gensec_features(PyObject *self, PyObject *args)
633{816{
634 unsigned int gensec_features;817 unsigned int gensec_features;
818 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
819 if (creds == NULL) {
820 PyErr_Format(PyExc_TypeError, "Credentials expected");
821 return NULL;
822 }
635823
636 gensec_features = cli_credentials_get_gensec_features(PyCredentials_AsCliCredentials(self));824 gensec_features = cli_credentials_get_gensec_features(creds);
637 return PyInt_FromLong(gensec_features);825 return PyInt_FromLong(gensec_features);
638}826}
639827
@@ -644,6 +832,7 @@ static PyObject *py_creds_new_client_authenticator(PyObject *self,
644 struct cli_credentials *creds = NULL;832 struct cli_credentials *creds = NULL;
645 struct netlogon_creds_CredentialState *nc = NULL;833 struct netlogon_creds_CredentialState *nc = NULL;
646 PyObject *ret = NULL;834 PyObject *ret = NULL;
835 NTSTATUS status;
647836
648 creds = PyCredentials_AsCliCredentials(self);837 creds = PyCredentials_AsCliCredentials(self);
649 if (creds == NULL) {838 if (creds == NULL) {
@@ -660,9 +849,13 @@ static PyObject *py_creds_new_client_authenticator(PyObject *self,
660 return NULL;849 return NULL;
661 }850 }
662851
663 netlogon_creds_client_authenticator(852 status = netlogon_creds_client_authenticator(nc, &auth);
664 nc,853 if (!NT_STATUS_IS_OK(status)) {
665 &auth);854 PyErr_SetString(PyExc_ValueError,
855 "Failed to create client authenticator");
856 return NULL;
857 }
858
666 ret = Py_BuildValue("{s"PYARG_BYTES_LEN"si}",859 ret = Py_BuildValue("{s"PYARG_BYTES_LEN"si}",
667 "credential",860 "credential",
668 (const char *) &auth.cred, sizeof(auth.cred),861 (const char *) &auth.cred, sizeof(auth.cred),
@@ -673,12 +866,17 @@ static PyObject *py_creds_new_client_authenticator(PyObject *self,
673static PyObject *py_creds_set_secure_channel_type(PyObject *self, PyObject *args)866static PyObject *py_creds_set_secure_channel_type(PyObject *self, PyObject *args)
674{867{
675 unsigned int channel_type;868 unsigned int channel_type;
869 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
870 if (creds == NULL) {
871 PyErr_Format(PyExc_TypeError, "Credentials expected");
872 return NULL;
873 }
676874
677 if (!PyArg_ParseTuple(args, "I", &channel_type))875 if (!PyArg_ParseTuple(args, "I", &channel_type))
678 return NULL;876 return NULL;
679877
680 cli_credentials_set_secure_channel_type(878 cli_credentials_set_secure_channel_type(
681 PyCredentials_AsCliCredentials(self),879 creds,
682 channel_type);880 channel_type);
683881
684 Py_RETURN_NONE;882 Py_RETURN_NONE;
@@ -687,9 +885,13 @@ static PyObject *py_creds_set_secure_channel_type(PyObject *self, PyObject *args
687static PyObject *py_creds_get_secure_channel_type(PyObject *self, PyObject *args)885static PyObject *py_creds_get_secure_channel_type(PyObject *self, PyObject *args)
688{886{
689 enum netr_SchannelType channel_type = SEC_CHAN_NULL;887 enum netr_SchannelType channel_type = SEC_CHAN_NULL;
888 struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
889 if (creds == NULL) {
890 PyErr_Format(PyExc_TypeError, "Credentials expected");
891 return NULL;
892 }
690893
691 channel_type = cli_credentials_get_secure_channel_type(894 channel_type = cli_credentials_get_secure_channel_type(creds);
692 PyCredentials_AsCliCredentials(self));
693895
694 return PyInt_FromLong(channel_type);896 return PyInt_FromLong(channel_type);
695}897}
@@ -704,11 +906,20 @@ static PyObject *py_creds_encrypt_netr_crypt_password(PyObject *self,
704 PyObject *py_cp = Py_None;906 PyObject *py_cp = Py_None;
705907
706 creds = PyCredentials_AsCliCredentials(self);908 creds = PyCredentials_AsCliCredentials(self);
909 if (creds == NULL) {
910 PyErr_Format(PyExc_TypeError, "Credentials expected");
911 return NULL;
912 }
707913
708 if (!PyArg_ParseTuple(args, "|O", &py_cp)) {914 if (!PyArg_ParseTuple(args, "O", &py_cp)) {
709 return NULL;915 return NULL;
710 }916 }
917
711 pwd = pytalloc_get_type(py_cp, struct netr_CryptPassword);918 pwd = pytalloc_get_type(py_cp, struct netr_CryptPassword);
919 if (pwd == NULL) {
920 /* pytalloc_get_type sets TypeError */
921 return NULL;
922 }
712 data.length = sizeof(struct netr_CryptPassword);923 data.length = sizeof(struct netr_CryptPassword);
713 data.data = (uint8_t *)pwd;924 data.data = (uint8_t *)pwd;
714 status = netlogon_creds_session_encrypt(creds->netlogon_creds, data);925 status = netlogon_creds_session_encrypt(creds->netlogon_creds, data);
diff --git a/auth/credentials/pycredentials.h b/auth/credentials/pycredentials.h
index a136a21..bf6962c 100644
--- a/auth/credentials/pycredentials.h
+++ b/auth/credentials/pycredentials.h
@@ -20,12 +20,21 @@
20#define _PYCREDENTIALS_H_20#define _PYCREDENTIALS_H_
2121
22#include "auth/credentials/credentials.h"22#include "auth/credentials/credentials.h"
23#include "librpc/rpc/pyrpc_util.h"
23#include <pytalloc.h>24#include <pytalloc.h>
2425
25extern PyTypeObject PyCredentials;26extern PyTypeObject PyCredentials;
26extern PyTypeObject PyCredentialCacheContainer;27extern PyTypeObject PyCredentialCacheContainer;
27#define PyCredentials_Check(py_obj) PyObject_TypeCheck(py_obj, &PyCredentials)28#define PyCredentials_Check(py_obj) \
28#define PyCredentials_AsCliCredentials(py_obj) pytalloc_get_type(py_obj, struct cli_credentials)29 py_check_dcerpc_type(py_obj, "samba.credentials", "Credentials")
29#define cli_credentials_from_py_object(py_obj) (py_obj == Py_None)?cli_credentials_init_anon(NULL):PyCredentials_AsCliCredentials(py_obj)30
31#define PyCredentials_AsCliCredentials(py_obj) \
32 (PyCredentials_Check(py_obj) ? \
33 pytalloc_get_type(py_obj, struct cli_credentials) : NULL)
34
35#define cli_credentials_from_py_object(py_obj) \
36 ((py_obj == Py_None) ? \
37 cli_credentials_init_anon(NULL) : \
38 PyCredentials_AsCliCredentials(py_obj))
3039
31#endif /* _PYCREDENTIALS_H_ */40#endif /* _PYCREDENTIALS_H_ */
diff --git a/auth/gensec/gensec_util.c b/auth/gensec/gensec_util.c
index 20c9c2a..e185acc 100644
--- a/auth/gensec/gensec_util.c
+++ b/auth/gensec/gensec_util.c
@@ -76,7 +76,7 @@ NTSTATUS gensec_generate_session_info_pac(TALLOC_CTX *mem_ctx,
76static bool gensec_gssapi_check_oid(const DATA_BLOB *blob, const char *oid)76static bool gensec_gssapi_check_oid(const DATA_BLOB *blob, const char *oid)
77{77{
78 bool ret = false;78 bool ret = false;
79 struct asn1_data *data = asn1_init(NULL);79 struct asn1_data *data = asn1_init(NULL, ASN1_MAX_TREE_DEPTH);
8080
81 if (!data) return false;81 if (!data) return false;
8282
diff --git a/auth/gensec/schannel.c b/auth/gensec/schannel.c
index 74a3eb5..0cdae14 100644
--- a/auth/gensec/schannel.c
+++ b/auth/gensec/schannel.c
@@ -33,9 +33,12 @@
33#include "librpc/gen_ndr/dcerpc.h"33#include "librpc/gen_ndr/dcerpc.h"
34#include "param/param.h"34#include "param/param.h"
35#include "auth/gensec/gensec_toplevel_proto.h"35#include "auth/gensec/gensec_toplevel_proto.h"
36#include "lib/crypto/aes.h"
37#include "libds/common/roles.h"36#include "libds/common/roles.h"
3837
38#ifndef HAVE_GNUTLS_AES_CFB8
39#include "lib/crypto/aes.h"
40#endif
41
39#include "lib/crypto/gnutls_helpers.h"42#include "lib/crypto/gnutls_helpers.h"
40#include <gnutls/gnutls.h>43#include <gnutls/gnutls.h>
41#include <gnutls/crypto.h>44#include <gnutls/crypto.h>
@@ -147,6 +150,43 @@ static NTSTATUS netsec_do_seq_num(struct schannel_state *state,
147 uint8_t seq_num[8])150 uint8_t seq_num[8])
148{151{
149 if (state->creds->negotiate_flags & NETLOGON_NEG_SUPPORTS_AES) {152 if (state->creds->negotiate_flags & NETLOGON_NEG_SUPPORTS_AES) {
153#ifdef HAVE_GNUTLS_AES_CFB8
154 gnutls_cipher_hd_t cipher_hnd = NULL;
155 gnutls_datum_t key = {
156 .data = state->creds->session_key,
157 .size = sizeof(state->creds->session_key),
158 };
159 uint32_t iv_size =
160 gnutls_cipher_get_iv_size(GNUTLS_CIPHER_AES_128_CFB8);
161 uint8_t _iv[iv_size];
162 gnutls_datum_t iv = {
163 .data = _iv,
164 .size = iv_size,
165 };
166 int rc;
167
168 ZERO_ARRAY(_iv);
169
170 memcpy(iv.data + 0, checksum, 8);
171 memcpy(iv.data + 8, checksum, 8);
172
173 rc = gnutls_cipher_init(&cipher_hnd,
174 GNUTLS_CIPHER_AES_128_CFB8,
175 &key,
176 &iv);
177 if (rc < 0) {
178 return gnutls_error_to_ntstatus(rc,
179 NT_STATUS_CRYPTO_SYSTEM_INVALID);
180 }
181
182 rc = gnutls_cipher_encrypt(cipher_hnd, seq_num, 8);
183 gnutls_cipher_deinit(cipher_hnd);
184 if (rc < 0) {
185 return gnutls_error_to_ntstatus(rc,
186 NT_STATUS_CRYPTO_SYSTEM_INVALID);
187 }
188
189#else /* NOT HAVE_GNUTLS_AES_CFB8 */
150 AES_KEY key;190 AES_KEY key;
151 uint8_t iv[AES_BLOCK_SIZE];191 uint8_t iv[AES_BLOCK_SIZE];
152192
@@ -156,6 +196,7 @@ static NTSTATUS netsec_do_seq_num(struct schannel_state *state,
156 memcpy(iv+8, checksum, 8);196 memcpy(iv+8, checksum, 8);
157197
158 aes_cfb8_encrypt(seq_num, seq_num, 8, &key, iv, AES_ENCRYPT);198 aes_cfb8_encrypt(seq_num, seq_num, 8, &key, iv, AES_ENCRYPT);
199#endif /* HAVE_GNUTLS_AES_CFB8 */
159 } else {200 } else {
160 static const uint8_t zeros[4];201 static const uint8_t zeros[4];
161 uint8_t _sequence_key[16];202 uint8_t _sequence_key[16];
@@ -220,6 +261,100 @@ static NTSTATUS netsec_do_seal(struct schannel_state *state,
220 bool forward)261 bool forward)
221{262{
222 if (state->creds->negotiate_flags & NETLOGON_NEG_SUPPORTS_AES) {263 if (state->creds->negotiate_flags & NETLOGON_NEG_SUPPORTS_AES) {
264#ifdef HAVE_GNUTLS_AES_CFB8
265 gnutls_cipher_hd_t cipher_hnd = NULL;
266 uint8_t sess_kf0[16] = {0};
267 gnutls_datum_t key = {
268 .data = sess_kf0,
269 .size = sizeof(sess_kf0),
270 };
271 uint32_t iv_size =
272 gnutls_cipher_get_iv_size(GNUTLS_CIPHER_AES_128_CFB8);
273 uint8_t _iv[iv_size];
274 gnutls_datum_t iv = {
275 .data = _iv,
276 .size = iv_size,
277 };
278 uint32_t i;
279 int rc;
280
281 for (i = 0; i < key.size; i++) {
282 key.data[i] = state->creds->session_key[i] ^ 0xf0;
283 }
284
285 ZERO_ARRAY(_iv);
286
287 memcpy(iv.data + 0, seq_num, 8);
288 memcpy(iv.data + 8, seq_num, 8);
289
290 rc = gnutls_cipher_init(&cipher_hnd,
291 GNUTLS_CIPHER_AES_128_CFB8,
292 &key,
293 &iv);
294 if (rc < 0) {
295 DBG_ERR("ERROR: gnutls_cipher_init: %s\n",
296 gnutls_strerror(rc));
297 return NT_STATUS_NO_MEMORY;
298 }
299
300 if (forward) {
301 rc = gnutls_cipher_encrypt(cipher_hnd,
302 confounder,
303 8);
304 if (rc < 0) {
305 gnutls_cipher_deinit(cipher_hnd);
306 return gnutls_error_to_ntstatus(rc, NT_STATUS_CRYPTO_SYSTEM_INVALID);
307 }
308
309 rc = gnutls_cipher_encrypt(cipher_hnd,
310 data,
311 length);
312 if (rc < 0) {
313 gnutls_cipher_deinit(cipher_hnd);
314 return gnutls_error_to_ntstatus(rc, NT_STATUS_CRYPTO_SYSTEM_INVALID);
315 }
316 } else {
317
318 /*
319 * Workaround bug present in gnutls 3.6.8:
320 *
321 * gnutls_cipher_decrypt() uses an optimization
322 * internally that breaks decryption when processing
323 * buffers with their length not being a multiple
324 * of the blocksize.
325 */
326
327 uint8_t tmp[16] = { 0, };
328 uint32_t tmp_dlength = MIN(length, sizeof(tmp) - 8);
329
330 memcpy(tmp, confounder, 8);
331 memcpy(tmp + 8, data, tmp_dlength);
332
333 rc = gnutls_cipher_decrypt(cipher_hnd,
334 tmp,
335 8 + tmp_dlength);
336 if (rc < 0) {
337 ZERO_STRUCT(tmp);
338 gnutls_cipher_deinit(cipher_hnd);
339 return gnutls_error_to_ntstatus(rc, NT_STATUS_CRYPTO_SYSTEM_INVALID);
340 }
341
342 memcpy(confounder, tmp, 8);
343 memcpy(data, tmp + 8, tmp_dlength);
344 ZERO_STRUCT(tmp);
345
346 if (length > tmp_dlength) {
347 rc = gnutls_cipher_decrypt(cipher_hnd,
348 data + tmp_dlength,
349 length - tmp_dlength);
350 if (rc < 0) {
351 gnutls_cipher_deinit(cipher_hnd);
352 return gnutls_error_to_ntstatus(rc, NT_STATUS_CRYPTO_SYSTEM_INVALID);
353 }
354 }
355 }
356 gnutls_cipher_deinit(cipher_hnd);
357#else /* NOT HAVE_GNUTLS_AES_CFB8 */
223 AES_KEY key;358 AES_KEY key;
224 uint8_t iv[AES_BLOCK_SIZE];359 uint8_t iv[AES_BLOCK_SIZE];
225 uint8_t sess_kf0[16];360 uint8_t sess_kf0[16];
@@ -241,6 +376,7 @@ static NTSTATUS netsec_do_seal(struct schannel_state *state,
241 aes_cfb8_encrypt(confounder, confounder, 8, &key, iv, AES_DECRYPT);376 aes_cfb8_encrypt(confounder, confounder, 8, &key, iv, AES_DECRYPT);
242 aes_cfb8_encrypt(data, data, length, &key, iv, AES_DECRYPT);377 aes_cfb8_encrypt(data, data, length, &key, iv, AES_DECRYPT);
243 }378 }
379#endif /* HAVE_GNUTLS_AES_CFB8 */
244 } else {380 } else {
245 gnutls_cipher_hd_t cipher_hnd;381 gnutls_cipher_hd_t cipher_hnd;
246 uint8_t _sealing_key[16];382 uint8_t _sealing_key[16];
@@ -266,7 +402,7 @@ static NTSTATUS netsec_do_seal(struct schannel_state *state,
266 digest2);402 digest2);
267 if (rc < 0) {403 if (rc < 0) {
268 ZERO_ARRAY(digest2);404 ZERO_ARRAY(digest2);
269 return NT_STATUS_INTERNAL_ERROR;405 return gnutls_error_to_ntstatus(rc, NT_STATUS_HMAC_NOT_SUPPORTED);
270 }406 }
271407
272 rc = gnutls_hmac_fast(GNUTLS_MAC_MD5,408 rc = gnutls_hmac_fast(GNUTLS_MAC_MD5,
@@ -278,7 +414,7 @@ static NTSTATUS netsec_do_seal(struct schannel_state *state,
278414
279 ZERO_ARRAY(digest2);415 ZERO_ARRAY(digest2);
280 if (rc < 0) {416 if (rc < 0) {
281 return NT_STATUS_INTERNAL_ERROR;417 return gnutls_error_to_ntstatus(rc, NT_STATUS_HMAC_NOT_SUPPORTED);
282 }418 }
283419
284 rc = gnutls_cipher_init(&cipher_hnd,420 rc = gnutls_cipher_init(&cipher_hnd,
@@ -337,7 +473,7 @@ static NTSTATUS netsec_do_sign(struct schannel_state *state,
337 state->creds->session_key,473 state->creds->session_key,
338 sizeof(state->creds->session_key));474 sizeof(state->creds->session_key));
339 if (rc < 0) {475 if (rc < 0) {
340 return NT_STATUS_NO_MEMORY;476 return gnutls_error_to_ntstatus(rc, NT_STATUS_HMAC_NOT_SUPPORTED);
341 }477 }
342478
343 if (confounder) {479 if (confounder) {
diff --git a/auth/gensec/spnego.c b/auth/gensec/spnego.c
index ddbe03c..db8a91b 100644
--- a/auth/gensec/spnego.c
+++ b/auth/gensec/spnego.c
@@ -72,7 +72,7 @@ struct spnego_neg_ops {
72 * 'in_next'. Note that 'in_mem_ctx' is just passed as a hint, the72 * 'in_next'. Note that 'in_mem_ctx' is just passed as a hint, the
73 * caller should treat 'in_next' as const and don't attempt to free the73 * caller should treat 'in_next' as const and don't attempt to free the
74 * content. NT_STATUS_OK indicates the finish hook should be invoked74 * content. NT_STATUS_OK indicates the finish hook should be invoked
75 * directly withing the need of gensec_update() on the subcontext.75 * directly within the need of gensec_update() on the subcontext.
76 * Every other error indicates an error that's returned to the caller.76 * Every other error indicates an error that's returned to the caller.
77 */77 */
78 NTSTATUS (*start_fn)(struct gensec_security *gensec_security,78 NTSTATUS (*start_fn)(struct gensec_security *gensec_security,
@@ -90,7 +90,7 @@ struct spnego_neg_ops {
90 * 'in_next'. Note that 'in_mem_ctx' is just passed as a hint, the90 * 'in_next'. Note that 'in_mem_ctx' is just passed as a hint, the
91 * caller should treat 'in_next' as const and don't attempt to free the91 * caller should treat 'in_next' as const and don't attempt to free the
92 * content. NT_STATUS_OK indicates the finish hook should be invoked92 * content. NT_STATUS_OK indicates the finish hook should be invoked
93 * directly withing the need of gensec_update() on the subcontext.93 * directly within the need of gensec_update() on the subcontext.
94 * Every other error indicates an error that's returned to the caller.94 * Every other error indicates an error that's returned to the caller.
95 */95 */
96 NTSTATUS (*step_fn)(struct gensec_security *gensec_security,96 NTSTATUS (*step_fn)(struct gensec_security *gensec_security,
@@ -900,8 +900,6 @@ static NTSTATUS gensec_spnego_client_negTokenTarg_finish(
900 NTSTATUS status;900 NTSTATUS status;
901 struct spnego_data spnego_out;901 struct spnego_data spnego_out;
902902
903 status = sub_status;
904
905 if (!spnego_state->sub_sec_ready) {903 if (!spnego_state->sub_sec_ready) {
906 /*904 /*
907 * We're not yet ready to deal with signatures.905 * We're not yet ready to deal with signatures.
diff --git a/auth/ntlmssp/ntlmssp_client.c b/auth/ntlmssp/ntlmssp_client.c
index df891f8..58e4e3d 100644
--- a/auth/ntlmssp/ntlmssp_client.c
+++ b/auth/ntlmssp/ntlmssp_client.c
@@ -673,12 +673,20 @@ NTSTATUS ntlmssp_client_challenge(struct gensec_security *gensec_security,
673 && ntlmssp_state->allow_lm_key && lm_session_key.length == 16) {673 && ntlmssp_state->allow_lm_key && lm_session_key.length == 16) {
674 DATA_BLOB new_session_key = data_blob_talloc(mem_ctx, NULL, 16);674 DATA_BLOB new_session_key = data_blob_talloc(mem_ctx, NULL, 16);
675 if (lm_response.length == 24) {675 if (lm_response.length == 24) {
676 SMBsesskeygen_lm_sess_key(lm_session_key.data, lm_response.data,676 nt_status = SMBsesskeygen_lm_sess_key(lm_session_key.data,
677 new_session_key.data);677 lm_response.data,
678 new_session_key.data);
679 if (!NT_STATUS_IS_OK(nt_status)) {
680 return nt_status;
681 }
678 } else {682 } else {
679 static const uint8_t zeros[24];683 static const uint8_t zeros[24];
680 SMBsesskeygen_lm_sess_key(lm_session_key.data, zeros,684 nt_status = SMBsesskeygen_lm_sess_key(lm_session_key.data,
681 new_session_key.data);685 zeros,
686 new_session_key.data);
687 if (!NT_STATUS_IS_OK(nt_status)) {
688 return nt_status;
689 }
682 }690 }
683 session_key = new_session_key;691 session_key = new_session_key;
684 dump_data_pw("LM session key\n", session_key.data, session_key.length);692 dump_data_pw("LM session key\n", session_key.data, session_key.length);
@@ -690,17 +698,43 @@ NTSTATUS ntlmssp_client_challenge(struct gensec_security *gensec_security,
690 if (ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_KEY_EXCH) {698 if (ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_KEY_EXCH) {
691 /* Make up a new session key */699 /* Make up a new session key */
692 uint8_t client_session_key[16];700 uint8_t client_session_key[16];
693 generate_secret_buffer(client_session_key, sizeof(client_session_key));701 gnutls_cipher_hd_t cipher_hnd;
702 gnutls_datum_t enc_session_key = {
703 .data = session_key.data,
704 .size = session_key.length,
705 };
706
707 generate_random_buffer(client_session_key, sizeof(client_session_key));
694708
695 /* Encrypt the new session key with the old one */709 /* Encrypt the new session key with the old one */
696 encrypted_session_key = data_blob_talloc(ntlmssp_state,710 encrypted_session_key = data_blob_talloc(ntlmssp_state,
697 client_session_key, sizeof(client_session_key));711 client_session_key, sizeof(client_session_key));
698 dump_data_pw("KEY_EXCH session key:\n", encrypted_session_key.data, encrypted_session_key.length);712 dump_data_pw("KEY_EXCH session key:\n", encrypted_session_key.data, encrypted_session_key.length);
699 arcfour_crypt(encrypted_session_key.data, session_key.data, encrypted_session_key.length);713
714 rc = gnutls_cipher_init(&cipher_hnd,
715 GNUTLS_CIPHER_ARCFOUR_128,
716 &enc_session_key,
717 NULL);
718 if (rc < 0) {
719 nt_status = gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
720 ZERO_ARRAY(client_session_key);
721 goto done;
722 }
723 rc = gnutls_cipher_encrypt(cipher_hnd,
724 encrypted_session_key.data,
725 encrypted_session_key.length);
726 gnutls_cipher_deinit(cipher_hnd);
727 if (rc < 0) {
728 nt_status = gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
729 ZERO_ARRAY(client_session_key);
730 goto done;
731 }
732
700 dump_data_pw("KEY_EXCH session key (enc):\n", encrypted_session_key.data, encrypted_session_key.length);733 dump_data_pw("KEY_EXCH session key (enc):\n", encrypted_session_key.data, encrypted_session_key.length);
701734
702 /* Mark the new session key as the 'real' session key */735 /* Mark the new session key as the 'real' session key */
703 session_key = data_blob_talloc(mem_ctx, client_session_key, sizeof(client_session_key));736 session_key = data_blob_talloc(mem_ctx, client_session_key, sizeof(client_session_key));
737 ZERO_ARRAY(client_session_key);
704 }738 }
705739
706 /* this generates the actual auth packet */740 /* this generates the actual auth packet */
diff --git a/auth/ntlmssp/ntlmssp_private.h b/auth/ntlmssp/ntlmssp_private.h
index 95ec637..4d84e33 100644
--- a/auth/ntlmssp/ntlmssp_private.h
+++ b/auth/ntlmssp/ntlmssp_private.h
@@ -20,14 +20,15 @@
2020
21/* For structures internal to the NTLMSSP implementation that should not be exposed */21/* For structures internal to the NTLMSSP implementation that should not be exposed */
2222
23#include "../lib/crypto/arcfour.h"23#include <gnutls/gnutls.h>
24#include <gnutls/crypto.h>
2425
25struct auth_session_info;26struct auth_session_info;
2627
27struct ntlmssp_crypt_direction {28struct ntlmssp_crypt_direction {
28 uint32_t seq_num;29 uint32_t seq_num;
29 uint8_t sign_key[16];30 uint8_t sign_key[16];
30 struct arcfour_state seal_state;31 gnutls_cipher_hd_t seal_state;
31};32};
3233
33union ntlmssp_crypt_state {34union ntlmssp_crypt_state {
diff --git a/auth/ntlmssp/ntlmssp_server.c b/auth/ntlmssp/ntlmssp_server.c
index 5a56a4d..0012382 100644
--- a/auth/ntlmssp/ntlmssp_server.c
+++ b/auth/ntlmssp/ntlmssp_server.c
@@ -335,8 +335,8 @@ struct tevent_req *ntlmssp_server_auth_send(TALLOC_CTX *mem_ctx,
335 struct gensec_ntlmssp_context);335 struct gensec_ntlmssp_context);
336 struct auth4_context *auth_context = gensec_security->auth_context;336 struct auth4_context *auth_context = gensec_security->auth_context;
337 struct tevent_req *req = NULL;337 struct tevent_req *req = NULL;
338 struct tevent_req *subreq = NULL;
338 struct ntlmssp_server_auth_state *state = NULL;339 struct ntlmssp_server_auth_state *state = NULL;
339 uint8_t authoritative = 0;
340 NTSTATUS status;340 NTSTATUS status;
341341
342 req = tevent_req_create(mem_ctx, &state,342 req = tevent_req_create(mem_ctx, &state,
@@ -355,54 +355,13 @@ struct tevent_req *ntlmssp_server_auth_send(TALLOC_CTX *mem_ctx,
355 return tevent_req_post(req, ev);355 return tevent_req_post(req, ev);
356 }356 }
357357
358 if (auth_context->check_ntlm_password_send != NULL) {358 subreq = auth_context->check_ntlm_password_send(
359 struct tevent_req *subreq = NULL;359 state, ev, auth_context, state->user_info);
360360 if (tevent_req_nomem(subreq, req)) {
361 subreq = auth_context->check_ntlm_password_send(state, ev,
362 auth_context,
363 state->user_info);
364 if (tevent_req_nomem(subreq, req)) {
365 return tevent_req_post(req, ev);
366 }
367 tevent_req_set_callback(subreq,
368 ntlmssp_server_auth_done,
369 req);
370 return req;
371 }
372
373 if (auth_context->check_ntlm_password == NULL) {
374 tevent_req_nterror(req, NT_STATUS_INTERNAL_ERROR);
375 return tevent_req_post(req, ev);
376 }
377
378 status = auth_context->check_ntlm_password(auth_context,
379 gensec_ntlmssp,
380 state->user_info,
381 &authoritative,
382 &gensec_ntlmssp->server_returned_info,
383 &state->user_session_key,
384 &state->lm_session_key);
385 if (!NT_STATUS_IS_OK(status)) {
386 DBG_INFO("Checking NTLMSSP password for %s\\%s failed: %s\n",
387 state->user_info->client.domain_name,
388 state->user_info->client.account_name,
389 nt_errstr(status));
390 }
391 if (tevent_req_nterror(req, status)) {
392 return tevent_req_post(req, ev);361 return tevent_req_post(req, ev);
393 }362 }
394 talloc_steal(state, state->user_session_key.data);363 tevent_req_set_callback(subreq, ntlmssp_server_auth_done, req);
395 talloc_steal(state, state->lm_session_key.data);364 return req;
396
397 status = ntlmssp_server_postauth(gensec_security,
398 gensec_ntlmssp,
399 state, in);
400 if (tevent_req_nterror(req, status)) {
401 return tevent_req_post(req, ev);
402 }
403
404 tevent_req_done(req);
405 return tevent_req_post(req, ev);
406}365}
407366
408/**367/**
@@ -970,8 +929,12 @@ static NTSTATUS ntlmssp_server_postauth(struct gensec_security *gensec_security,
970 if (session_key.data == NULL) {929 if (session_key.data == NULL) {
971 return NT_STATUS_NO_MEMORY;930 return NT_STATUS_NO_MEMORY;
972 }931 }
973 SMBsesskeygen_lm_sess_key(lm_session_key.data, ntlmssp_state->lm_resp.data,932 nt_status = SMBsesskeygen_lm_sess_key(lm_session_key.data,
974 session_key.data);933 ntlmssp_state->lm_resp.data,
934 session_key.data);
935 if (!NT_STATUS_IS_OK(nt_status)) {
936 return nt_status;
937 }
975 DEBUG(10,("ntlmssp_server_auth: Created NTLM session key.\n"));938 DEBUG(10,("ntlmssp_server_auth: Created NTLM session key.\n"));
976 } else {939 } else {
977 static const uint8_t zeros[24] = {0, };940 static const uint8_t zeros[24] = {0, };
@@ -980,8 +943,11 @@ static NTSTATUS ntlmssp_server_postauth(struct gensec_security *gensec_security,
980 if (session_key.data == NULL) {943 if (session_key.data == NULL) {
981 return NT_STATUS_NO_MEMORY;944 return NT_STATUS_NO_MEMORY;
982 }945 }
983 SMBsesskeygen_lm_sess_key(zeros, zeros,946 nt_status = SMBsesskeygen_lm_sess_key(zeros, zeros,
984 session_key.data);947 session_key.data);
948 if (!NT_STATUS_IS_OK(nt_status)) {
949 return nt_status;
950 }
985 DEBUG(10,("ntlmssp_server_auth: Created NTLM session key.\n"));951 DEBUG(10,("ntlmssp_server_auth: Created NTLM session key.\n"));
986 }952 }
987 dump_data_pw("LM session key:\n", session_key.data,953 dump_data_pw("LM session key:\n", session_key.data,
diff --git a/auth/ntlmssp/ntlmssp_sign.c b/auth/ntlmssp/ntlmssp_sign.c
index 8ba2e24..89f1aa0 100644
--- a/auth/ntlmssp/ntlmssp_sign.c
+++ b/auth/ntlmssp/ntlmssp_sign.c
@@ -47,9 +47,9 @@
47 */47 */
4848
49static void dump_arc4_state(const char *description,49static void dump_arc4_state(const char *description,
50 struct arcfour_state *state)50 gnutls_cipher_hd_t *state)
51{51{
52 dump_data_pw(description, state->sbox, sizeof(state->sbox));52 DBG_DEBUG("%s\n", description);
53}53}
5454
55static NTSTATUS calc_ntlmv2_key(uint8_t subkey[16],55static NTSTATUS calc_ntlmv2_key(uint8_t subkey[16],
@@ -90,13 +90,13 @@ static NTSTATUS ntlmssp_make_packet_signature(struct ntlmssp_state *ntlmssp_stat
90 enum ntlmssp_direction direction,90 enum ntlmssp_direction direction,
91 DATA_BLOB *sig, bool encrypt_sig)91 DATA_BLOB *sig, bool encrypt_sig)
92{92{
93 NTSTATUS status;93 NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
94 int rc;
9495
95 if (ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_NTLM2) {96 if (ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_NTLM2) {
96 gnutls_hmac_hd_t hmac_hnd = NULL;97 gnutls_hmac_hd_t hmac_hnd = NULL;
97 uint8_t digest[16];98 uint8_t digest[16];
98 uint8_t seq_num[4];99 uint8_t seq_num[4];
99 int rc;
100100
101 *sig = data_blob_talloc(sig_mem_ctx, NULL, NTLMSSP_SIG_SIZE);101 *sig = data_blob_talloc(sig_mem_ctx, NULL, NTLMSSP_SIG_SIZE);
102 if (!sig->data) {102 if (!sig->data) {
@@ -158,14 +158,24 @@ static NTSTATUS ntlmssp_make_packet_signature(struct ntlmssp_state *ntlmssp_stat
158 if (encrypt_sig && (ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_KEY_EXCH)) {158 if (encrypt_sig && (ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_KEY_EXCH)) {
159 switch (direction) {159 switch (direction) {
160 case NTLMSSP_SEND:160 case NTLMSSP_SEND:
161 arcfour_crypt_sbox(&ntlmssp_state->crypt->ntlm2.sending.seal_state,161 rc = gnutls_cipher_encrypt(ntlmssp_state->crypt->ntlm2.sending.seal_state,
162 digest, 8);162 digest,
163 8);
163 break;164 break;
164 case NTLMSSP_RECEIVE:165 case NTLMSSP_RECEIVE:
165 arcfour_crypt_sbox(&ntlmssp_state->crypt->ntlm2.receiving.seal_state,166 rc = gnutls_cipher_encrypt(ntlmssp_state->crypt->ntlm2.receiving.seal_state,
166 digest, 8);167 digest,
168 8);
167 break;169 break;
168 }170 }
171 if (rc < 0) {
172 DBG_ERR("gnutls_cipher_encrypt for NTLMv2 EXCH "
173 "%s packet signature failed: %s\n",
174 direction == NTLMSSP_SEND ?
175 "send" : "receive",
176 gnutls_strerror(rc));
177 return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
178 }
169 }179 }
170180
171 SIVAL(sig->data, 0, NTLMSSP_SIGN_VERSION);181 SIVAL(sig->data, 0, NTLMSSP_SIGN_VERSION);
@@ -194,8 +204,15 @@ static NTSTATUS ntlmssp_make_packet_signature(struct ntlmssp_state *ntlmssp_stat
194204
195 dump_arc4_state("ntlmssp hash: \n",205 dump_arc4_state("ntlmssp hash: \n",
196 &ntlmssp_state->crypt->ntlm.seal_state);206 &ntlmssp_state->crypt->ntlm.seal_state);
197 arcfour_crypt_sbox(&ntlmssp_state->crypt->ntlm.seal_state,207 rc = gnutls_cipher_encrypt(ntlmssp_state->crypt->ntlm.seal_state,
198 sig->data+4, sig->length-4);208 sig->data + 4,
209 sig->length - 4);
210 if (rc < 0) {
211 DBG_ERR("gnutls_cipher_encrypt for NTLM packet "
212 "signature failed: %s\n",
213 gnutls_strerror(rc));
214 return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
215 }
199 }216 }
200217
201 return NT_STATUS_OK;218 return NT_STATUS_OK;
@@ -317,6 +334,8 @@ NTSTATUS ntlmssp_seal_packet(struct ntlmssp_state *ntlmssp_state,
317 const uint8_t *whole_pdu, size_t pdu_length,334 const uint8_t *whole_pdu, size_t pdu_length,
318 DATA_BLOB *sig)335 DATA_BLOB *sig)
319{336{
337 int rc;
338
320 if (!(ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_SEAL)) {339 if (!(ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_SEAL)) {
321 DEBUG(3, ("NTLMSSP Sealing not negotiated - cannot seal packet!\n"));340 DEBUG(3, ("NTLMSSP Sealing not negotiated - cannot seal packet!\n"));
322 return NT_STATUS_INVALID_PARAMETER;341 return NT_STATUS_INVALID_PARAMETER;
@@ -353,11 +372,25 @@ NTSTATUS ntlmssp_seal_packet(struct ntlmssp_state *ntlmssp_state,
353 return nt_status;372 return nt_status;
354 }373 }
355374
356 arcfour_crypt_sbox(&ntlmssp_state->crypt->ntlm2.sending.seal_state,375 rc = gnutls_cipher_encrypt(ntlmssp_state->crypt->ntlm2.sending.seal_state,
357 data, length);376 data,
377 length);
378 if (rc < 0) {
379 DBG_ERR("gnutls_cipher_encrypt ntlmv2 sealing the data "
380 "failed: %s\n",
381 gnutls_strerror(rc));
382 return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
383 }
358 if (ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_KEY_EXCH) {384 if (ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_KEY_EXCH) {
359 arcfour_crypt_sbox(&ntlmssp_state->crypt->ntlm2.sending.seal_state,385 rc = gnutls_cipher_encrypt(ntlmssp_state->crypt->ntlm2.sending.seal_state,
360 sig->data+4, 8);386 sig->data + 4,
387 8);
388 if (rc < 0) {
389 DBG_ERR("gnutls_cipher_encrypt ntlmv2 sealing "
390 "the EXCH signature data failed: %s\n",
391 gnutls_strerror(rc));
392 return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
393 }
361 }394 }
362 } else {395 } else {
363 NTSTATUS status;396 NTSTATUS status;
@@ -381,17 +414,30 @@ NTSTATUS ntlmssp_seal_packet(struct ntlmssp_state *ntlmssp_state,
381 * is not constant, but is is rather updated with414 * is not constant, but is is rather updated with
382 * each iteration415 * each iteration
383 */416 */
384
385 dump_arc4_state("ntlmv1 arc4 state:\n",417 dump_arc4_state("ntlmv1 arc4 state:\n",
386 &ntlmssp_state->crypt->ntlm.seal_state);418 &ntlmssp_state->crypt->ntlm.seal_state);
387 arcfour_crypt_sbox(&ntlmssp_state->crypt->ntlm.seal_state,419 rc = gnutls_cipher_encrypt(ntlmssp_state->crypt->ntlm.seal_state,
388 data, length);420 data,
421 length);
422 if (rc < 0) {
423 DBG_ERR("gnutls_cipher_encrypt ntlmv1 sealing data"
424 "failed: %s\n",
425 gnutls_strerror(rc));
426 return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
427 }
389428
390 dump_arc4_state("ntlmv1 arc4 state:\n",429 dump_arc4_state("ntlmv1 arc4 state:\n",
391 &ntlmssp_state->crypt->ntlm.seal_state);430 &ntlmssp_state->crypt->ntlm.seal_state);
392431
393 arcfour_crypt_sbox(&ntlmssp_state->crypt->ntlm.seal_state,432 rc = gnutls_cipher_encrypt(ntlmssp_state->crypt->ntlm.seal_state,
394 sig->data+4, sig->length-4);433 sig->data + 4,
434 sig->length - 4);
435 if (rc < 0) {
436 DBG_ERR("gnutls_cipher_encrypt ntlmv1 sealing signing "
437 "data failed: %s\n",
438 gnutls_strerror(rc));
439 return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
440 }
395441
396 ntlmssp_state->crypt->ntlm.seq_num++;442 ntlmssp_state->crypt->ntlm.seq_num++;
397 }443 }
@@ -412,6 +458,8 @@ NTSTATUS ntlmssp_unseal_packet(struct ntlmssp_state *ntlmssp_state,
412 const DATA_BLOB *sig)458 const DATA_BLOB *sig)
413{459{
414 NTSTATUS status;460 NTSTATUS status;
461 int rc;
462
415 if (!ntlmssp_state->session_key.length) {463 if (!ntlmssp_state->session_key.length) {
416 DEBUG(3, ("NO session key, cannot unseal packet\n"));464 DEBUG(3, ("NO session key, cannot unseal packet\n"));
417 return NT_STATUS_NO_USER_SESSION_KEY;465 return NT_STATUS_NO_USER_SESSION_KEY;
@@ -422,14 +470,29 @@ NTSTATUS ntlmssp_unseal_packet(struct ntlmssp_state *ntlmssp_state,
422470
423 if (ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_NTLM2) {471 if (ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_NTLM2) {
424 /* First unseal the data. */472 /* First unseal the data. */
425 arcfour_crypt_sbox(&ntlmssp_state->crypt->ntlm2.receiving.seal_state,473 rc = gnutls_cipher_decrypt(ntlmssp_state->crypt->ntlm2.receiving.seal_state,
426 data, length);474 data,
475 length);
476 if (rc < 0) {
477 DBG_ERR("gnutls_cipher_decrypt ntlmv2 unsealing the "
478 "data failed: %s\n",
479 gnutls_strerror(rc));
480 return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
481 }
427 dump_data_pw("ntlmv2 clear data\n", data, length);482 dump_data_pw("ntlmv2 clear data\n", data, length);
428 } else {483 } else {
429 arcfour_crypt_sbox(&ntlmssp_state->crypt->ntlm.seal_state,484 rc = gnutls_cipher_decrypt(ntlmssp_state->crypt->ntlm.seal_state,
430 data, length);485 data,
486 length);
487 if (rc < 0) {
488 DBG_ERR("gnutls_cipher_decrypt ntlmv1 unsealing the "
489 "data failed: %s\n",
490 gnutls_strerror(rc));
491 return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
492 }
431 dump_data_pw("ntlmv1 clear data\n", data, length);493 dump_data_pw("ntlmv1 clear data\n", data, length);
432 }494 }
495
433 status = ntlmssp_check_packet(ntlmssp_state,496 status = ntlmssp_check_packet(ntlmssp_state,
434 data, length,497 data, length,
435 whole_pdu, pdu_length,498 whole_pdu, pdu_length,
@@ -555,6 +618,8 @@ NTSTATUS ntlmssp_unwrap(struct ntlmssp_state *ntlmssp_state,
555NTSTATUS ntlmssp_sign_reset(struct ntlmssp_state *ntlmssp_state,618NTSTATUS ntlmssp_sign_reset(struct ntlmssp_state *ntlmssp_state,
556 bool reset_seqnums)619 bool reset_seqnums)
557{620{
621 int rc;
622
558 DEBUG(3, ("NTLMSSP Sign/Seal - Initialising with flags:\n"));623 DEBUG(3, ("NTLMSSP Sign/Seal - Initialising with flags:\n"));
559 debug_ntlmssp_flags(ntlmssp_state->neg_flags);624 debug_ntlmssp_flags(ntlmssp_state->neg_flags);
560625
@@ -584,12 +649,16 @@ NTSTATUS ntlmssp_sign_reset(struct ntlmssp_state *ntlmssp_state,
584 const char *send_seal_const;649 const char *send_seal_const;
585 const char *recv_sign_const;650 const char *recv_sign_const;
586 const char *recv_seal_const;651 const char *recv_seal_const;
587 uint8_t send_seal_key[16];652 uint8_t send_seal_key[16] = {0};
588 DATA_BLOB send_seal_blob = data_blob_const(send_seal_key,653 gnutls_datum_t send_seal_blob = {
589 sizeof(send_seal_key));654 .data = send_seal_key,
590 uint8_t recv_seal_key[16];655 .size = sizeof(send_seal_key),
591 DATA_BLOB recv_seal_blob = data_blob_const(recv_seal_key,656 };
592 sizeof(recv_seal_key));657 uint8_t recv_seal_key[16] = {0};
658 gnutls_datum_t recv_seal_blob = {
659 .data = recv_seal_key,
660 .size = sizeof(recv_seal_key),
661 };
593 NTSTATUS status;662 NTSTATUS status;
594663
595 switch (ntlmssp_state->role) {664 switch (ntlmssp_state->role) {
@@ -648,10 +717,22 @@ NTSTATUS ntlmssp_sign_reset(struct ntlmssp_state *ntlmssp_state,
648 if (!NT_STATUS_IS_OK(status)) {717 if (!NT_STATUS_IS_OK(status)) {
649 return status;718 return status;
650 }719 }
651 dump_data_pw("NTLMSSP send seal key:\n", send_seal_key, 16);720 dump_data_pw("NTLMSSP send seal key:\n",
721 send_seal_key,
722 sizeof(send_seal_key));
652723
653 arcfour_init(&ntlmssp_state->crypt->ntlm2.sending.seal_state,724 if (ntlmssp_state->crypt->ntlm2.sending.seal_state != NULL) {
654 &send_seal_blob);725 gnutls_cipher_deinit(ntlmssp_state->crypt->ntlm2.sending.seal_state);
726 }
727 rc = gnutls_cipher_init(&ntlmssp_state->crypt->ntlm2.sending.seal_state,
728 GNUTLS_CIPHER_ARCFOUR_128,
729 &send_seal_blob,
730 NULL);
731 if (rc < 0) {
732 DBG_ERR("gnutls_cipher_init failed: %s\n",
733 gnutls_strerror(rc));
734 return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
735 }
655736
656 dump_arc4_state("NTLMSSP send seal arc4 state:\n",737 dump_arc4_state("NTLMSSP send seal arc4 state:\n",
657 &ntlmssp_state->crypt->ntlm2.sending.seal_state);738 &ntlmssp_state->crypt->ntlm2.sending.seal_state);
@@ -677,10 +758,22 @@ NTSTATUS ntlmssp_sign_reset(struct ntlmssp_state *ntlmssp_state,
677 if (!NT_STATUS_IS_OK(status)) {758 if (!NT_STATUS_IS_OK(status)) {
678 return status;759 return status;
679 }760 }
680 dump_data_pw("NTLMSSP recv seal key:\n", recv_seal_key, 16);761 dump_data_pw("NTLMSSP recv seal key:\n",
762 recv_seal_key,
763 sizeof(recv_seal_key));
681764
682 arcfour_init(&ntlmssp_state->crypt->ntlm2.receiving.seal_state,765 if (ntlmssp_state->crypt->ntlm2.receiving.seal_state != NULL) {
683 &recv_seal_blob);766 gnutls_cipher_deinit(ntlmssp_state->crypt->ntlm2.receiving.seal_state);
767 }
768 rc = gnutls_cipher_init(&ntlmssp_state->crypt->ntlm2.receiving.seal_state,
769 GNUTLS_CIPHER_ARCFOUR_128,
770 &recv_seal_blob,
771 NULL);
772 if (rc < 0) {
773 DBG_ERR("gnutls_cipher_init failed: %s\n",
774 gnutls_strerror(rc));
775 return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
776 }
684777
685 dump_arc4_state("NTLMSSP recv seal arc4 state:\n",778 dump_arc4_state("NTLMSSP recv seal arc4 state:\n",
686 &ntlmssp_state->crypt->ntlm2.receiving.seal_state);779 &ntlmssp_state->crypt->ntlm2.receiving.seal_state);
@@ -690,8 +783,10 @@ NTSTATUS ntlmssp_sign_reset(struct ntlmssp_state *ntlmssp_state,
690 ntlmssp_state->crypt->ntlm2.receiving.seq_num = 0;783 ntlmssp_state->crypt->ntlm2.receiving.seq_num = 0;
691 }784 }
692 } else {785 } else {
693 uint8_t weak_session_key[8];786 gnutls_datum_t seal_session_key = {
694 DATA_BLOB seal_session_key = ntlmssp_state->session_key;787 .data = ntlmssp_state->session_key.data,
788 .size = ntlmssp_state->session_key.length,
789 };
695 bool do_weak = false;790 bool do_weak = false;
696791
697 DEBUG(5, ("NTLMSSP Sign/Seal - using NTLM1\n"));792 DEBUG(5, ("NTLMSSP Sign/Seal - using NTLM1\n"));
@@ -709,14 +804,19 @@ NTSTATUS ntlmssp_sign_reset(struct ntlmssp_state *ntlmssp_state,
709 * Nothing to weaken.804 * Nothing to weaken.
710 * We certainly don't want to 'extend' the length...805 * We certainly don't want to 'extend' the length...
711 */806 */
712 if (seal_session_key.length < 16) {807 if (ntlmssp_state->session_key.length < 16) {
713 /* TODO: is this really correct? */808 /* TODO: is this really correct? */
714 do_weak = false;809 do_weak = false;
715 }810 }
716811
717 if (do_weak) {812 if (do_weak) {
813 uint8_t weak_session_key[8];
814
718 memcpy(weak_session_key, seal_session_key.data, 8);815 memcpy(weak_session_key, seal_session_key.data, 8);
719 seal_session_key = data_blob_const(weak_session_key, 8);816 seal_session_key = (gnutls_datum_t) {
817 .data = weak_session_key,
818 .size = sizeof(weak_session_key),
819 };
720820
721 /*821 /*
722 * LM key doesn't support 128 bit crypto, so this is822 * LM key doesn't support 128 bit crypto, so this is
@@ -732,8 +832,18 @@ NTSTATUS ntlmssp_sign_reset(struct ntlmssp_state *ntlmssp_state,
732 }832 }
733 }833 }
734834
735 arcfour_init(&ntlmssp_state->crypt->ntlm.seal_state,835 if (ntlmssp_state->crypt->ntlm.seal_state != NULL) {
736 &seal_session_key);836 gnutls_cipher_deinit(ntlmssp_state->crypt->ntlm.seal_state);
837 }
838 rc = gnutls_cipher_init(&ntlmssp_state->crypt->ntlm.seal_state,
839 GNUTLS_CIPHER_ARCFOUR_128,
840 &seal_session_key,
841 NULL);
842 if (rc < 0) {
843 DBG_ERR("gnutls_cipher_init failed: %s\n",
844 gnutls_strerror(rc));
845 return gnutls_error_to_ntstatus(rc, NT_STATUS_NTLM_BLOCKED);
846 }
737847
738 dump_arc4_state("NTLMv1 arc4 state:\n",848 dump_arc4_state("NTLMv1 arc4 state:\n",
739 &ntlmssp_state->crypt->ntlm.seal_state);849 &ntlmssp_state->crypt->ntlm.seal_state);
@@ -746,6 +856,24 @@ NTSTATUS ntlmssp_sign_reset(struct ntlmssp_state *ntlmssp_state,
746 return NT_STATUS_OK;856 return NT_STATUS_OK;
747}857}
748858
859static int ntlmssp_crypt_free_gnutls_cipher_state(union ntlmssp_crypt_state *c)
860{
861 if (c->ntlm2.sending.seal_state != NULL) {
862 gnutls_cipher_deinit(c->ntlm2.sending.seal_state);
863 c->ntlm2.sending.seal_state = NULL;
864 }
865 if (c->ntlm2.receiving.seal_state != NULL) {
866 gnutls_cipher_deinit(c->ntlm2.receiving.seal_state);
867 c->ntlm2.receiving.seal_state = NULL;
868 }
869 if (c->ntlm.seal_state != NULL) {
870 gnutls_cipher_deinit(c->ntlm.seal_state);
871 c->ntlm.seal_state = NULL;
872 }
873
874 return 0;
875}
876
749NTSTATUS ntlmssp_sign_init(struct ntlmssp_state *ntlmssp_state)877NTSTATUS ntlmssp_sign_init(struct ntlmssp_state *ntlmssp_state)
750{878{
751 if (ntlmssp_state->session_key.length < 8) {879 if (ntlmssp_state->session_key.length < 8) {
@@ -758,6 +886,8 @@ NTSTATUS ntlmssp_sign_init(struct ntlmssp_state *ntlmssp_state)
758 if (ntlmssp_state->crypt == NULL) {886 if (ntlmssp_state->crypt == NULL) {
759 return NT_STATUS_NO_MEMORY;887 return NT_STATUS_NO_MEMORY;
760 }888 }
889 talloc_set_destructor(ntlmssp_state->crypt,
890 ntlmssp_crypt_free_gnutls_cipher_state);
761891
762 return ntlmssp_sign_reset(ntlmssp_state, true);892 return ntlmssp_sign_reset(ntlmssp_state, true);
763}893}
diff --git a/bootstrap/.gitlab-ci.yml b/bootstrap/.gitlab-ci.yml
index 8bec8cc..aa0b644 100644
--- a/bootstrap/.gitlab-ci.yml
+++ b/bootstrap/.gitlab-ci.yml
@@ -6,6 +6,7 @@ services:
6 stage: images6 stage: images
7 tags:7 tags:
8 - docker8 - docker
9 - gce
9 variables:10 variables:
10 SAMBA_CI_IS_BROKEN_IMAGE: "no"11 SAMBA_CI_IS_BROKEN_IMAGE: "no"
11 before_script:12 before_script:
@@ -41,7 +42,7 @@ services:
41 diff -u bootstrap/sha1sum.txt /tmp/sha1sum-template.txt42 diff -u bootstrap/sha1sum.txt /tmp/sha1sum-template.txt
42 # run smoke test with samba-o343 # run smoke test with samba-o3
43 docker run --volume $(pwd):${samba_repo_root} --workdir ${samba_repo_root} ${ci_image_name} \44 docker run --volume $(pwd):${samba_repo_root} --workdir ${samba_repo_root} ${ci_image_name} \
44 /bin/bash -c "sudo chown -R samba:samba ./** && script/autobuild.py samba-o3 --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase"45 /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"
45 docker tag ${ci_image_name} ${ci_image_path}:${SAMBA_CI_CONTAINER_TAG}46 docker tag ${ci_image_name} ${ci_image_path}:${SAMBA_CI_CONTAINER_TAG}
46 docker tag ${ci_image_name} ${ci_image_path}:${timestamp_tag}47 docker tag ${ci_image_name} ${ci_image_path}:${timestamp_tag}
47 # We build all images, but only upload is it's not marked as broken48 # We build all images, but only upload is it's not marked as broken
@@ -91,6 +92,9 @@ ubuntu1604:
91ubuntu1404:92ubuntu1404:
92 extends: .build_image_template_force_broken93 extends: .build_image_template_force_broken
9394
95debian10:
96 extends: .build_image_template
97
94debian9:98debian9:
95 extends: .build_image_template99 extends: .build_image_template
96100
@@ -100,20 +104,25 @@ debian8:
100debian7:104debian7:
101 extends: .build_image_template_force_broken105 extends: .build_image_template_force_broken
102106
107fedora31:
108 extends: .build_image_template
109
103fedora30:110fedora30:
104 extends: .build_image_template111 extends: .build_image_template
105112
106fedora29:113fedora29:
107 extends: .build_image_template114 extends: .build_image_template
108115
109fedora28:116centos8:
110 extends: .build_image_template_force_broken117 extends: .build_image_template
111118
112centos7:119centos7:
113 extends: .build_image_template120 extends: .build_image_template
114 variables:121 variables:
115 # Shallow copies are not supported by git on CentOS7122 # Shallow copies are not supported by git on CentOS7
116 GIT_DEPTH: ""123 GIT_DEPTH: ""
124 # We install a compat-gnutls34 package for GnuTLS >= 3.4.7
125 PKG_CONFIG_PATH: /usr/lib64/compat-gnutls34/pkgconfig:/usr/lib64/compat-nettle32/pkgconfig
117126
118centos6:127centos6:
119 extends: .build_image_template_force_broken128 extends: .build_image_template_force_broken
diff --git a/bootstrap/READMD.md b/bootstrap/READMD.md
index d653d6d..b8a3009 100644
--- a/bootstrap/READMD.md
+++ b/bootstrap/READMD.md
@@ -12,7 +12,7 @@ A pure python3 module with CLI to bootstrap Samba envs for multiple distribution
1212
13## Supported Distributions13## Supported Distributions
1414
15deb: Debian 7|8|9, Ubuntu 1404|1604|180415deb: Debian 7|8|9|10, Ubuntu 1404|1604|1804
16rpm: CentOS 6|7, Fedora 28|29, openSUSE Leap 15.0|15.116rpm: CentOS 6|7, Fedora 28|29, openSUSE Leap 15.0|15.1
1717
18Easy to add more.18Easy to add more.
diff --git a/bootstrap/config.py b/bootstrap/config.py
index a83a3ef..bcada1d 100644
--- a/bootstrap/config.py
+++ b/bootstrap/config.py
@@ -37,6 +37,7 @@ COMMON = [
37 'binutils',37 'binutils',
38 'bison',38 'bison',
39 'curl',39 'curl',
40 'chrpath',
40 'flex',41 'flex',
41 'gcc',42 'gcc',
42 'gdb',43 'gdb',
@@ -66,10 +67,9 @@ PKGS = [
66 # NAME1-dev, NAME2-devel67 # NAME1-dev, NAME2-devel
67 ('lmdb-utils', 'lmdb'),68 ('lmdb-utils', 'lmdb'),
68 ('mingw-w64', 'mingw64-gcc'),69 ('mingw-w64', 'mingw64-gcc'),
69 ('nettle-dev', 'nettle-devel'),
70 ('zlib1g-dev', 'zlib-devel'),70 ('zlib1g-dev', 'zlib-devel'),
71 ('libbsd-dev', 'libbsd-devel'),71 ('libbsd-dev', 'libbsd-devel'),
72 ('libaio-dev', 'libaio-devel'),72 ('liburing-dev', 'liburing-devel'),
73 ('libarchive-dev', 'libarchive-devel'),73 ('libarchive-dev', 'libarchive-devel'),
74 ('libblkid-dev', 'libblkid-devel'),74 ('libblkid-dev', 'libblkid-devel'),
75 ('libcap-dev', 'libcap-devel'),75 ('libcap-dev', 'libcap-devel'),
@@ -128,22 +128,11 @@ PKGS = [
128 ('', 'rpcsvc-proto-devel'), # for <rpcsvc/rquota.h> header128 ('', 'rpcsvc-proto-devel'), # for <rpcsvc/rquota.h> header
129 ('mawk', 'gawk'),129 ('mawk', 'gawk'),
130130
131 # python
132 ('python-dev', 'python-devel'),
133 ('python-dbg', ''),
134 ('python-iso8601', ''),
135 ('python-gpg', 'python2-gpg'), # defaults to ubuntu/fedora latest
136 ('python-crypto', 'python-crypto'),
137 ('python-markdown', 'python-markdown'),
138 ('python-dnspython', 'python-dns'),
139 ('python-pexpect', ''), # for wintest only
140
141 ('python3', 'python3'),131 ('python3', 'python3'),
142 ('python3-dev', 'python3-devel'),132 ('python3-dev', 'python3-devel'),
143 ('python3-dbg', ''),133 ('python3-dbg', ''),
144 ('python3-iso8601', ''),134 ('python3-iso8601', ''),
145 ('python3-gpg', 'python3-gpg'), # defaults to ubuntu/fedora latest135 ('python3-gpg', 'python3-gpg'), # defaults to ubuntu/fedora latest
146 ('python3-crypto', 'python3-crypto'),
147 ('python3-markdown', 'python3-markdown'),136 ('python3-markdown', 'python3-markdown'),
148 ('python3-matplotlib', ''),137 ('python3-matplotlib', ''),
149 ('python3-dnspython', 'python3-dns'),138 ('python3-dnspython', 'python3-dns'),
@@ -215,6 +204,8 @@ set -xueo pipefail
215204
216yum update -y205yum update -y
217yum install -y epel-release206yum install -y epel-release
207yum install -y yum-plugin-copr
208yum copr enable -y sergiomb/SambaAD
218yum update -y209yum update -y
219210
220yum install -y \211yum install -y \
@@ -227,6 +218,23 @@ if [ ! -f /usr/bin/python3 ]; then
227fi218fi
228"""219"""
229220
221CENTOS8_YUM_BOOTSTRAP = r"""
222#!/bin/bash
223{GENERATED_MARKER}
224set -xueo pipefail
225
226yum update -y
227yum install -y dnf-plugins-core
228yum install -y epel-release
229yum config-manager --set-enabled PowerTools -y
230yum update -y
231
232yum install -y \
233 --setopt=install_weak_deps=False \
234 {pkgs}
235
236yum clean all
237"""
230238
231DNF_BOOTSTRAP = r"""239DNF_BOOTSTRAP = r"""
232#!/bin/bash240#!/bin/bash
@@ -377,6 +385,7 @@ DEB_DISTS = {
377 'python-gpg': 'python-gpgme',385 'python-gpg': 'python-gpgme',
378 'python3-gpg': '', # no python3 gpg pkg available, remove386 'python3-gpg': '', # no python3 gpg pkg available, remove
379 'language-pack-en': '', # included in locales387 'language-pack-en': '', # included in locales
388 'liburing-dev': '', # not available
380 }389 }
381 },390 },
382 'debian8': {391 'debian8': {
@@ -386,6 +395,7 @@ DEB_DISTS = {
386 'python-gpg': 'python-gpgme',395 'python-gpg': 'python-gpgme',
387 'python3-gpg': 'python3-gpgme',396 'python3-gpg': 'python3-gpgme',
388 'language-pack-en': '', # included in locales397 'language-pack-en': '', # included in locales
398 'liburing-dev': '', # not available
389 }399 }
390 },400 },
391 'debian9': {401 'debian9': {
@@ -393,6 +403,15 @@ DEB_DISTS = {
393 'vagrant_box': 'debian/stretch64',403 'vagrant_box': 'debian/stretch64',
394 'replace': {404 'replace': {
395 'language-pack-en': '', # included in locales405 'language-pack-en': '', # included in locales
406 'liburing-dev': '', # not available
407 }
408 },
409 'debian10': {
410 'docker_image': 'debian:10',
411 'vagrant_box': 'debian/buster64',
412 'replace': {
413 'language-pack-en': '', # included in locales
414 'liburing-dev': '', # not available
396 }415 }
397 },416 },
398 'ubuntu1404': {417 'ubuntu1404': {
@@ -408,6 +427,7 @@ DEB_DISTS = {
408 'libunwind-dev': 'libunwind8-dev',427 'libunwind-dev': 'libunwind8-dev',
409 'glusterfs-common': '',428 'glusterfs-common': '',
410 'libcephfs-dev': '',429 'libcephfs-dev': '',
430 'liburing-dev': '', # not available
411 }431 }
412 },432 },
413 'ubuntu1604': {433 'ubuntu1604': {
@@ -418,11 +438,15 @@ DEB_DISTS = {
418 'python3-gpg': 'python3-gpgme',438 'python3-gpg': 'python3-gpgme',
419 'glusterfs-common': '',439 'glusterfs-common': '',
420 'libcephfs-dev': '',440 'libcephfs-dev': '',
441 'liburing-dev': '', # not available
421 }442 }
422 },443 },
423 'ubuntu1804': {444 'ubuntu1804': {
424 'docker_image': 'ubuntu:18.04',445 'docker_image': 'ubuntu:18.04',
425 'vagrant_box': 'ubuntu/bionic64',446 'vagrant_box': 'ubuntu/bionic64',
447 'replace': {
448 'liburing-dev': '', # not available
449 }
426 },450 },
427}451}
428452
@@ -449,6 +473,7 @@ RPM_DISTS = {
449 'glusterfs-api-devel': '',473 'glusterfs-api-devel': '',
450 'glusterfs-devel': '',474 'glusterfs-devel': '',
451 'libcephfs-devel': '',475 'libcephfs-devel': '',
476 'liburing-devel': '', # not available
452 }477 }
453 },478 },
454 'centos7': {479 'centos7': {
@@ -479,14 +504,25 @@ RPM_DISTS = {
479 'glusterfs-api-devel': '',504 'glusterfs-api-devel': '',
480 'glusterfs-devel': '',505 'glusterfs-devel': '',
481 'libcephfs-devel': '',506 'libcephfs-devel': '',
507 'gnutls-devel': 'compat-gnutls34-devel',
508 'liburing-devel': '', # not available
482 }509 }
483 },510 },
484 'fedora28': {511 'centos8': {
485 'docker_image': 'fedora:28',512 'docker_image': 'centos:8',
486 'vagrant_box': 'fedora/28-cloud-base',513 'vagrant_box': 'centos/8',
487 'bootstrap': DNF_BOOTSTRAP,514 'bootstrap': CENTOS8_YUM_BOOTSTRAP,
488 'replace': {515 'replace': {
489 'lsb-release': 'redhat-lsb',516 'lsb-release': 'redhat-lsb',
517 '@development-tools': '"@Development Tools"', # add quotes
518 'libsemanage-python': 'python3-libsemanage',
519 'lcov': '', # does not exist
520 'perl-JSON-Parse': '', # does not exist?
521 'perl-Test-Base': 'perl-Test-Simple',
522 'policycoreutils-python': 'python3-policycoreutils',
523 'python3-crypto': '',
524 'quota-devel': '', # FIXME: Add me back, once available!
525 'liburing-devel': '', # not available yet, Add me back, once available!
490 }526 }
491 },527 },
492 'fedora29': {528 'fedora29': {
@@ -495,6 +531,7 @@ RPM_DISTS = {
495 'bootstrap': DNF_BOOTSTRAP,531 'bootstrap': DNF_BOOTSTRAP,
496 'replace': {532 'replace': {
497 'lsb-release': 'redhat-lsb',533 'lsb-release': 'redhat-lsb',
534 'liburing-devel': '', # not available
498 }535 }
499 },536 },
500 'fedora30': {537 'fedora30': {
@@ -503,6 +540,17 @@ RPM_DISTS = {
503 'bootstrap': DNF_BOOTSTRAP,540 'bootstrap': DNF_BOOTSTRAP,
504 'replace': {541 'replace': {
505 'lsb-release': 'redhat-lsb',542 'lsb-release': 'redhat-lsb',
543 'liburing-devel': '', # not available
544 }
545 },
546 'fedora31': {
547 'docker_image': 'fedora:31',
548 'vagrant_box': 'fedora/31-cloud-base',
549 'bootstrap': DNF_BOOTSTRAP,
550 'replace': {
551 'lsb-release': 'redhat-lsb',
552 'libsemanage-python': 'python3-libsemanage',
553 'policycoreutils-python': 'python3-policycoreutils',
506 }554 }
507 },555 },
508 'opensuse150': {556 'opensuse150': {
@@ -521,7 +569,6 @@ RPM_DISTS = {
521 'krb5-workstation': 'krb5-client',569 'krb5-workstation': 'krb5-client',
522 'libnsl2-devel': 'libnsl-devel',570 'libnsl2-devel': 'libnsl-devel',
523 'libsemanage-python': 'python2-semanage',571 'libsemanage-python': 'python2-semanage',
524 'nettle-devel': 'libnettle-devel',
525 'openldap-devel': 'openldap2-devel',572 'openldap-devel': 'openldap2-devel',
526 'perl-Archive-Tar': 'perl-Archive-Tar-Wrapper',573 'perl-Archive-Tar': 'perl-Archive-Tar-Wrapper',
527 'perl-JSON-Parse': 'perl-JSON-XS',574 'perl-JSON-Parse': 'perl-JSON-XS',
@@ -536,6 +583,7 @@ RPM_DISTS = {
536 'glusterfs-api-devel': '',583 'glusterfs-api-devel': '',
537 'libtasn1-tools': '', # asn1Parser is part of libtasn1584 'libtasn1-tools': '', # asn1Parser is part of libtasn1
538 'mingw64-gcc': '', # doesn't exist585 'mingw64-gcc': '', # doesn't exist
586 'liburing-devel': '', # not available
539 }587 }
540 },588 },
541 'opensuse151': {589 'opensuse151': {
@@ -554,7 +602,6 @@ RPM_DISTS = {
554 'krb5-workstation': 'krb5-client',602 'krb5-workstation': 'krb5-client',
555 'libnsl2-devel': 'libnsl-devel',603 'libnsl2-devel': 'libnsl-devel',
556 'libsemanage-python': 'python2-semanage',604 'libsemanage-python': 'python2-semanage',
557 'nettle-devel': 'libnettle-devel',
558 'openldap-devel': 'openldap2-devel',605 'openldap-devel': 'openldap2-devel',
559 'perl-Archive-Tar': 'perl-Archive-Tar-Wrapper',606 'perl-Archive-Tar': 'perl-Archive-Tar-Wrapper',
560 'perl-JSON-Parse': 'perl-JSON-XS',607 'perl-JSON-Parse': 'perl-JSON-XS',
@@ -569,6 +616,7 @@ RPM_DISTS = {
569 'glusterfs-api-devel': '',616 'glusterfs-api-devel': '',
570 'libtasn1-tools': '', # asn1Parser is part of libtasn1617 'libtasn1-tools': '', # asn1Parser is part of libtasn1
571 'mingw64-gcc': '', # doesn't exist618 'mingw64-gcc': '', # doesn't exist
619 'liburing-devel': '', # not available, will be added in 15.2
572 }620 }
573 }621 }
574}622}
diff --git a/bootstrap/generated-dists/Vagrantfile b/bootstrap/generated-dists/Vagrantfile
index 941cc9a..b3cb6be 100644
--- a/bootstrap/generated-dists/Vagrantfile
+++ b/bootstrap/generated-dists/Vagrantfile
@@ -24,6 +24,20 @@ Vagrant.configure("2") do |config|
24 v.vm.provision :shell, path: "centos7/locale.sh"24 v.vm.provision :shell, path: "centos7/locale.sh"
25 end25 end
2626
27 config.vm.define "centos8" do |v|
28 v.vm.box = "centos/8"
29 v.vm.hostname = "centos8"
30 v.vm.provision :shell, path: "centos8/bootstrap.sh"
31 v.vm.provision :shell, path: "centos8/locale.sh"
32 end
33
34 config.vm.define "debian10" do |v|
35 v.vm.box = "debian/buster64"
36 v.vm.hostname = "debian10"
37 v.vm.provision :shell, path: "debian10/bootstrap.sh"
38 v.vm.provision :shell, path: "debian10/locale.sh"
39 end
40
27 config.vm.define "debian7" do |v|41 config.vm.define "debian7" do |v|
28 v.vm.box = "debian/wheezy64"42 v.vm.box = "debian/wheezy64"
29 v.vm.hostname = "debian7"43 v.vm.hostname = "debian7"
@@ -45,13 +59,6 @@ Vagrant.configure("2") do |config|
45 v.vm.provision :shell, path: "debian9/locale.sh"59 v.vm.provision :shell, path: "debian9/locale.sh"
46 end60 end
4761
48 config.vm.define "fedora28" do |v|
49 v.vm.box = "fedora/28-cloud-base"
50 v.vm.hostname = "fedora28"
51 v.vm.provision :shell, path: "fedora28/bootstrap.sh"
52 v.vm.provision :shell, path: "fedora28/locale.sh"
53 end
54
55 config.vm.define "fedora29" do |v|62 config.vm.define "fedora29" do |v|
56 v.vm.box = "fedora/29-cloud-base"63 v.vm.box = "fedora/29-cloud-base"
57 v.vm.hostname = "fedora29"64 v.vm.hostname = "fedora29"
@@ -66,6 +73,13 @@ Vagrant.configure("2") do |config|
66 v.vm.provision :shell, path: "fedora30/locale.sh"73 v.vm.provision :shell, path: "fedora30/locale.sh"
67 end74 end
6875
76 config.vm.define "fedora31" do |v|
77 v.vm.box = "fedora/31-cloud-base"
78 v.vm.hostname = "fedora31"
79 v.vm.provision :shell, path: "fedora31/bootstrap.sh"
80 v.vm.provision :shell, path: "fedora31/locale.sh"
81 end
82
69 config.vm.define "opensuse150" do |v|83 config.vm.define "opensuse150" do |v|
70 v.vm.box = "opensuse/openSUSE-15.0-x86_64"84 v.vm.box = "opensuse/openSUSE-15.0-x86_64"
71 v.vm.hostname = "opensuse150"85 v.vm.hostname = "opensuse150"
diff --git a/bootstrap/generated-dists/centos6/bootstrap.sh b/bootstrap/generated-dists/centos6/bootstrap.sh
index 6d60bd2..ee6fcc3 100755
--- a/bootstrap/generated-dists/centos6/bootstrap.sh
+++ b/bootstrap/generated-dists/centos6/bootstrap.sh
@@ -9,6 +9,8 @@ set -xueo pipefail
99
10yum update -y10yum update -y
11yum install -y epel-release11yum install -y epel-release
12yum install -y yum-plugin-copr
13yum copr enable -y sergiomb/SambaAD
12yum update -y14yum update -y
1315
14yum install -y \16yum install -y \
@@ -20,6 +22,7 @@ yum install -y \
20 bind-utils \22 bind-utils \
21 binutils \23 binutils \
22 bison \24 bison \
25 chrpath \
23 cups-devel \26 cups-devel \
24 curl \27 curl \
25 dbus-devel \28 dbus-devel \
@@ -43,7 +46,6 @@ yum install -y \
43 krb5-server \46 krb5-server \
44 lcov \47 lcov \
45 libacl-devel \48 libacl-devel \
46 libaio-devel \
47 libarchive-devel \49 libarchive-devel \
48 libattr-devel \50 libattr-devel \
49 libblkid-devel \51 libblkid-devel \
@@ -64,7 +66,6 @@ yum install -y \
64 make \66 make \
65 mingw64-gcc \67 mingw64-gcc \
66 ncurses-devel \68 ncurses-devel \
67 nettle-devel \
68 openldap-devel \69 openldap-devel \
69 pam-devel \70 pam-devel \
70 patch \71 patch \
@@ -81,12 +82,6 @@ yum install -y \
81 popt-devel \82 popt-devel \
82 procps \83 procps \
83 psmisc \84 psmisc \
84 pygpgme \
85 python-crypto \
86 python-devel \
87 python-dns \
88 python-markdown \
89 python3-crypto \
90 python3-dns \85 python3-dns \
91 python3-markdown \86 python3-markdown \
92 python36 \87 python36 \
diff --git a/bootstrap/generated-dists/centos6/packages.yml b/bootstrap/generated-dists/centos6/packages.yml
index 168fbe9..1e2b5a9 100644
--- a/bootstrap/generated-dists/centos6/packages.yml
+++ b/bootstrap/generated-dists/centos6/packages.yml
@@ -8,6 +8,7 @@ packages:
8 - bind-utils8 - bind-utils
9 - binutils9 - binutils
10 - bison10 - bison
11 - chrpath
11 - cups-devel12 - cups-devel
12 - curl13 - curl
13 - dbus-devel14 - dbus-devel
@@ -31,7 +32,6 @@ packages:
31 - krb5-server32 - krb5-server
32 - lcov33 - lcov
33 - libacl-devel34 - libacl-devel
34 - libaio-devel
35 - libarchive-devel35 - libarchive-devel
36 - libattr-devel36 - libattr-devel
37 - libblkid-devel37 - libblkid-devel
@@ -52,7 +52,6 @@ packages:
52 - make52 - make
53 - mingw64-gcc53 - mingw64-gcc
54 - ncurses-devel54 - ncurses-devel
55 - nettle-devel
56 - openldap-devel55 - openldap-devel
57 - pam-devel56 - pam-devel
58 - patch57 - patch
@@ -69,12 +68,6 @@ packages:
69 - popt-devel68 - popt-devel
70 - procps69 - procps
71 - psmisc70 - psmisc
72 - pygpgme
73 - python-crypto
74 - python-devel
75 - python-dns
76 - python-markdown
77 - python3-crypto
78 - python3-dns71 - python3-dns
79 - python3-markdown72 - python3-markdown
80 - python3673 - python36
diff --git a/bootstrap/generated-dists/centos7/bootstrap.sh b/bootstrap/generated-dists/centos7/bootstrap.sh
index b59ef6a..2f0bb1b 100755
--- a/bootstrap/generated-dists/centos7/bootstrap.sh
+++ b/bootstrap/generated-dists/centos7/bootstrap.sh
@@ -9,6 +9,8 @@ set -xueo pipefail
99
10yum update -y10yum update -y
11yum install -y epel-release11yum install -y epel-release
12yum install -y yum-plugin-copr
13yum copr enable -y sergiomb/SambaAD
12yum update -y14yum update -y
1315
14yum install -y \16yum install -y \
@@ -20,6 +22,8 @@ yum install -y \
20 bind-utils \22 bind-utils \
21 binutils \23 binutils \
22 bison \24 bison \
25 chrpath \
26 compat-gnutls34-devel \
23 cups-devel \27 cups-devel \
24 curl \28 curl \
25 dbus-devel \29 dbus-devel \
@@ -32,7 +36,6 @@ yum install -y \
32 git \36 git \
33 glib2-devel \37 glib2-devel \
34 glibc-common \38 glibc-common \
35 gnutls-devel \
36 gpgme-devel \39 gpgme-devel \
37 gzip \40 gzip \
38 hostname \41 hostname \
@@ -43,7 +46,6 @@ yum install -y \
43 krb5-server \46 krb5-server \
44 lcov \47 lcov \
45 libacl-devel \48 libacl-devel \
46 libaio-devel \
47 libarchive-devel \49 libarchive-devel \
48 libattr-devel \50 libattr-devel \
49 libblkid-devel \51 libblkid-devel \
@@ -64,7 +66,6 @@ yum install -y \
64 make \66 make \
65 mingw64-gcc \67 mingw64-gcc \
66 ncurses-devel \68 ncurses-devel \
67 nettle-devel \
68 openldap-devel \69 openldap-devel \
69 pam-devel \70 pam-devel \
70 patch \71 patch \
@@ -81,13 +82,7 @@ yum install -y \
81 popt-devel \82 popt-devel \
82 procps-ng \83 procps-ng \
83 psmisc \84 psmisc \
84 pygpgme \
85 python-crypto \
86 python-devel \
87 python-dns \
88 python-markdown \
89 python36 \85 python36 \
90 python36-crypto \
91 python36-devel \86 python36-devel \
92 python36-dns \87 python36-dns \
93 python36-markdown \88 python36-markdown \
diff --git a/bootstrap/generated-dists/centos7/packages.yml b/bootstrap/generated-dists/centos7/packages.yml
index 7a106d8..475326b 100644
--- a/bootstrap/generated-dists/centos7/packages.yml
+++ b/bootstrap/generated-dists/centos7/packages.yml
@@ -8,6 +8,8 @@ packages:
8 - bind-utils8 - bind-utils
9 - binutils9 - binutils
10 - bison10 - bison
11 - chrpath
12 - compat-gnutls34-devel
11 - cups-devel13 - cups-devel
12 - curl14 - curl
13 - dbus-devel15 - dbus-devel
@@ -20,7 +22,6 @@ packages:
20 - git22 - git
21 - glib2-devel23 - glib2-devel
22 - glibc-common24 - glibc-common
23 - gnutls-devel
24 - gpgme-devel25 - gpgme-devel
25 - gzip26 - gzip
26 - hostname27 - hostname
@@ -31,7 +32,6 @@ packages:
31 - krb5-server32 - krb5-server
32 - lcov33 - lcov
33 - libacl-devel34 - libacl-devel
34 - libaio-devel
35 - libarchive-devel35 - libarchive-devel
36 - libattr-devel36 - libattr-devel
37 - libblkid-devel37 - libblkid-devel
@@ -52,7 +52,6 @@ packages:
52 - make52 - make
53 - mingw64-gcc53 - mingw64-gcc
54 - ncurses-devel54 - ncurses-devel
55 - nettle-devel
56 - openldap-devel55 - openldap-devel
57 - pam-devel56 - pam-devel
58 - patch57 - patch
@@ -69,13 +68,7 @@ packages:
69 - popt-devel68 - popt-devel
70 - procps-ng69 - procps-ng
71 - psmisc70 - psmisc
72 - pygpgme
73 - python-crypto
74 - python-devel
75 - python-dns
76 - python-markdown
77 - python3671 - python36
78 - python36-crypto
79 - python36-devel72 - python36-devel
80 - python36-dns73 - python36-dns
81 - python36-markdown74 - python36-markdown
diff --git a/bootstrap/generated-dists/fedora28/Dockerfile b/bootstrap/generated-dists/centos8/Dockerfile
82similarity index 95%75similarity index 95%
83rename from bootstrap/generated-dists/fedora28/Dockerfile76rename from bootstrap/generated-dists/fedora28/Dockerfile
84rename to bootstrap/generated-dists/centos8/Dockerfile77rename to bootstrap/generated-dists/centos8/Dockerfile
index 4d25691..f6343e9 100644
--- a/bootstrap/generated-dists/fedora28/Dockerfile
+++ b/bootstrap/generated-dists/centos8/Dockerfile
@@ -3,7 +3,7 @@
3# See also bootstrap/config.py3# See also bootstrap/config.py
4#4#
55
6FROM fedora:286FROM centos:8
77
8# pass in with --build-arg while build8# pass in with --build-arg while build
9ARG SHA1SUM9ARG SHA1SUM
diff --git a/bootstrap/generated-dists/centos8/bootstrap.sh b/bootstrap/generated-dists/centos8/bootstrap.sh
10new file mode 10075510new file mode 100755
index 0000000..22484b3
--- /dev/null
+++ b/bootstrap/generated-dists/centos8/bootstrap.sh
@@ -0,0 +1,109 @@
1#!/bin/bash
2
3#
4# This file is generated by 'bootstrap/template.py --render'
5# See also bootstrap/config.py
6#
7
8set -xueo pipefail
9
10yum update -y
11yum install -y dnf-plugins-core
12yum install -y epel-release
13yum config-manager --set-enabled PowerTools -y
14yum update -y
15
16yum install -y \
17 --setopt=install_weak_deps=False \
18 "@Development Tools" \
19 acl \
20 attr \
21 autoconf \
22 avahi-devel \
23 bind-utils \
24 binutils \
25 bison \
26 chrpath \
27 cups-devel \
28 curl \
29 dbus-devel \
30 docbook-dtds \
31 docbook-style-xsl \
32 flex \
33 gawk \
34 gcc \
35 gdb \
36 git \
37 glib2-devel \
38 glibc-common \
39 glibc-langpack-en \
40 glusterfs-api-devel \
41 glusterfs-devel \
42 gnutls-devel \
43 gpgme-devel \
44 gzip \
45 hostname \
46 htop \
47 jansson-devel \
48 keyutils-libs-devel \
49 krb5-devel \
50 krb5-server \
51 libacl-devel \
52 libarchive-devel \
53 libattr-devel \
54 libblkid-devel \
55 libbsd-devel \
56 libcap-devel \
57 libcephfs-devel \
58 libicu-devel \
59 libnsl2-devel \
60 libpcap-devel \
61 libtasn1-devel \
62 libtasn1-tools \
63 libtirpc-devel \
64 libunwind-devel \
65 libuuid-devel \
66 libxslt \
67 lmdb \
68 lmdb-devel \
69 make \
70 mingw64-gcc \
71 ncurses-devel \
72 openldap-devel \
73 pam-devel \
74 patch \
75 perl \
76 perl-Archive-Tar \
77 perl-ExtUtils-MakeMaker \
78 perl-Parse-Yapp \
79 perl-Test-Simple \
80 perl-generators \
81 perl-interpreter \
82 pkgconfig \
83 popt-devel \
84 procps-ng \
85 psmisc \
86 python3 \
87 python3-devel \
88 python3-dns \
89 python3-gpg \
90 python3-libsemanage \
91 python3-markdown \
92 python3-policycoreutils \
93 readline-devel \
94 redhat-lsb \
95 rng-tools \
96 rpcgen \
97 rpcsvc-proto-devel \
98 rsync \
99 sed \
100 sudo \
101 systemd-devel \
102 tar \
103 tree \
104 which \
105 xfsprogs-devel \
106 yum-utils \
107 zlib-devel
108
109yum clean all
0\ No newline at end of file110\ No newline at end of file
diff --git a/bootstrap/generated-dists/fedora28/locale.sh b/bootstrap/generated-dists/centos8/locale.sh
1similarity index 100%111similarity index 100%
2rename from bootstrap/generated-dists/fedora28/locale.sh112rename from bootstrap/generated-dists/fedora28/locale.sh
3rename to bootstrap/generated-dists/centos8/locale.sh113rename to bootstrap/generated-dists/centos8/locale.sh
diff --git a/bootstrap/generated-dists/centos8/packages.yml b/bootstrap/generated-dists/centos8/packages.yml
4new file mode 100644114new file mode 100644
index 0000000..07be0de
--- /dev/null
+++ b/bootstrap/generated-dists/centos8/packages.yml
@@ -0,0 +1,92 @@
1---
2packages:
3 - "@Development Tools"
4 - acl
5 - attr
6 - autoconf
7 - avahi-devel
8 - bind-utils
9 - binutils
10 - bison
11 - chrpath
12 - cups-devel
13 - curl
14 - dbus-devel
15 - docbook-dtds
16 - docbook-style-xsl
17 - flex
18 - gawk
19 - gcc
20 - gdb
21 - git
22 - glib2-devel
23 - glibc-common
24 - glibc-langpack-en
25 - glusterfs-api-devel
26 - glusterfs-devel
27 - gnutls-devel
28 - gpgme-devel
29 - gzip
30 - hostname
31 - htop
32 - jansson-devel
33 - keyutils-libs-devel
34 - krb5-devel
35 - krb5-server
36 - libacl-devel
37 - libarchive-devel
38 - libattr-devel
39 - libblkid-devel
40 - libbsd-devel
41 - libcap-devel
42 - libcephfs-devel
43 - libicu-devel
44 - libnsl2-devel
45 - libpcap-devel
46 - libtasn1-devel
47 - libtasn1-tools
48 - libtirpc-devel
49 - libunwind-devel
50 - libuuid-devel
51 - libxslt
52 - lmdb
53 - lmdb-devel
54 - make
55 - mingw64-gcc
56 - ncurses-devel
57 - openldap-devel
58 - pam-devel
59 - patch
60 - perl
61 - perl-Archive-Tar
62 - perl-ExtUtils-MakeMaker
63 - perl-Parse-Yapp
64 - perl-Test-Simple
65 - perl-generators
66 - perl-interpreter
67 - pkgconfig
68 - popt-devel
69 - procps-ng
70 - psmisc
71 - python3
72 - python3-devel
73 - python3-dns
74 - python3-gpg
75 - python3-libsemanage
76 - python3-markdown
77 - python3-policycoreutils
78 - readline-devel
79 - redhat-lsb
80 - rng-tools
81 - rpcgen
82 - rpcsvc-proto-devel
83 - rsync
84 - sed
85 - sudo
86 - systemd-devel
87 - tar
88 - tree
89 - which
90 - xfsprogs-devel
91 - yum-utils
92 - zlib-devel
0\ No newline at end of file93\ No newline at end of file
diff --git a/bootstrap/generated-dists/debian10/Dockerfile b/bootstrap/generated-dists/debian10/Dockerfile
1new file mode 10064494new file mode 100644
index 0000000..a7141db
--- /dev/null
+++ b/bootstrap/generated-dists/debian10/Dockerfile
@@ -0,0 +1,27 @@
1#
2# This file is generated by 'bootstrap/template.py --render'
3# See also bootstrap/config.py
4#
5
6FROM debian:10
7
8# pass in with --build-arg while build
9ARG SHA1SUM
10RUN [ -n $SHA1SUM ] && echo $SHA1SUM > /sha1sum.txt
11
12ADD *.sh /tmp/
13# need root permission, do it before USER samba
14RUN /tmp/bootstrap.sh && /tmp/locale.sh
15
16# if ld.gold exists, force link it to ld
17RUN 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"
18
19# make test can not work with root, so we have to create a new user
20RUN useradd -m -U -s /bin/bash samba && \
21 mkdir -p /etc/sudoers.d && \
22 echo "samba ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/samba
23
24USER samba
25WORKDIR /home/samba
26# samba tests rely on this
27ENV USER=samba LC_ALL=en_US.utf8 LANG=en_US.utf8
0\ No newline at end of file28\ No newline at end of file
diff --git a/bootstrap/generated-dists/debian10/bootstrap.sh b/bootstrap/generated-dists/debian10/bootstrap.sh
1new file mode 10075529new file mode 100755
index 0000000..f0847eb
--- /dev/null
+++ b/bootstrap/generated-dists/debian10/bootstrap.sh
@@ -0,0 +1,105 @@
1#!/bin/bash
2
3#
4# This file is generated by 'bootstrap/template.py --render'
5# See also bootstrap/config.py
6#
7
8set -xueo pipefail
9
10export DEBIAN_FRONTEND=noninteractive
11apt-get -y update
12
13apt-get -y install \
14 acl \
15 apt-utils \
16 attr \
17 autoconf \
18 bind9utils \
19 binutils \
20 bison \
21 build-essential \
22 chrpath \
23 curl \
24 debhelper \
25 dnsutils \
26 docbook-xml \
27 docbook-xsl \
28 flex \
29 gcc \
30 gdb \
31 git \
32 glusterfs-common \
33 gzip \
34 heimdal-multidev \
35 hostname \
36 htop \
37 krb5-config \
38 krb5-kdc \
39 krb5-user \
40 lcov \
41 libacl1-dev \
42 libarchive-dev \
43 libattr1-dev \
44 libavahi-common-dev \
45 libblkid-dev \
46 libbsd-dev \
47 libcap-dev \
48 libcephfs-dev \
49 libcups2-dev \
50 libdbus-1-dev \
51 libglib2.0-dev \
52 libgnutls28-dev \
53 libgpgme11-dev \
54 libicu-dev \
55 libjansson-dev \
56 libjs-jquery \
57 libjson-perl \
58 libkrb5-dev \
59 libldap2-dev \
60 liblmdb-dev \
61 libncurses5-dev \
62 libpam0g-dev \
63 libparse-yapp-perl \
64 libpcap-dev \
65 libpopt-dev \
66 libreadline-dev \
67 libsystemd-dev \
68 libtasn1-bin \
69 libtasn1-dev \
70 libunwind-dev \
71 lmdb-utils \
72 locales \
73 lsb-release \
74 make \
75 mawk \
76 mingw-w64 \
77 patch \
78 perl \
79 perl-modules \
80 pkg-config \
81 procps \
82 psmisc \
83 python3 \
84 python3-dbg \
85 python3-dev \
86 python3-dnspython \
87 python3-gpg \
88 python3-iso8601 \
89 python3-markdown \
90 python3-matplotlib \
91 python3-pexpect \
92 rng-tools \
93 rsync \
94 sed \
95 sudo \
96 tar \
97 tree \
98 uuid-dev \
99 xfslibs-dev \
100 xsltproc \
101 zlib1g-dev
102
103apt-get -y autoremove
104apt-get -y autoclean
105apt-get -y clean
0\ No newline at end of file106\ No newline at end of file
diff --git a/bootstrap/generated-dists/debian10/locale.sh b/bootstrap/generated-dists/debian10/locale.sh
1new file mode 100755107new file mode 100755
index 0000000..cc64e18
--- /dev/null
+++ b/bootstrap/generated-dists/debian10/locale.sh
@@ -0,0 +1,55 @@
1#!/bin/bash
2
3#
4# This file is generated by 'bootstrap/template.py --render'
5# See also bootstrap/config.py
6#
7
8set -xueo pipefail
9
10# refer to /usr/share/i18n/locales
11INPUTFILE=en_US
12# refer to /usr/share/i18n/charmaps
13CHARMAP=UTF-8
14# locale to generate in /usr/lib/locale
15# glibc/localedef will normalize UTF-8 to utf8, follow the naming style
16LOCALE=$INPUTFILE.utf8
17
18# if locale is already correct, exit
19( locale | grep LC_ALL | grep -i $LOCALE ) && exit 0
20
21# if locale not available, generate locale into /usr/lib/locale
22if ! ( locale --all-locales | grep -i $LOCALE )
23then
24 # no-archive means create its own dir
25 localedef --inputfile $INPUTFILE --charmap $CHARMAP --no-archive $LOCALE
26fi
27
28# update locale conf and global env file
29# set both LC_ALL and LANG for safe
30
31# update conf for Debian family
32FILE=/etc/default/locale
33if [ -f $FILE ]
34then
35 echo LC_ALL="$LOCALE" > $FILE
36 echo LANG="$LOCALE" >> $FILE
37fi
38
39# update conf for RedHat family
40FILE=/etc/locale.conf
41if [ -f $FILE ]
42then
43 # LC_ALL is not valid in this file, set LANG only
44 echo LANG="$LOCALE" > $FILE
45fi
46
47# update global env file
48FILE=/etc/environment
49if [ -f $FILE ]
50then
51 # append LC_ALL if not exist
52 grep LC_ALL $FILE || echo LC_ALL="$LOCALE" >> $FILE
53 # append LANG if not exist
54 grep LANG $FILE || echo LANG="$LOCALE" >> $FILE
55fi
0\ No newline at end of file56\ No newline at end of file
diff --git a/bootstrap/generated-dists/debian10/packages.yml b/bootstrap/generated-dists/debian10/packages.yml
1new file mode 10064457new file mode 100644
index 0000000..a242cd8
--- /dev/null
+++ b/bootstrap/generated-dists/debian10/packages.yml
@@ -0,0 +1,90 @@
1---
2packages:
3 - acl
4 - apt-utils
5 - attr
6 - autoconf
7 - bind9utils
8 - binutils
9 - bison
10 - build-essential
11 - chrpath
12 - curl
13 - debhelper
14 - dnsutils
15 - docbook-xml
16 - docbook-xsl
17 - flex
18 - gcc
19 - gdb
20 - git
21 - glusterfs-common
22 - gzip
23 - heimdal-multidev
24 - hostname
25 - htop
26 - krb5-config
27 - krb5-kdc
28 - krb5-user
29 - lcov
30 - libacl1-dev
31 - libarchive-dev
32 - libattr1-dev
33 - libavahi-common-dev
34 - libblkid-dev
35 - libbsd-dev
36 - libcap-dev
37 - libcephfs-dev
38 - libcups2-dev
39 - libdbus-1-dev
40 - libglib2.0-dev
41 - libgnutls28-dev
42 - libgpgme11-dev
43 - libicu-dev
44 - libjansson-dev
45 - libjs-jquery
46 - libjson-perl
47 - libkrb5-dev
48 - libldap2-dev
49 - liblmdb-dev
50 - libncurses5-dev
51 - libpam0g-dev
52 - libparse-yapp-perl
53 - libpcap-dev
54 - libpopt-dev
55 - libreadline-dev
56 - libsystemd-dev
57 - libtasn1-bin
58 - libtasn1-dev
59 - libunwind-dev
60 - lmdb-utils
61 - locales
62 - lsb-release
63 - make
64 - mawk
65 - mingw-w64
66 - patch
67 - perl
68 - perl-modules
69 - pkg-config
70 - procps
71 - psmisc
72 - python3
73 - python3-dbg
74 - python3-dev
75 - python3-dnspython
76 - python3-gpg
77 - python3-iso8601
78 - python3-markdown
79 - python3-matplotlib
80 - python3-pexpect
81 - rng-tools
82 - rsync
83 - sed
84 - sudo
85 - tar
86 - tree
87 - uuid-dev
88 - xfslibs-dev
89 - xsltproc
90 - zlib1g-dev
0\ No newline at end of file91\ No newline at end of file
diff --git a/bootstrap/generated-dists/debian7/bootstrap.sh b/bootstrap/generated-dists/debian7/bootstrap.sh
index fcba67c..daedce8 100755
--- a/bootstrap/generated-dists/debian7/bootstrap.sh
+++ b/bootstrap/generated-dists/debian7/bootstrap.sh
@@ -19,6 +19,7 @@ apt-get -y install \
19 binutils \19 binutils \
20 bison \20 bison \
21 build-essential \21 build-essential \
22 chrpath \
22 curl \23 curl \
23 debhelper \24 debhelper \
24 dnsutils \25 dnsutils \
@@ -38,7 +39,6 @@ apt-get -y install \
38 krb5-user \39 krb5-user \
39 lcov \40 lcov \
40 libacl1-dev \41 libacl1-dev \
41 libaio-dev \
42 libarchive-dev \42 libarchive-dev \
43 libattr1-dev \43 libattr1-dev \
44 libavahi-common-dev \44 libavahi-common-dev \
@@ -71,23 +71,13 @@ apt-get -y install \
71 make \71 make \
72 mawk \72 mawk \
73 mingw-w64 \73 mingw-w64 \
74 nettle-dev \
75 patch \74 patch \
76 perl \75 perl \
77 perl-modules \76 perl-modules \
78 pkg-config \77 pkg-config \
79 procps \78 procps \
80 psmisc \79 psmisc \
81 python-crypto \
82 python-dbg \
83 python-dev \
84 python-dnspython \
85 python-gpgme \
86 python-iso8601 \
87 python-markdown \
88 python-pexpect \
89 python3 \80 python3 \
90 python3-crypto \
91 python3-dbg \81 python3-dbg \
92 python3-dev \82 python3-dev \
93 python3-dnspython \83 python3-dnspython \
diff --git a/bootstrap/generated-dists/debian7/packages.yml b/bootstrap/generated-dists/debian7/packages.yml
index 62fd54b..3cac687 100644
--- a/bootstrap/generated-dists/debian7/packages.yml
+++ b/bootstrap/generated-dists/debian7/packages.yml
@@ -8,6 +8,7 @@ packages:
8 - binutils8 - binutils
9 - bison9 - bison
10 - build-essential10 - build-essential
11 - chrpath
11 - curl12 - curl
12 - debhelper13 - debhelper
13 - dnsutils14 - dnsutils
@@ -27,7 +28,6 @@ packages:
27 - krb5-user28 - krb5-user
28 - lcov29 - lcov
29 - libacl1-dev30 - libacl1-dev
30 - libaio-dev
31 - libarchive-dev31 - libarchive-dev
32 - libattr1-dev32 - libattr1-dev
33 - libavahi-common-dev33 - libavahi-common-dev
@@ -60,23 +60,13 @@ packages:
60 - make60 - make
61 - mawk61 - mawk
62 - mingw-w6462 - mingw-w64
63 - nettle-dev
64 - patch63 - patch
65 - perl64 - perl
66 - perl-modules65 - perl-modules
67 - pkg-config66 - pkg-config
68 - procps67 - procps
69 - psmisc68 - psmisc
70 - python-crypto
71 - python-dbg
72 - python-dev
73 - python-dnspython
74 - python-gpgme
75 - python-iso8601
76 - python-markdown
77 - python-pexpect
78 - python369 - python3
79 - python3-crypto
80 - python3-dbg70 - python3-dbg
81 - python3-dev71 - python3-dev
82 - python3-dnspython72 - python3-dnspython
diff --git a/bootstrap/generated-dists/debian8/bootstrap.sh b/bootstrap/generated-dists/debian8/bootstrap.sh
index 54e3f78..0105083 100755
--- a/bootstrap/generated-dists/debian8/bootstrap.sh
+++ b/bootstrap/generated-dists/debian8/bootstrap.sh
@@ -19,6 +19,7 @@ apt-get -y install \
19 binutils \19 binutils \
20 bison \20 bison \
21 build-essential \21 build-essential \
22 chrpath \
22 curl \23 curl \
23 debhelper \24 debhelper \
24 dnsutils \25 dnsutils \
@@ -38,7 +39,6 @@ apt-get -y install \
38 krb5-user \39 krb5-user \
39 lcov \40 lcov \
40 libacl1-dev \41 libacl1-dev \
41 libaio-dev \
42 libarchive-dev \42 libarchive-dev \
43 libattr1-dev \43 libattr1-dev \
44 libavahi-common-dev \44 libavahi-common-dev \
@@ -74,23 +74,13 @@ apt-get -y install \
74 make \74 make \
75 mawk \75 mawk \
76 mingw-w64 \76 mingw-w64 \
77 nettle-dev \
78 patch \77 patch \
79 perl \78 perl \
80 perl-modules \79 perl-modules \
81 pkg-config \80 pkg-config \
82 procps \81 procps \
83 psmisc \82 psmisc \
84 python-crypto \
85 python-dbg \
86 python-dev \
87 python-dnspython \
88 python-gpgme \
89 python-iso8601 \
90 python-markdown \
91 python-pexpect \
92 python3 \83 python3 \
93 python3-crypto \
94 python3-dbg \84 python3-dbg \
95 python3-dev \85 python3-dev \
96 python3-dnspython \86 python3-dnspython \
diff --git a/bootstrap/generated-dists/debian8/packages.yml b/bootstrap/generated-dists/debian8/packages.yml
index a65ca2f..1c9552b 100644
--- a/bootstrap/generated-dists/debian8/packages.yml
+++ b/bootstrap/generated-dists/debian8/packages.yml
@@ -8,6 +8,7 @@ packages:
8 - binutils8 - binutils
9 - bison9 - bison
10 - build-essential10 - build-essential
11 - chrpath
11 - curl12 - curl
12 - debhelper13 - debhelper
13 - dnsutils14 - dnsutils
@@ -27,7 +28,6 @@ packages:
27 - krb5-user28 - krb5-user
28 - lcov29 - lcov
29 - libacl1-dev30 - libacl1-dev
30 - libaio-dev
31 - libarchive-dev31 - libarchive-dev
32 - libattr1-dev32 - libattr1-dev
33 - libavahi-common-dev33 - libavahi-common-dev
@@ -63,23 +63,13 @@ packages:
63 - make63 - make
64 - mawk64 - mawk
65 - mingw-w6465 - mingw-w64
66 - nettle-dev
67 - patch66 - patch
68 - perl67 - perl
69 - perl-modules68 - perl-modules
70 - pkg-config69 - pkg-config
71 - procps70 - procps
72 - psmisc71 - psmisc
73 - python-crypto
74 - python-dbg
75 - python-dev
76 - python-dnspython
77 - python-gpgme
78 - python-iso8601
79 - python-markdown
80 - python-pexpect
81 - python372 - python3
82 - python3-crypto
83 - python3-dbg73 - python3-dbg
84 - python3-dev74 - python3-dev
85 - python3-dnspython75 - python3-dnspython
diff --git a/bootstrap/generated-dists/debian9/bootstrap.sh b/bootstrap/generated-dists/debian9/bootstrap.sh
index 4bc4214..f0847eb 100755
--- a/bootstrap/generated-dists/debian9/bootstrap.sh
+++ b/bootstrap/generated-dists/debian9/bootstrap.sh
@@ -19,6 +19,7 @@ apt-get -y install \
19 binutils \19 binutils \
20 bison \20 bison \
21 build-essential \21 build-essential \
22 chrpath \
22 curl \23 curl \
23 debhelper \24 debhelper \
24 dnsutils \25 dnsutils \
@@ -38,7 +39,6 @@ apt-get -y install \
38 krb5-user \39 krb5-user \
39 lcov \40 lcov \
40 libacl1-dev \41 libacl1-dev \
41 libaio-dev \
42 libarchive-dev \42 libarchive-dev \
43 libattr1-dev \43 libattr1-dev \
44 libavahi-common-dev \44 libavahi-common-dev \
@@ -74,23 +74,13 @@ apt-get -y install \
74 make \74 make \
75 mawk \75 mawk \
76 mingw-w64 \76 mingw-w64 \
77 nettle-dev \
78 patch \77 patch \
79 perl \78 perl \
80 perl-modules \79 perl-modules \
81 pkg-config \80 pkg-config \
82 procps \81 procps \
83 psmisc \82 psmisc \
84 python-crypto \
85 python-dbg \
86 python-dev \
87 python-dnspython \
88 python-gpg \
89 python-iso8601 \
90 python-markdown \
91 python-pexpect \
92 python3 \83 python3 \
93 python3-crypto \
94 python3-dbg \84 python3-dbg \
95 python3-dev \85 python3-dev \
96 python3-dnspython \86 python3-dnspython \
diff --git a/bootstrap/generated-dists/debian9/packages.yml b/bootstrap/generated-dists/debian9/packages.yml
index 0021d64..a242cd8 100644
--- a/bootstrap/generated-dists/debian9/packages.yml
+++ b/bootstrap/generated-dists/debian9/packages.yml
@@ -8,6 +8,7 @@ packages:
8 - binutils8 - binutils
9 - bison9 - bison
10 - build-essential10 - build-essential
11 - chrpath
11 - curl12 - curl
12 - debhelper13 - debhelper
13 - dnsutils14 - dnsutils
@@ -27,7 +28,6 @@ packages:
27 - krb5-user28 - krb5-user
28 - lcov29 - lcov
29 - libacl1-dev30 - libacl1-dev
30 - libaio-dev
31 - libarchive-dev31 - libarchive-dev
32 - libattr1-dev32 - libattr1-dev
33 - libavahi-common-dev33 - libavahi-common-dev
@@ -63,23 +63,13 @@ packages:
63 - make63 - make
64 - mawk64 - mawk
65 - mingw-w6465 - mingw-w64
66 - nettle-dev
67 - patch66 - patch
68 - perl67 - perl
69 - perl-modules68 - perl-modules
70 - pkg-config69 - pkg-config
71 - procps70 - procps
72 - psmisc71 - psmisc
73 - python-crypto
74 - python-dbg
75 - python-dev
76 - python-dnspython
77 - python-gpg
78 - python-iso8601
79 - python-markdown
80 - python-pexpect
81 - python372 - python3
82 - python3-crypto
83 - python3-dbg73 - python3-dbg
84 - python3-dev74 - python3-dev
85 - python3-dnspython75 - python3-dnspython
diff --git a/bootstrap/generated-dists/fedora29/bootstrap.sh b/bootstrap/generated-dists/fedora29/bootstrap.sh
index 048efa5..effe2a9 100755
--- a/bootstrap/generated-dists/fedora29/bootstrap.sh
+++ b/bootstrap/generated-dists/fedora29/bootstrap.sh
@@ -19,6 +19,7 @@ dnf install -y \
19 bind-utils \19 bind-utils \
20 binutils \20 binutils \
21 bison \21 bison \
22 chrpath \
22 cups-devel \23 cups-devel \
23 curl \24 curl \
24 dbus-devel \25 dbus-devel \
@@ -45,7 +46,6 @@ dnf install -y \
45 krb5-server \46 krb5-server \
46 lcov \47 lcov \
47 libacl-devel \48 libacl-devel \
48 libaio-devel \
49 libarchive-devel \49 libarchive-devel \
50 libattr-devel \50 libattr-devel \
51 libblkid-devel \51 libblkid-devel \
@@ -67,7 +67,6 @@ dnf install -y \
67 make \67 make \
68 mingw64-gcc \68 mingw64-gcc \
69 ncurses-devel \69 ncurses-devel \
70 nettle-devel \
71 openldap-devel \70 openldap-devel \
72 pam-devel \71 pam-devel \
73 patch \72 patch \
@@ -84,13 +83,7 @@ dnf install -y \
84 popt-devel \83 popt-devel \
85 procps-ng \84 procps-ng \
86 psmisc \85 psmisc \
87 python-crypto \
88 python-devel \
89 python-dns \
90 python-markdown \
91 python2-gpg \
92 python3 \86 python3 \
93 python3-crypto \
94 python3-devel \87 python3-devel \
95 python3-dns \88 python3-dns \
96 python3-gpg \89 python3-gpg \
diff --git a/bootstrap/generated-dists/fedora29/packages.yml b/bootstrap/generated-dists/fedora29/packages.yml
index c96df0b..3b767f8 100644
--- a/bootstrap/generated-dists/fedora29/packages.yml
+++ b/bootstrap/generated-dists/fedora29/packages.yml
@@ -8,6 +8,7 @@ packages:
8 - bind-utils8 - bind-utils
9 - binutils9 - binutils
10 - bison10 - bison
11 - chrpath
11 - cups-devel12 - cups-devel
12 - curl13 - curl
13 - dbus-devel14 - dbus-devel
@@ -34,7 +35,6 @@ packages:
34 - krb5-server35 - krb5-server
35 - lcov36 - lcov
36 - libacl-devel37 - libacl-devel
37 - libaio-devel
38 - libarchive-devel38 - libarchive-devel
39 - libattr-devel39 - libattr-devel
40 - libblkid-devel40 - libblkid-devel
@@ -56,7 +56,6 @@ packages:
56 - make56 - make
57 - mingw64-gcc57 - mingw64-gcc
58 - ncurses-devel58 - ncurses-devel
59 - nettle-devel
60 - openldap-devel59 - openldap-devel
61 - pam-devel60 - pam-devel
62 - patch61 - patch
@@ -73,13 +72,7 @@ packages:
73 - popt-devel72 - popt-devel
74 - procps-ng73 - procps-ng
75 - psmisc74 - psmisc
76 - python-crypto
77 - python-devel
78 - python-dns
79 - python-markdown
80 - python2-gpg
81 - python375 - python3
82 - python3-crypto
83 - python3-devel76 - python3-devel
84 - python3-dns77 - python3-dns
85 - python3-gpg78 - python3-gpg
diff --git a/bootstrap/generated-dists/fedora30/bootstrap.sh b/bootstrap/generated-dists/fedora30/bootstrap.sh
index 048efa5..effe2a9 100755
--- a/bootstrap/generated-dists/fedora30/bootstrap.sh
+++ b/bootstrap/generated-dists/fedora30/bootstrap.sh
@@ -19,6 +19,7 @@ dnf install -y \
19 bind-utils \19 bind-utils \
20 binutils \20 binutils \
21 bison \21 bison \
22 chrpath \
22 cups-devel \23 cups-devel \
23 curl \24 curl \
24 dbus-devel \25 dbus-devel \
@@ -45,7 +46,6 @@ dnf install -y \
45 krb5-server \46 krb5-server \
46 lcov \47 lcov \
47 libacl-devel \48 libacl-devel \
48 libaio-devel \
49 libarchive-devel \49 libarchive-devel \
50 libattr-devel \50 libattr-devel \
51 libblkid-devel \51 libblkid-devel \
@@ -67,7 +67,6 @@ dnf install -y \
67 make \67 make \
68 mingw64-gcc \68 mingw64-gcc \
69 ncurses-devel \69 ncurses-devel \
70 nettle-devel \
71 openldap-devel \70 openldap-devel \
72 pam-devel \71 pam-devel \
73 patch \72 patch \
@@ -84,13 +83,7 @@ dnf install -y \
84 popt-devel \83 popt-devel \
85 procps-ng \84 procps-ng \
86 psmisc \85 psmisc \
87 python-crypto \
88 python-devel \
89 python-dns \
90 python-markdown \
91 python2-gpg \
92 python3 \86 python3 \
93 python3-crypto \
94 python3-devel \87 python3-devel \
95 python3-dns \88 python3-dns \
96 python3-gpg \89 python3-gpg \
diff --git a/bootstrap/generated-dists/fedora30/packages.yml b/bootstrap/generated-dists/fedora30/packages.yml
index c96df0b..3b767f8 100644
--- a/bootstrap/generated-dists/fedora30/packages.yml
+++ b/bootstrap/generated-dists/fedora30/packages.yml
@@ -8,6 +8,7 @@ packages:
8 - bind-utils8 - bind-utils
9 - binutils9 - binutils
10 - bison10 - bison
11 - chrpath
11 - cups-devel12 - cups-devel
12 - curl13 - curl
13 - dbus-devel14 - dbus-devel
@@ -34,7 +35,6 @@ packages:
34 - krb5-server35 - krb5-server
35 - lcov36 - lcov
36 - libacl-devel37 - libacl-devel
37 - libaio-devel
38 - libarchive-devel38 - libarchive-devel
39 - libattr-devel39 - libattr-devel
40 - libblkid-devel40 - libblkid-devel
@@ -56,7 +56,6 @@ packages:
56 - make56 - make
57 - mingw64-gcc57 - mingw64-gcc
58 - ncurses-devel58 - ncurses-devel
59 - nettle-devel
60 - openldap-devel59 - openldap-devel
61 - pam-devel60 - pam-devel
62 - patch61 - patch
@@ -73,13 +72,7 @@ packages:
73 - popt-devel72 - popt-devel
74 - procps-ng73 - procps-ng
75 - psmisc74 - psmisc
76 - python-crypto
77 - python-devel
78 - python-dns
79 - python-markdown
80 - python2-gpg
81 - python375 - python3
82 - python3-crypto
83 - python3-devel76 - python3-devel
84 - python3-dns77 - python3-dns
85 - python3-gpg78 - python3-gpg
diff --git a/bootstrap/generated-dists/fedora31/Dockerfile b/bootstrap/generated-dists/fedora31/Dockerfile
86new file mode 10064479new file mode 100644
index 0000000..ff8d0b4
--- /dev/null
+++ b/bootstrap/generated-dists/fedora31/Dockerfile
@@ -0,0 +1,27 @@
1#
2# This file is generated by 'bootstrap/template.py --render'
3# See also bootstrap/config.py
4#
5
6FROM fedora:31
7
8# pass in with --build-arg while build
9ARG SHA1SUM
10RUN [ -n $SHA1SUM ] && echo $SHA1SUM > /sha1sum.txt
11
12ADD *.sh /tmp/
13# need root permission, do it before USER samba
14RUN /tmp/bootstrap.sh && /tmp/locale.sh
15
16# if ld.gold exists, force link it to ld
17RUN 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"
18
19# make test can not work with root, so we have to create a new user
20RUN useradd -m -U -s /bin/bash samba && \
21 mkdir -p /etc/sudoers.d && \
22 echo "samba ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/samba
23
24USER samba
25WORKDIR /home/samba
26# samba tests rely on this
27ENV USER=samba LC_ALL=en_US.utf8 LANG=en_US.utf8
0\ No newline at end of file28\ No newline at end of file
diff --git a/bootstrap/generated-dists/fedora28/bootstrap.sh b/bootstrap/generated-dists/fedora31/bootstrap.sh
1similarity index 93%29similarity index 93%
2rename from bootstrap/generated-dists/fedora28/bootstrap.sh30rename from bootstrap/generated-dists/fedora28/bootstrap.sh
3rename to bootstrap/generated-dists/fedora31/bootstrap.sh31rename to bootstrap/generated-dists/fedora31/bootstrap.sh
index 048efa5..18c5809 100755
--- a/bootstrap/generated-dists/fedora28/bootstrap.sh
+++ b/bootstrap/generated-dists/fedora31/bootstrap.sh
@@ -19,6 +19,7 @@ dnf install -y \
19 bind-utils \19 bind-utils \
20 binutils \20 binutils \
21 bison \21 bison \
22 chrpath \
22 cups-devel \23 cups-devel \
23 curl \24 curl \
24 dbus-devel \25 dbus-devel \
@@ -45,7 +46,6 @@ dnf install -y \
45 krb5-server \46 krb5-server \
46 lcov \47 lcov \
47 libacl-devel \48 libacl-devel \
48 libaio-devel \
49 libarchive-devel \49 libarchive-devel \
50 libattr-devel \50 libattr-devel \
51 libblkid-devel \51 libblkid-devel \
@@ -55,11 +55,11 @@ dnf install -y \
55 libicu-devel \55 libicu-devel \
56 libnsl2-devel \56 libnsl2-devel \
57 libpcap-devel \57 libpcap-devel \
58 libsemanage-python \
59 libtasn1-devel \58 libtasn1-devel \
60 libtasn1-tools \59 libtasn1-tools \
61 libtirpc-devel \60 libtirpc-devel \
62 libunwind-devel \61 libunwind-devel \
62 liburing-devel \
63 libuuid-devel \63 libuuid-devel \
64 libxslt \64 libxslt \
65 lmdb \65 lmdb \
@@ -67,7 +67,6 @@ dnf install -y \
67 make \67 make \
68 mingw64-gcc \68 mingw64-gcc \
69 ncurses-devel \69 ncurses-devel \
70 nettle-devel \
71 openldap-devel \70 openldap-devel \
72 pam-devel \71 pam-devel \
73 patch \72 patch \
@@ -80,21 +79,16 @@ dnf install -y \
80 perl-generators \79 perl-generators \
81 perl-interpreter \80 perl-interpreter \
82 pkgconfig \81 pkgconfig \
83 policycoreutils-python \
84 popt-devel \82 popt-devel \
85 procps-ng \83 procps-ng \
86 psmisc \84 psmisc \
87 python-crypto \
88 python-devel \
89 python-dns \
90 python-markdown \
91 python2-gpg \
92 python3 \85 python3 \
93 python3-crypto \
94 python3-devel \86 python3-devel \
95 python3-dns \87 python3-dns \
96 python3-gpg \88 python3-gpg \
89 python3-libsemanage \
97 python3-markdown \90 python3-markdown \
91 python3-policycoreutils \
98 quota-devel \92 quota-devel \
99 readline-devel \93 readline-devel \
100 redhat-lsb \94 redhat-lsb \
diff --git a/bootstrap/generated-dists/fedora31/locale.sh b/bootstrap/generated-dists/fedora31/locale.sh
101new file mode 10075595new file mode 100755
index 0000000..cc64e18
--- /dev/null
+++ b/bootstrap/generated-dists/fedora31/locale.sh
@@ -0,0 +1,55 @@
1#!/bin/bash
2
3#
4# This file is generated by 'bootstrap/template.py --render'
5# See also bootstrap/config.py
6#
7
8set -xueo pipefail
9
10# refer to /usr/share/i18n/locales
11INPUTFILE=en_US
12# refer to /usr/share/i18n/charmaps
13CHARMAP=UTF-8
14# locale to generate in /usr/lib/locale
15# glibc/localedef will normalize UTF-8 to utf8, follow the naming style
16LOCALE=$INPUTFILE.utf8
17
18# if locale is already correct, exit
19( locale | grep LC_ALL | grep -i $LOCALE ) && exit 0
20
21# if locale not available, generate locale into /usr/lib/locale
22if ! ( locale --all-locales | grep -i $LOCALE )
23then
24 # no-archive means create its own dir
25 localedef --inputfile $INPUTFILE --charmap $CHARMAP --no-archive $LOCALE
26fi
27
28# update locale conf and global env file
29# set both LC_ALL and LANG for safe
30
31# update conf for Debian family
32FILE=/etc/default/locale
33if [ -f $FILE ]
34then
35 echo LC_ALL="$LOCALE" > $FILE
36 echo LANG="$LOCALE" >> $FILE
37fi
38
39# update conf for RedHat family
40FILE=/etc/locale.conf
41if [ -f $FILE ]
42then
43 # LC_ALL is not valid in this file, set LANG only
44 echo LANG="$LOCALE" > $FILE
45fi
46
47# update global env file
48FILE=/etc/environment
49if [ -f $FILE ]
50then
51 # append LC_ALL if not exist
52 grep LC_ALL $FILE || echo LC_ALL="$LOCALE" >> $FILE
53 # append LANG if not exist
54 grep LANG $FILE || echo LANG="$LOCALE" >> $FILE
55fi
0\ No newline at end of file56\ No newline at end of file
diff --git a/bootstrap/generated-dists/fedora28/packages.yml b/bootstrap/generated-dists/fedora31/packages.yml
1similarity index 92%57similarity index 92%
2rename from bootstrap/generated-dists/fedora28/packages.yml58rename from bootstrap/generated-dists/fedora28/packages.yml
3rename to bootstrap/generated-dists/fedora31/packages.yml59rename to bootstrap/generated-dists/fedora31/packages.yml
index c96df0b..3165af8 100644
--- a/bootstrap/generated-dists/fedora28/packages.yml
+++ b/bootstrap/generated-dists/fedora31/packages.yml
@@ -8,6 +8,7 @@ packages:
8 - bind-utils8 - bind-utils
9 - binutils9 - binutils
10 - bison10 - bison
11 - chrpath
11 - cups-devel12 - cups-devel
12 - curl13 - curl
13 - dbus-devel14 - dbus-devel
@@ -34,7 +35,6 @@ packages:
34 - krb5-server35 - krb5-server
35 - lcov36 - lcov
36 - libacl-devel37 - libacl-devel
37 - libaio-devel
38 - libarchive-devel38 - libarchive-devel
39 - libattr-devel39 - libattr-devel
40 - libblkid-devel40 - libblkid-devel
@@ -44,11 +44,11 @@ packages:
44 - libicu-devel44 - libicu-devel
45 - libnsl2-devel45 - libnsl2-devel
46 - libpcap-devel46 - libpcap-devel
47 - libsemanage-python
48 - libtasn1-devel47 - libtasn1-devel
49 - libtasn1-tools48 - libtasn1-tools
50 - libtirpc-devel49 - libtirpc-devel
51 - libunwind-devel50 - libunwind-devel
51 - liburing-devel
52 - libuuid-devel52 - libuuid-devel
53 - libxslt53 - libxslt
54 - lmdb54 - lmdb
@@ -56,7 +56,6 @@ packages:
56 - make56 - make
57 - mingw64-gcc57 - mingw64-gcc
58 - ncurses-devel58 - ncurses-devel
59 - nettle-devel
60 - openldap-devel59 - openldap-devel
61 - pam-devel60 - pam-devel
62 - patch61 - patch
@@ -69,21 +68,16 @@ packages:
69 - perl-generators68 - perl-generators
70 - perl-interpreter69 - perl-interpreter
71 - pkgconfig70 - pkgconfig
72 - policycoreutils-python
73 - popt-devel71 - popt-devel
74 - procps-ng72 - procps-ng
75 - psmisc73 - psmisc
76 - python-crypto
77 - python-devel
78 - python-dns
79 - python-markdown
80 - python2-gpg
81 - python374 - python3
82 - python3-crypto
83 - python3-devel75 - python3-devel
84 - python3-dns76 - python3-dns
85 - python3-gpg77 - python3-gpg
78 - python3-libsemanage
86 - python3-markdown79 - python3-markdown
80 - python3-policycoreutils
87 - quota-devel81 - quota-devel
88 - readline-devel82 - readline-devel
89 - redhat-lsb83 - redhat-lsb
diff --git a/bootstrap/generated-dists/opensuse150/bootstrap.sh b/bootstrap/generated-dists/opensuse150/bootstrap.sh
index 4bf205e..3fbcaac 100755
--- a/bootstrap/generated-dists/opensuse150/bootstrap.sh
+++ b/bootstrap/generated-dists/opensuse150/bootstrap.sh
@@ -19,6 +19,7 @@ zypper --non-interactive install \
19 bind-utils \19 bind-utils \
20 binutils \20 binutils \
21 bison \21 bison \
22 chrpath \
22 cups-devel \23 cups-devel \
23 curl \24 curl \
24 dbus-1-devel \25 dbus-1-devel \
@@ -42,7 +43,6 @@ zypper --non-interactive install \
42 krb5-server \43 krb5-server \
43 lcov \44 lcov \
44 libacl-devel \45 libacl-devel \
45 libaio-devel \
46 libarchive-devel \46 libarchive-devel \
47 libattr-devel \47 libattr-devel \
48 libblkid-devel \48 libblkid-devel \
@@ -51,7 +51,6 @@ zypper --non-interactive install \
51 libcephfs-devel \51 libcephfs-devel \
52 libicu-devel \52 libicu-devel \
53 libjansson-devel \53 libjansson-devel \
54 libnettle-devel \
55 libnsl-devel \54 libnsl-devel \
56 libpcap-devel \55 libpcap-devel \
57 libtasn1-devel \56 libtasn1-devel \
@@ -78,18 +77,12 @@ zypper --non-interactive install \
78 popt-devel \77 popt-devel \
79 procps \78 procps \
80 psmisc \79 psmisc \
81 python-crypto \
82 python-devel \
83 python-markdown \
84 python2-dnspython \
85 python2-gpg \
86 python2-semanage \80 python2-semanage \
87 python3 \81 python3 \
88 python3-Markdown \82 python3-Markdown \
89 python3-devel \83 python3-devel \
90 python3-dnspython \84 python3-dnspython \
91 python3-gpg \85 python3-gpg \
92 python3-pycrypto \
93 readline-devel \86 readline-devel \
94 rng-tools \87 rng-tools \
95 rpcgen \88 rpcgen \
diff --git a/bootstrap/generated-dists/opensuse150/packages.yml b/bootstrap/generated-dists/opensuse150/packages.yml
index 8183e89..0eb1924 100644
--- a/bootstrap/generated-dists/opensuse150/packages.yml
+++ b/bootstrap/generated-dists/opensuse150/packages.yml
@@ -7,6 +7,7 @@ packages:
7 - bind-utils7 - bind-utils
8 - binutils8 - binutils
9 - bison9 - bison
10 - chrpath
10 - cups-devel11 - cups-devel
11 - curl12 - curl
12 - dbus-1-devel13 - dbus-1-devel
@@ -30,7 +31,6 @@ packages:
30 - krb5-server31 - krb5-server
31 - lcov32 - lcov
32 - libacl-devel33 - libacl-devel
33 - libaio-devel
34 - libarchive-devel34 - libarchive-devel
35 - libattr-devel35 - libattr-devel
36 - libblkid-devel36 - libblkid-devel
@@ -39,7 +39,6 @@ packages:
39 - libcephfs-devel39 - libcephfs-devel
40 - libicu-devel40 - libicu-devel
41 - libjansson-devel41 - libjansson-devel
42 - libnettle-devel
43 - libnsl-devel42 - libnsl-devel
44 - libpcap-devel43 - libpcap-devel
45 - libtasn1-devel44 - libtasn1-devel
@@ -66,18 +65,12 @@ packages:
66 - popt-devel65 - popt-devel
67 - procps66 - procps
68 - psmisc67 - psmisc
69 - python-crypto
70 - python-devel
71 - python-markdown
72 - python2-dnspython
73 - python2-gpg
74 - python2-semanage68 - python2-semanage
75 - python369 - python3
76 - python3-Markdown70 - python3-Markdown
77 - python3-devel71 - python3-devel
78 - python3-dnspython72 - python3-dnspython
79 - python3-gpg73 - python3-gpg
80 - python3-pycrypto
81 - readline-devel74 - readline-devel
82 - rng-tools75 - rng-tools
83 - rpcgen76 - rpcgen
diff --git a/bootstrap/generated-dists/opensuse151/bootstrap.sh b/bootstrap/generated-dists/opensuse151/bootstrap.sh
index 4bf205e..3fbcaac 100755
--- a/bootstrap/generated-dists/opensuse151/bootstrap.sh
+++ b/bootstrap/generated-dists/opensuse151/bootstrap.sh
@@ -19,6 +19,7 @@ zypper --non-interactive install \
19 bind-utils \19 bind-utils \
20 binutils \20 binutils \
21 bison \21 bison \
22 chrpath \
22 cups-devel \23 cups-devel \
23 curl \24 curl \
24 dbus-1-devel \25 dbus-1-devel \
@@ -42,7 +43,6 @@ zypper --non-interactive install \
42 krb5-server \43 krb5-server \
43 lcov \44 lcov \
44 libacl-devel \45 libacl-devel \
45 libaio-devel \
46 libarchive-devel \46 libarchive-devel \
47 libattr-devel \47 libattr-devel \
48 libblkid-devel \48 libblkid-devel \
@@ -51,7 +51,6 @@ zypper --non-interactive install \
51 libcephfs-devel \51 libcephfs-devel \
52 libicu-devel \52 libicu-devel \
53 libjansson-devel \53 libjansson-devel \
54 libnettle-devel \
55 libnsl-devel \54 libnsl-devel \
56 libpcap-devel \55 libpcap-devel \
57 libtasn1-devel \56 libtasn1-devel \
@@ -78,18 +77,12 @@ zypper --non-interactive install \
78 popt-devel \77 popt-devel \
79 procps \78 procps \
80 psmisc \79 psmisc \
81 python-crypto \
82 python-devel \
83 python-markdown \
84 python2-dnspython \
85 python2-gpg \
86 python2-semanage \80 python2-semanage \
87 python3 \81 python3 \
88 python3-Markdown \82 python3-Markdown \
89 python3-devel \83 python3-devel \
90 python3-dnspython \84 python3-dnspython \
91 python3-gpg \85 python3-gpg \
92 python3-pycrypto \
93 readline-devel \86 readline-devel \
94 rng-tools \87 rng-tools \
95 rpcgen \88 rpcgen \
diff --git a/bootstrap/generated-dists/opensuse151/packages.yml b/bootstrap/generated-dists/opensuse151/packages.yml
index 8183e89..0eb1924 100644
--- a/bootstrap/generated-dists/opensuse151/packages.yml
+++ b/bootstrap/generated-dists/opensuse151/packages.yml
@@ -7,6 +7,7 @@ packages:
7 - bind-utils7 - bind-utils
8 - binutils8 - binutils
9 - bison9 - bison
10 - chrpath
10 - cups-devel11 - cups-devel
11 - curl12 - curl
12 - dbus-1-devel13 - dbus-1-devel
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches