[SCM] Samba Shared Repository - branch v4-4-stable updated
Karolin Seeger
kseeger at samba.org
Tue Mar 22 09:06:35 UTC 2016
The branch, v4-4-stable has been updated
via 30812c4 VERSION: Set version to 4.4.0...
via 5a1b236 WHATSNEW: Add release notes for Samba 4.4.0.
via d864232 lib/socket/interfaces: Fix some uninitialied bytes.
via 5d8c95f build: fix build when --without-quota specified
via 8ed6376 WHATSNEW: document the experimental smb3-multi-channel feature
via 356cff2 VERSION: Bump version up to 4.4.0rc6...
via 3026d93 VERSION: Disable git snapshots for the Samba 4.4.0rc5 release.
via b65c5f1 WHATSNEW: Add release notes for Samba 4.4.0rc5.
via 8984b15 smbd: enable multi-channel if 'server multi channel support = yes' in the config
via 4895c3f param: add parameter "server multi channel support", defaults to off.
via 40fb6fd selftest: Avoid sorting issues on Ubuntu 10.04 vs 14.04
via 5184015 pytalloc: Correct description of pytalloc_Get{Base,}ObjectType behaviour
via caab62a dbcheck: Check for and remove duplicate values in attributes
via 017f1db selftest: Allow 4 hours for the test to run (ouch!)
via 4b29e7b pysmb: Use pytalloc_BaseObject_PyType_Ready()
via f7c7cbd pysmb: Do not use pytalloc_Object directly
via b784432 pysmb: Rework py_smb_new() to use pytalloc_steal()
via 2b1ff18 pysmb: Use pytalloc_get_mem_ctx()
via 7ea3e7f pysmb: Use pytalloc_get_ptr()
via 5d9eeb5 pyregistry: Use pytalloc_BaseObject_PyType_Ready()
via a40c6f9 pyauth: Use pytalloc_BaseObject_PyType_Ready()
via 914347f pygensec: Use pytalloc_BaseObject_PyType_Ready()
via 39b05c2 pygensec: Use pytalloc_steal() in gensec_start_{client,server}()
via 4cc1351 pyparam: Use pytalloc_BaseObject_PyType_Ready()
via 83aef0a py_passdb: Use pytalloc_BaseObject_PyType_Ready()
via d837f8d pycredentials: Use pytalloc_BaseObject_PyType_Ready()
via ac3265b pytalloc: Add pytalloc_BaseObject_PyType_Ready() wrapper
via 819a07a pyparam: Do not use pytalloc_Object directly
via 1e839dc pypassdb: Do not use pytalloc_Object directly
via 42dfaa1 pycredentials: Remove PyCredentialCacheContainerObject
via ec66fe1 pycredentials: Do not use pytalloc_Object directly
via 7bb3111 dbcheck: Avoid spurious warnings in dbcheck due to objectclass sorting
via d9b2796 dbcheck: Fix incorrect/duplicate attrid in replPropertMetaData
via 6a89304 selftest: Update release-4-1-0rc3 with more test records
via 934623f rpc_server/drsuapi: Block replication of incorrect/duplicate attrid in replPropertMetaData
via 21bf6af repl_meta_data: Correctly use msDS-IntId for custom schema, not the prefixMap value
via d3bffda pidl: Use a tmp_ctx helper variable
via 7391fc8 pidl: Use the $mem_ctx helper variable
via 22905ce pidl: Fix our python reference handling
via 1e035b5 pyrpc: Clarify failure mode after pytalloc_reference_ex() improvements
via 4398286 talloc: Bump version number
via ab1bcc3 pytalloc: Add new BaseObject
via 61ba9bc pytalloc: add a _pytalloc_get_type() helper function and generate PyExc_TypeError on mismatch
via e2cd642 talloc: add _pytalloc_get_ptr/_pytalloc_get_mem_ctx helper functions
via 5a22910 talloc: Improve testsuite by avoiding path issues
via 058b78c pyrpc: Add warning about abuse of py_return_ndr_struct()
via aac2ecc pydsdb: Fix returning of ldb.MessageElement.
via 6e83a84 pyldb: Add warning about pyldb_MessageElement_AsMessageElement()
via b9d924a selftest: specify a maximum runtime for 'make testenv' of 1 year
via fbb57a5 s3/passdb/py_passdb.c: free frame before returning
via a411046 build: mark explicit dependencies on pytalloc-util
via 1b08ea3 libsmb/pysmb: add pytalloc-util dependency to fix the build.
via 9ab767f selftest: mark samba4.winbind.struct.domain_info.ad_member as flapping
via 36b0b0e build: fix disk-free quota support on Solaris 10
via 29b44e5 smbd: Only check dev/inode in open_directory, not the full stat()
via a44025b s3:winbindd: don't unclude two '
via a83a26f s3:libnet:libnet_join: update msDS-SupportedEncryptionTypes (if required) with machine creds.
via a35ce5d s3:libnet:libnet_join: fill in output enctypes and only modify when necessary.
via 60c5909 s3:libnet:libnet_join: define list of desired encryption types only once.
via acc8dd2 s3:librpc:idl:libnet_join: add encryption types to libnet_JoinCtx.
via e2b8b2c s3:libnet:libnet_join: always try to create machineaccount via LDAP first.
via 35ecc4d s3:libads:ldap: fix ads_check_ou_dn to deal with account_ou not being initialized
via c6f7bbd s3:libads:ndr: add ADS_AUTH_USER_CREDS to ndr_print_ads_auth_flags()
via 0dc8e31 s3:libads:ldap: print LDAP error message with log level 10.
via f74d7f5 s3:libnet:libnet_join: prepare to allow connecting with machine creds.
via 35ec8ac Partly revert "s3:libads: setup the msDS-SupportedEncryptionTypes attribute on ldap_add"
via 0268dc2 vfs_glusterfs: Fix use after free in AIO callback.
via 4e48421 s3:smbd: add negprot remote arch detection for OSX
via 9d588a9 s3:smbd: rework negprot remote arch detection
via 28e5e95 ctdb-common: For AF_PACKET socket types, protocol is in network order
via 5b42463 libnet: make Kerberos domain join site-aware
via 16e970f dsgetdcname: fix flag check
via da0f03b dsgetdcname: return an IP address on rediscovery
via 38091dd dsdb/repl: Ensure we use the LOCAL attid value, not the remote one
via 2a808590 smbd:smb2: move op variable into scope of use in smb2_create_send
via 8743f5b smbd:smb2: implement create replay
via a894f15 smbXsrv.idl: add create_action to smbXsrv_open
via 9bce93b smbXsrv:open: add smb2srv_open_lookup_replay_cache()
via 609faee smb2:create: create replay cache when request has a create_guid
via 579fb66 smbXsrv:open: maintain a replay cache
via 42a81bf librpc:smbXsrv.idl: add flags to smbXsrv_open
via 19d66b4 smbd:smb2: allow the REPLAY_OPERATION flag for SMB3+ requests
via 1938d56 torture:smb2: add smb2.replay.replay-dhv2-lease3
via fc3c842 torture:smb2: add smb2.replay.replay-oplock-lease
via 9323ec5 torture:smb2: add smb2.replay.replay-dhv2-lease-oplock
via ef65682 torture:smb2: add smb2.replay.replay-dhv2-lease2
via e2e2546 torture:smb2: add smb2.replay.replay-dhv2-lease1
via b59ff11 torture:smb2:replay: extend CHECK_CREATE_OUT() to know leases
via 1efc89d torture:smb2: split rename2 into multiple tests and extend these
via d601af8 torture:smb2: rename replay1 -> replay-commands
via 26577db torture:smb2: skip replay4 if server does not support multi-channel
via 2d82282 smbd: fix crash in smbXsrv_client_global_remove()
via 5782344 netlogon_creds_cli: use dbwrap_purge instead of dbwrap_delete where appropriate
via 5b439f5 s3:registry: use dbwrap_purge_bystring instead of dbwrap_delete_bystring
via c0fc2c3 dbwrap: add dbwrap_purge[_bystring]
via a5a7947 dbwrap_util: improve a debug message in dbwrap_delete_action()
via b882ed1a torture:smb2: fix skip message if share is not CA
via d019891 torture:smb2: skip replay5 test if server does not support persistent handles
via d3a024a torture:smb2: skip replay3 if server does not support Multi-Channel
via d3206e9 smbd:smb2_creat: remove outdated TODO comments
via d0db200 smbXsrv_client: factor fetch-locking of global record into function
via 8d8e111 smbXsrv_session: factor fetch-locking of local record into function
via 7bbdd9a smbXsrv_session: factor fetch-locking of global record into function
via 3eec659 smbXsrv_tcon: factor fetch-locking of local record into function
via d5d58b9 smbXsrv_tcon: factor fetch-locking of global record into function
via 6c78c8d smbXsrv_open: factor fetch-locking of local record into function
via c3fcfad smbXsrv_open: factor fetch-locking of global record into function
via 0b6c3b5 torture:smb2: improve torture_comments in connect test
via 141605e torture:smb2: fix memory leak in connect test.
via cf7a4e1 torture:smb2: rewrite connect test to use torture_asserts for create errors
via 2dd63e5 torture:smb2: rewrite connect test to use torture_asserts
via 95c7f0f s4-torture: let smb2.replay.replay4 test deal with scale out shares.
via d20a4c2 s4-torture: let smb2.replay.replay3 test deal with scale out shares.
via d194ce0 s4-torture: let smb2.replay.replay2 test deal with scale out shares.
via 19c381c s4:libcli/ldap: add support for LDB_CONTROL_DIRSYNC_EX_OID
via 2a1ceb8 ldb: version 1.1.26
via 02e325f ldb: add support for LDB_CONTROL_DIRSYNC_EX
via 530693d ldb: add LDB_ATTR_FLAG_FORCE_BASE64_LDIF support
via 33f4491 pyldb: eliminate warnings from python api test
via f12c897 pyldb: add api tests for search_iterator()
via e5c7304 pyldb: add ldb.search_iterator()
via 66112f6 pyldb: fix help message for ldb.search()
via 11c06aa pyldb: fix memory leak in py_ldb_search()
via f305aae pyldb: Free correct context when pyldb_Object_AsDn() fails
via 68b76db ldb: allow a timeout of -1 result in no timeout timer at all.
via 7a6c31d ldb-samba: fix the timeout setup in ildb_request_send()
via f511bb3 s4:libcli/ldap: send AbandonRequests for cancelled requests
via 68dc117 ldb:ABI: add missing pyldb-util.py3-1.1.25.sigs
via 2a420aa ldb: Avoid a "talloc_steal"
via d2e0047 ldb: Fix some whitespace
via a5239be VERSION: Bump version up to 4.4.0rc5...
from 331c2a3 VERSION: Disable git snapshots for the Samba 4.4.0rc4 release.
https://git.samba.org/?p=samba.git;a=shortlog;h=v4-4-stable
- Log -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
VERSION | 2 +-
WHATSNEW.txt | 101 +-
auth/credentials/pycredentials.c | 164 +-
auth/credentials/pycredentials.h | 5 -
ctdb/common/system_linux.c | 6 +-
.../protocol/servermultichannelsupport.xml | 21 +
lib/dbwrap/dbwrap.h | 2 +
lib/dbwrap/dbwrap_util.c | 20 +-
lib/ldb-samba/ldb_ildap.c | 12 +-
lib/ldb/ABI/{ldb-1.1.25.sigs => ldb-1.1.26.sigs} | 0
...ldb-util-1.1.10.sigs => pyldb-util-1.1.26.sigs} | 0
...util-1.1.10.sigs => pyldb-util.py3-1.1.25.sigs} | 0
...util-1.1.10.sigs => pyldb-util.py3-1.1.26.sigs} | 0
lib/ldb/common/ldb_controls.c | 65 +
lib/ldb/common/ldb_ldif.c | 77 +-
lib/ldb/include/ldb.h | 7 +
lib/ldb/ldb_ldap/ldb_ldap.c | 18 +-
lib/ldb/ldb_sqlite3/ldb_sqlite3.c | 11 +-
lib/ldb/ldb_tdb/ldb_tdb.c | 14 +-
lib/ldb/pyldb.c | 385 +-
lib/ldb/pyldb.h | 7 +
lib/ldb/tests/python/api.py | 108 +-
lib/ldb/tools/cmdline.c | 33 +
lib/ldb/wscript | 2 +-
lib/socket/interfaces.c | 1 +
lib/talloc/ABI/pytalloc-util-2.1.6.sigs | 13 +
lib/talloc/ABI/pytalloc-util.py3-2.1.6.sigs | 12 +
.../ABI/{talloc-2.1.4.sigs => talloc-2.1.6.sigs} | 0
lib/talloc/pytalloc.c | 86 +
lib/talloc/pytalloc.h | 23 +-
lib/talloc/pytalloc_guide.txt | 40 +-
.../auth/pyauth.h => lib/talloc/pytalloc_private.h | 25 +-
lib/talloc/pytalloc_util.c | 199 +-
lib/talloc/test_magic_differs.sh | 10 +-
lib/talloc/test_pytalloc.c | 83 +-
lib/talloc/test_pytalloc.py | 73 +-
lib/talloc/wscript | 7 +-
libcli/auth/netlogon_creds_cli.c | 14 +-
libcli/smb/smb_constants.h | 1 -
pidl/lib/Parse/Pidl/Samba4/Python.pm | 29 +-
python/samba/dbchecker.py | 160 +-
python/samba/tests/dcerpc/array.py | 171 +
python/samba/tests/dcerpc/rpc_talloc.py | 14 +-
selftest/flapping | 1 +
selftest/knownfail | 2 -
selftest/selftest.pl | 10 +-
source3/libads/ads_proto.h | 6 +-
source3/libads/ldap.c | 44 +-
source3/libads/ndr.c | 1 +
source3/libnet/libnet_join.c | 272 +-
source3/librpc/idl/libnet_join.idl | 4 +-
source3/librpc/idl/smbXsrv.idl | 7 +
source3/libsmb/dsgetdcname.c | 16 +-
source3/modules/vfs_glusterfs.c | 17 +-
source3/passdb/py_passdb.c | 278 +-
source3/passdb/wscript_build | 2 +-
source3/registry/reg_backend_db.c | 7 +-
source3/smbd/globals.h | 4 +
source3/smbd/negprot.c | 152 +-
source3/smbd/open.c | 14 +-
source3/smbd/smb2_create.c | 115 +-
source3/smbd/smb2_negprot.c | 9 +-
source3/smbd/smb2_server.c | 3 +
source3/smbd/smbXsrv_client.c | 72 +-
source3/smbd/smbXsrv_open.c | 288 +-
source3/smbd/smbXsrv_session.c | 129 +-
source3/smbd/smbXsrv_tcon.c | 119 +-
source3/winbindd/winbindd_misc.c | 2 +-
source3/wscript | 24 +
source3/wscript_build | 5 +-
source4/auth/gensec/pygensec.c | 79 +-
source4/auth/pyauth.c | 7 +-
source4/dns_server/wscript_build | 2 +-
source4/dsdb/pydsdb.c | 49 +-
source4/dsdb/repl/replicated_objects.c | 18 +-
source4/dsdb/samdb/ldb_modules/repl_meta_data.c | 55 +-
source4/dsdb/schema/schema_syntax.c | 12 +-
source4/dsdb/tests/python/ldap_schema.py | 31 +-
source4/lib/messaging/wscript_build | 2 +-
source4/lib/registry/pyregistry.c | 17 +-
source4/libcli/ldap/ldap_client.c | 50 +
source4/libcli/ldap/ldap_controls.c | 1 +
source4/libcli/pysmb.c | 116 +-
source4/libcli/wscript_build | 2 +-
source4/libnet/wscript_build | 2 +-
source4/librpc/rpc/pyrpc.c | 6 +-
source4/librpc/rpc/pyrpc_util.c | 3 +
source4/param/pyparam.c | 81 +-
source4/param/wscript_build | 2 +-
source4/rpc_server/drsuapi/getncchanges.c | 10 +
.../expected-otherphone-after-dbcheck.ldif | 5 +
...xpected-replpropertymetadata-after-dbcheck.ldif | 37 +-
...ected-replpropertymetadata-after-dbcheck2.ldif} | 124 +-
...ected-replpropertymetadata-after-dbcheck3.ldif} | 136 +-
...pected-replpropertymetadata-before-dbcheck.ldif | 22 +-
...ected-replpropertymetadata-before-dbcheck2.ldif | 102 +
...cted-replpropertymetadata-before-dbcheck3.ldif} | 144 +-
.../forced-duplicate-value-for-dbcheck.ldif | 9 +
...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump | 29028 ++++++------
...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump | 43448 +++++++++---------
...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump | 916 +-
...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump | 476 +-
...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump | 8 +-
.../private/dns/sam.ldb.d/metadata.tdb.dump | 8 +-
.../release-4-1-0rc3/private/dns/sam.ldb.dump | 24 +-
.../release-4-1-0rc3/private/hklm.ldb.dump | 68 +-
.../release-4-1-0rc3/private/idmap.ldb.dump | 44 +-
.../release-4-1-0rc3/private/privilege.ldb.dump | 152 +-
...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump | 29104 ++++++------
...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump | 43772 +++++++++----------
...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump | 916 +-
...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump | 476 +-
...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump | 6040 +--
.../private/sam.ldb.d/metadata.tdb.dump | 8 +-
.../release-4-1-0rc3/private/sam.ldb.dump | 24 +-
.../release-4-1-0rc3/private/secrets.ldb.dump | 32 +-
.../release-4-1-0rc3/private/share.ldb.dump | 24 +-
.../release-4-1-0rc3/steps-to-reproduce.txt | 3 +
.../provisions/release-4-1-0rc3/sudoers2-mod.ldif | 4 +
.../provisions/release-4-1-0rc3/sudoers2.ldif | 21 +
source4/torture/smb2/connect.c | 89 +-
source4/torture/smb2/replay.c | 1258 +-
testprogs/blackbox/dbcheck-oldrelease.sh | 82 +-
tests/oldquotas.c | 174 +
124 files changed, 82258 insertions(+), 78689 deletions(-)
create mode 100644 docs-xml/smbdotconf/protocol/servermultichannelsupport.xml
copy lib/ldb/ABI/{ldb-1.1.25.sigs => ldb-1.1.26.sigs} (100%)
copy lib/ldb/ABI/{pyldb-util-1.1.10.sigs => pyldb-util-1.1.26.sigs} (100%)
copy lib/ldb/ABI/{pyldb-util-1.1.10.sigs => pyldb-util.py3-1.1.25.sigs} (100%)
copy lib/ldb/ABI/{pyldb-util-1.1.10.sigs => pyldb-util.py3-1.1.26.sigs} (100%)
create mode 100644 lib/talloc/ABI/pytalloc-util-2.1.6.sigs
create mode 100644 lib/talloc/ABI/pytalloc-util.py3-2.1.6.sigs
copy lib/talloc/ABI/{talloc-2.1.4.sigs => talloc-2.1.6.sigs} (100%)
copy source4/auth/pyauth.h => lib/talloc/pytalloc_private.h (73%)
create mode 100644 python/samba/tests/dcerpc/array.py
create mode 100644 source4/selftest/provisions/release-4-1-0rc3/expected-otherphone-after-dbcheck.ldif
copy source4/selftest/provisions/release-4-1-0rc3/{expected-replpropertymetadata-after-dbcheck.ldif => expected-replpropertymetadata-after-dbcheck2.ldif} (50%)
copy source4/selftest/provisions/release-4-1-0rc3/{expected-replpropertymetadata-after-dbcheck.ldif => expected-replpropertymetadata-after-dbcheck3.ldif} (51%)
create mode 100644 source4/selftest/provisions/release-4-1-0rc3/expected-replpropertymetadata-before-dbcheck2.ldif
copy source4/selftest/provisions/release-4-1-0rc3/{expected-replpropertymetadata-after-dbcheck.ldif => expected-replpropertymetadata-before-dbcheck3.ldif} (50%)
create mode 100644 source4/selftest/provisions/release-4-1-0rc3/forced-duplicate-value-for-dbcheck.ldif
create mode 100644 source4/selftest/provisions/release-4-1-0rc3/sudoers2-mod.ldif
create mode 100644 source4/selftest/provisions/release-4-1-0rc3/sudoers2.ldif
create mode 100644 tests/oldquotas.c
Changeset truncated at 500 lines:
diff --git a/VERSION b/VERSION
index 9773087..437e544 100644
--- a/VERSION
+++ b/VERSION
@@ -87,7 +87,7 @@ SAMBA_VERSION_PRE_RELEASE=
# e.g. SAMBA_VERSION_RC_RELEASE=1 #
# -> "3.0.0rc1" #
########################################################
-SAMBA_VERSION_RC_RELEASE=4
+SAMBA_VERSION_RC_RELEASE=
########################################################
# To mark SVN snapshots this should be set to 'yes' #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 7011c12..396ce6e 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,12 +1,7 @@
Release Announcements
=====================
-This is the fourth release candidate of Samba 4.4. This is *not*
-intended for production environments and is designed for testing
-purposes only. Please report any defects via the Samba bug reporting
-system at https://bugzilla.samba.org/.
-
-Samba 4.4 will be the next version of the Samba suite.
+This is the first stable release of the Samba 4.4 release series.
UPGRADING
@@ -189,6 +184,53 @@ CTDB changes
* All CTDB current manual pages are now correctly installed
+EXPERIMENTAL FEATURES
+=====================
+
+SMB3 Multi-Channel
+------------------
+
+Samba 4.4.0 adds *experimental* support for SMB3 Multi-Channel.
+Multi-Channel is an SMB3 protocol feature that allows the client
+to bind multiple transport connections into one authenticated
+SMB session. This allows for increased fault tolerance and
+throughput. The client chooses transport connections as reported
+by the server and also chooses over which of the bound transport
+connections to send traffic. I/O operations for a given file
+handle can span multiple network connections this way.
+An SMB multi-channel session will be valid as long as at least
+one of its channels are up.
+
+In Samba, multi-channel can be enabled by setting the new
+smb.conf option "server multi channel support" to "yes".
+It is disabled by default.
+
+Samba has to report interface speeds and some capabilities to
+the client. On Linux, Samba can auto-detect the speed of an
+interface. But to support other platforms, and in order to be
+able to manually override the detected values, the "interfaces"
+smb.conf option has been given an extended syntax, by which an
+interface specification can additionally carry speed and
+capability information. The extended syntax looks like this
+for setting the speed to 1 gigabit per second:
+
+ interfaces = 192.168.1.42;speed=1000000000
+
+This extension should be used with care and are mainly intended
+for testing. See the smb.conf manual page for details.
+
+CAVEAT: While this should be working without problems mostly,
+there are still corner cases in the treatment of channel failures
+that may result in DATA CORRUPTION when these race conditions hit.
+It is hence
+
+ NOT RECOMMENDED TO USE MULTI-CHANNEL IN PRODUCTION
+
+at this stage. This situation can be expected to improve during
+the life-time of the 4.4 release. Feed-back from test-setups is
+highly welcome.
+
+
REMOVED FEATURES
================
@@ -228,6 +270,8 @@ smb.conf changes
-------------- ----------- -------
aio max threads New 100
ldap page size Changed default 1000
+ server multi channel support New No
+ interfaces Extended syntax
KNOWN ISSUES
@@ -236,6 +280,51 @@ KNOWN ISSUES
Currently none.
+CHANGES SINCE 4.4.0rc5
+======================
+
+o Michael Adam <obnox at samba.org>
+ * BUG 11796: smbd: Enable multi-channel if 'server multi channel support =
+ yes' in the config.
+
+o Günther Deschner <gd at samba.org>
+ * BUG 11802: lib/socket/interfaces: Fix some uninitialied bytes.
+
+o Uri Simchoni <uri at samba.org>
+ * BUG 11798: build: Fix build when '--without-quota' specified.
+
+
+CHANGES SINCE 4.4.0rc4
+======================
+
+o Andrew Bartlett <abartlet at samba.org>
+ * BUG 11780: mkdir can return ACCESS_DENIED incorrectly on create race.
+ * BUG 11783: Mismatch between local and remote attribute ids lets
+ replication fail with custom schema.
+ * BUG 11789: Talloc: Version 2.1.6.
+
+o Ira Cooper <ira at samba.org>
+ * BUG 11774: vfs_glusterfs: Fix use after free in AIO callback.
+
+o Günther Deschner <gd at samba.org>
+ * BUG 11755: Fix net join.
+
+o Amitay Isaacs <amitay at gmail.com>
+ * BUG 11770: Reset TCP Connections during IP failover.
+
+o Justin Maggard <jmaggard10 at gmail.com>
+ * BUG 11773: s3:smbd: Add negprot remote arch detection for OSX.
+
+o Stefan Metzmacher <metze at samba.org>
+ * BUG 11772: ldb: Version 1.1.26.
+ * BUG 11782: "trustdom_list_done: Got invalid trustdom response" message
+ should be avoided.
+
+o Uri Simchoni <uri at samba.org>
+ * BUG 11769: libnet: Make Kerberos domain join site-aware.
+ * BUG 11788: Quota is not supported on Solaris 10.
+
+
CHANGES SINCE 4.4.0rc3
======================
diff --git a/auth/credentials/pycredentials.c b/auth/credentials/pycredentials.c
index 5fc2a70..1344391 100644
--- a/auth/credentials/pycredentials.c
+++ b/auth/credentials/pycredentials.c
@@ -37,26 +37,15 @@ static PyObject *PyString_FromStringOrNULL(const char *str)
static PyObject *py_creds_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
{
- pytalloc_Object *ret = (pytalloc_Object *)type->tp_alloc(type, 0);
- if (ret == NULL) {
- PyErr_NoMemory();
- return NULL;
- }
- ret->talloc_ctx = talloc_new(NULL);
- if (ret->talloc_ctx == NULL) {
- PyErr_NoMemory();
- return NULL;
- }
- ret->ptr = cli_credentials_init(ret->talloc_ctx);
- return (PyObject *)ret;
+ return pytalloc_steal(type, cli_credentials_init(NULL));
}
-static PyObject *py_creds_get_username(pytalloc_Object *self)
+static PyObject *py_creds_get_username(PyObject *self, PyObject *unused)
{
return PyString_FromStringOrNULL(cli_credentials_get_username(PyCredentials_AsCliCredentials(self)));
}
-static PyObject *py_creds_set_username(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_username(PyObject *self, PyObject *args)
{
char *newval;
enum credentials_obtained obt = CRED_SPECIFIED;
@@ -70,13 +59,13 @@ static PyObject *py_creds_set_username(pytalloc_Object *self, PyObject *args)
return PyBool_FromLong(cli_credentials_set_username(PyCredentials_AsCliCredentials(self), newval, obt));
}
-static PyObject *py_creds_get_password(pytalloc_Object *self)
+static PyObject *py_creds_get_password(PyObject *self, PyObject *unused)
{
return PyString_FromStringOrNULL(cli_credentials_get_password(PyCredentials_AsCliCredentials(self)));
}
-static PyObject *py_creds_set_password(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_password(PyObject *self, PyObject *args)
{
char *newval;
enum credentials_obtained obt = CRED_SPECIFIED;
@@ -90,12 +79,12 @@ static PyObject *py_creds_set_password(pytalloc_Object *self, PyObject *args)
return PyBool_FromLong(cli_credentials_set_password(PyCredentials_AsCliCredentials(self), newval, obt));
}
-static PyObject *py_creds_get_domain(pytalloc_Object *self)
+static PyObject *py_creds_get_domain(PyObject *self, PyObject *unused)
{
return PyString_FromStringOrNULL(cli_credentials_get_domain(PyCredentials_AsCliCredentials(self)));
}
-static PyObject *py_creds_set_domain(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_domain(PyObject *self, PyObject *args)
{
char *newval;
enum credentials_obtained obt = CRED_SPECIFIED;
@@ -109,12 +98,12 @@ static PyObject *py_creds_set_domain(pytalloc_Object *self, PyObject *args)
return PyBool_FromLong(cli_credentials_set_domain(PyCredentials_AsCliCredentials(self), newval, obt));
}
-static PyObject *py_creds_get_realm(pytalloc_Object *self)
+static PyObject *py_creds_get_realm(PyObject *self, PyObject *unused)
{
return PyString_FromStringOrNULL(cli_credentials_get_realm(PyCredentials_AsCliCredentials(self)));
}
-static PyObject *py_creds_set_realm(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_realm(PyObject *self, PyObject *args)
{
char *newval;
enum credentials_obtained obt = CRED_SPECIFIED;
@@ -128,12 +117,12 @@ static PyObject *py_creds_set_realm(pytalloc_Object *self, PyObject *args)
return PyBool_FromLong(cli_credentials_set_realm(PyCredentials_AsCliCredentials(self), newval, obt));
}
-static PyObject *py_creds_get_bind_dn(pytalloc_Object *self)
+static PyObject *py_creds_get_bind_dn(PyObject *self, PyObject *unused)
{
return PyString_FromStringOrNULL(cli_credentials_get_bind_dn(PyCredentials_AsCliCredentials(self)));
}
-static PyObject *py_creds_set_bind_dn(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_bind_dn(PyObject *self, PyObject *args)
{
char *newval;
if (!PyArg_ParseTuple(args, "s", &newval))
@@ -142,12 +131,12 @@ static PyObject *py_creds_set_bind_dn(pytalloc_Object *self, PyObject *args)
return PyBool_FromLong(cli_credentials_set_bind_dn(PyCredentials_AsCliCredentials(self), newval));
}
-static PyObject *py_creds_get_workstation(pytalloc_Object *self)
+static PyObject *py_creds_get_workstation(PyObject *self, PyObject *unused)
{
return PyString_FromStringOrNULL(cli_credentials_get_workstation(PyCredentials_AsCliCredentials(self)));
}
-static PyObject *py_creds_set_workstation(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_workstation(PyObject *self, PyObject *args)
{
char *newval;
enum credentials_obtained obt = CRED_SPECIFIED;
@@ -161,33 +150,33 @@ static PyObject *py_creds_set_workstation(pytalloc_Object *self, PyObject *args)
return PyBool_FromLong(cli_credentials_set_workstation(PyCredentials_AsCliCredentials(self), newval, obt));
}
-static PyObject *py_creds_is_anonymous(pytalloc_Object *self)
+static PyObject *py_creds_is_anonymous(PyObject *self, PyObject *unused)
{
return PyBool_FromLong(cli_credentials_is_anonymous(PyCredentials_AsCliCredentials(self)));
}
-static PyObject *py_creds_set_anonymous(pytalloc_Object *self)
+static PyObject *py_creds_set_anonymous(PyObject *self, PyObject *unused)
{
cli_credentials_set_anonymous(PyCredentials_AsCliCredentials(self));
Py_RETURN_NONE;
}
-static PyObject *py_creds_authentication_requested(pytalloc_Object *self)
+static PyObject *py_creds_authentication_requested(PyObject *self, PyObject *unused)
{
return PyBool_FromLong(cli_credentials_authentication_requested(PyCredentials_AsCliCredentials(self)));
}
-static PyObject *py_creds_wrong_password(pytalloc_Object *self)
+static PyObject *py_creds_wrong_password(PyObject *self, PyObject *unused)
{
return PyBool_FromLong(cli_credentials_wrong_password(PyCredentials_AsCliCredentials(self)));
}
-static PyObject *py_creds_set_cmdline_callbacks(pytalloc_Object *self)
+static PyObject *py_creds_set_cmdline_callbacks(PyObject *self, PyObject *unused)
{
return PyBool_FromLong(cli_credentials_set_cmdline_callbacks(PyCredentials_AsCliCredentials(self)));
}
-static PyObject *py_creds_parse_string(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_parse_string(PyObject *self, PyObject *args)
{
char *newval;
enum credentials_obtained obt = CRED_SPECIFIED;
@@ -202,20 +191,24 @@ static PyObject *py_creds_parse_string(pytalloc_Object *self, PyObject *args)
Py_RETURN_NONE;
}
-static PyObject *py_creds_get_nt_hash(pytalloc_Object *self)
+static PyObject *py_creds_get_nt_hash(PyObject *self, PyObject *unused)
{
- const struct samr_Password *ntpw = cli_credentials_get_nt_hash(PyCredentials_AsCliCredentials(self), self->ptr);
+ PyObject *ret;
+ struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
+ struct samr_Password *ntpw = cli_credentials_get_nt_hash(creds, creds);
- return PyString_FromStringAndSize(discard_const_p(char, ntpw->hash), 16);
+ ret = PyString_FromStringAndSize(discard_const_p(char, ntpw->hash), 16);
+ TALLOC_FREE(ntpw);
+ return ret;
}
-static PyObject *py_creds_get_kerberos_state(pytalloc_Object *self)
+static PyObject *py_creds_get_kerberos_state(PyObject *self, PyObject *unused)
{
int state = cli_credentials_get_kerberos_state(PyCredentials_AsCliCredentials(self));
return PyInt_FromLong(state);
}
-static PyObject *py_creds_set_kerberos_state(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_kerberos_state(PyObject *self, PyObject *args)
{
int state;
if (!PyArg_ParseTuple(args, "i", &state))
@@ -225,7 +218,7 @@ static PyObject *py_creds_set_kerberos_state(pytalloc_Object *self, PyObject *ar
Py_RETURN_NONE;
}
-static PyObject *py_creds_set_krb_forwardable(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_krb_forwardable(PyObject *self, PyObject *args)
{
int state;
if (!PyArg_ParseTuple(args, "i", &state))
@@ -236,12 +229,12 @@ static PyObject *py_creds_set_krb_forwardable(pytalloc_Object *self, PyObject *a
}
-static PyObject *py_creds_get_forced_sasl_mech(pytalloc_Object *self)
+static PyObject *py_creds_get_forced_sasl_mech(PyObject *self, PyObject *unused)
{
return PyString_FromStringOrNULL(cli_credentials_get_forced_sasl_mech(PyCredentials_AsCliCredentials(self)));
}
-static PyObject *py_creds_set_forced_sasl_mech(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_forced_sasl_mech(PyObject *self, PyObject *args)
{
char *newval;
enum credentials_obtained obt = CRED_SPECIFIED;
@@ -256,7 +249,7 @@ static PyObject *py_creds_set_forced_sasl_mech(pytalloc_Object *self, PyObject *
Py_RETURN_NONE;
}
-static PyObject *py_creds_guess(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_guess(PyObject *self, PyObject *args)
{
PyObject *py_lp_ctx = Py_None;
struct loadparm_context *lp_ctx;
@@ -287,7 +280,7 @@ static PyObject *py_creds_guess(pytalloc_Object *self, PyObject *args)
Py_RETURN_NONE;
}
-static PyObject *py_creds_set_machine_account(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_machine_account(PyObject *self, PyObject *args)
{
PyObject *py_lp_ctx = Py_None;
struct loadparm_context *lp_ctx;
@@ -322,24 +315,11 @@ static PyObject *py_creds_set_machine_account(pytalloc_Object *self, PyObject *a
static PyObject *PyCredentialCacheContainer_from_ccache_container(struct ccache_container *ccc)
{
- PyCredentialCacheContainerObject *py_ret;
-
- if (ccc == NULL) {
- Py_RETURN_NONE;
- }
-
- py_ret = (PyCredentialCacheContainerObject *)PyCredentialCacheContainer.tp_alloc(&PyCredentialCacheContainer, 0);
- if (py_ret == NULL) {
- PyErr_NoMemory();
- return NULL;
- }
- py_ret->mem_ctx = talloc_new(NULL);
- py_ret->ccc = talloc_reference(py_ret->mem_ctx, ccc);
- return (PyObject *)py_ret;
+ return pytalloc_reference(&PyCredentialCacheContainer, ccc);
}
-static PyObject *py_creds_get_named_ccache(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_get_named_ccache(PyObject *self, PyObject *args)
{
PyObject *py_lp_ctx = Py_None;
char *ccache_name;
@@ -385,7 +365,7 @@ static PyObject *py_creds_get_named_ccache(pytalloc_Object *self, PyObject *args
return NULL;
}
-static PyObject *py_creds_set_gensec_features(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_gensec_features(PyObject *self, PyObject *args)
{
unsigned int gensec_features;
@@ -397,7 +377,7 @@ static PyObject *py_creds_set_gensec_features(pytalloc_Object *self, PyObject *a
Py_RETURN_NONE;
}
-static PyObject *py_creds_get_gensec_features(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_get_gensec_features(PyObject *self, PyObject *args)
{
unsigned int gensec_features;
@@ -407,71 +387,71 @@ static PyObject *py_creds_get_gensec_features(pytalloc_Object *self, PyObject *a
static PyMethodDef py_creds_methods[] = {
- { "get_username", (PyCFunction)py_creds_get_username, METH_NOARGS,
+ { "get_username", py_creds_get_username, METH_NOARGS,
"S.get_username() -> username\nObtain username." },
- { "set_username", (PyCFunction)py_creds_set_username, METH_VARARGS,
+ { "set_username", py_creds_set_username, METH_VARARGS,
"S.set_username(name, obtained=CRED_SPECIFIED) -> None\n"
"Change username." },
- { "get_password", (PyCFunction)py_creds_get_password, METH_NOARGS,
+ { "get_password", py_creds_get_password, METH_NOARGS,
"S.get_password() -> password\n"
"Obtain password." },
- { "set_password", (PyCFunction)py_creds_set_password, METH_VARARGS,
+ { "set_password", py_creds_set_password, METH_VARARGS,
"S.set_password(password, obtained=CRED_SPECIFIED) -> None\n"
"Change password." },
- { "get_domain", (PyCFunction)py_creds_get_domain, METH_NOARGS,
+ { "get_domain", py_creds_get_domain, METH_NOARGS,
"S.get_domain() -> domain\n"
"Obtain domain name." },
- { "set_domain", (PyCFunction)py_creds_set_domain, METH_VARARGS,
+ { "set_domain", py_creds_set_domain, METH_VARARGS,
"S.set_domain(domain, obtained=CRED_SPECIFIED) -> None\n"
"Change domain name." },
- { "get_realm", (PyCFunction)py_creds_get_realm, METH_NOARGS,
+ { "get_realm", py_creds_get_realm, METH_NOARGS,
"S.get_realm() -> realm\n"
"Obtain realm name." },
- { "set_realm", (PyCFunction)py_creds_set_realm, METH_VARARGS,
+ { "set_realm", py_creds_set_realm, METH_VARARGS,
"S.set_realm(realm, obtained=CRED_SPECIFIED) -> None\n"
"Change realm name." },
- { "get_bind_dn", (PyCFunction)py_creds_get_bind_dn, METH_NOARGS,
+ { "get_bind_dn", py_creds_get_bind_dn, METH_NOARGS,
"S.get_bind_dn() -> bind dn\n"
"Obtain bind DN." },
- { "set_bind_dn", (PyCFunction)py_creds_set_bind_dn, METH_VARARGS,
+ { "set_bind_dn", py_creds_set_bind_dn, METH_VARARGS,
"S.set_bind_dn(bind_dn) -> None\n"
"Change bind DN." },
- { "is_anonymous", (PyCFunction)py_creds_is_anonymous, METH_NOARGS,
+ { "is_anonymous", py_creds_is_anonymous, METH_NOARGS,
NULL },
- { "set_anonymous", (PyCFunction)py_creds_set_anonymous, METH_NOARGS,
+ { "set_anonymous", py_creds_set_anonymous, METH_NOARGS,
"S.set_anonymous() -> None\n"
"Use anonymous credentials." },
- { "get_workstation", (PyCFunction)py_creds_get_workstation, METH_NOARGS,
+ { "get_workstation", py_creds_get_workstation, METH_NOARGS,
NULL },
- { "set_workstation", (PyCFunction)py_creds_set_workstation, METH_VARARGS,
+ { "set_workstation", py_creds_set_workstation, METH_VARARGS,
NULL },
- { "authentication_requested", (PyCFunction)py_creds_authentication_requested, METH_NOARGS,
+ { "authentication_requested", py_creds_authentication_requested, METH_NOARGS,
NULL },
- { "wrong_password", (PyCFunction)py_creds_wrong_password, METH_NOARGS,
+ { "wrong_password", py_creds_wrong_password, METH_NOARGS,
"S.wrong_password() -> bool\n"
"Indicate the returned password was incorrect." },
- { "set_cmdline_callbacks", (PyCFunction)py_creds_set_cmdline_callbacks, METH_NOARGS,
+ { "set_cmdline_callbacks", py_creds_set_cmdline_callbacks, METH_NOARGS,
"S.set_cmdline_callbacks() -> bool\n"
"Use command-line to obtain credentials not explicitly set." },
- { "parse_string", (PyCFunction)py_creds_parse_string, METH_VARARGS,
+ { "parse_string", py_creds_parse_string, METH_VARARGS,
"S.parse_string(text, obtained=CRED_SPECIFIED) -> None\n"
"Parse credentials string." },
- { "get_nt_hash", (PyCFunction)py_creds_get_nt_hash, METH_NOARGS,
+ { "get_nt_hash", py_creds_get_nt_hash, METH_NOARGS,
NULL },
- { "get_kerberos_state", (PyCFunction)py_creds_get_kerberos_state, METH_NOARGS,
+ { "get_kerberos_state", py_creds_get_kerberos_state, METH_NOARGS,
NULL },
- { "set_kerberos_state", (PyCFunction)py_creds_set_kerberos_state, METH_VARARGS,
+ { "set_kerberos_state", py_creds_set_kerberos_state, METH_VARARGS,
NULL },
- { "set_krb_forwardable", (PyCFunction)py_creds_set_krb_forwardable, METH_VARARGS,
+ { "set_krb_forwardable", py_creds_set_krb_forwardable, METH_VARARGS,
NULL },
- { "guess", (PyCFunction)py_creds_guess, METH_VARARGS, NULL },
- { "set_machine_account", (PyCFunction)py_creds_set_machine_account, METH_VARARGS, NULL },
- { "get_named_ccache", (PyCFunction)py_creds_get_named_ccache, METH_VARARGS, NULL },
- { "set_gensec_features", (PyCFunction)py_creds_set_gensec_features, METH_VARARGS, NULL },
--
Samba Shared Repository
More information about the samba-cvs
mailing list