summaryrefslogtreecommitdiff
path: root/net/samba43
diff options
context:
space:
mode:
Diffstat (limited to 'net/samba43')
-rw-r--r--net/samba43/Makefile13
-rw-r--r--net/samba43/distinfo4
-rw-r--r--net/samba43/files/extra-patch-talloc431
-rw-r--r--net/samba43/files/patch-source3__wscript_build17
4 files changed, 11 insertions, 454 deletions
diff --git a/net/samba43/Makefile b/net/samba43/Makefile
index b43ee07c009f..4971698925b4 100644
--- a/net/samba43/Makefile
+++ b/net/samba43/Makefile
@@ -3,7 +3,7 @@
PORTNAME?= ${SAMBA4_BASENAME}43
PORTVERSION?= ${SAMBA4_VERSION}
-PORTREVISION?= 1
+PORTREVISION?= 0
CATEGORIES?= net
MASTER_SITES= SAMBA/samba/stable SAMBA/samba/rc
DISTNAME= ${SAMBA4_DISTNAME}
@@ -15,11 +15,11 @@ LICENSE= GPLv3
CONFLICTS?= *samba3[2-6]-3.* samba4-4.0.* samba41-4.1.* samba42-4.2.* samba44-4.4.*
-EXTRA_PATCHES= ${PATCHDIR}/extra-patch-progress:-p1 ${PATCHDIR}/extra-patch-talloc:-p1
+EXTRA_PATCHES= ${PATCHDIR}/extra-patch-progress:-p1
SAMBA4_BASENAME= samba
SAMBA4_PORTNAME= ${SAMBA4_BASENAME}4
-SAMBA4_VERSION= 4.3.8
+SAMBA4_VERSION= 4.3.9
SAMBA4_DISTNAME= ${SAMBA4_BASENAME}-${SAMBA4_VERSION:S|.p|pre|:S|.r|rc|:S|.t|tp|:S|.a|alpha|}
WRKSRC?= ${WRKDIR}/${DISTNAME}
@@ -75,10 +75,7 @@ PLIST_SUB+= PKGCONFIGDIR=${PKGCONFIGDIR:S;${PREFIX}/;;}
LIB_DEPENDS+= libpopt.so:devel/popt
# inotify
LIB_DEPENDS+= libinotify.so:devel/libinotify
-# SASL
-LIB_DEPENDS+= libsasl2.so:security/cyrus-sasl2
# GNUTLS
-LIB_DEPENDS+= libgcrypt.so:security/libgcrypt
LIB_DEPENDS+= libgnutls.so:security/gnutls
# NFS4 ACL glue
LIB_DEPENDS+= libsunacl.so:sysutils/libsunacl
@@ -97,8 +94,8 @@ BUILD_DEPENDS+= talloc>=2.1.5:devel/talloc
RUN_DEPENDS+= talloc>=2.1.5:devel/talloc
SAMBA4_BUNDLED_LIBS+= !talloc
# tevent
-BUILD_DEPENDS+= tevent>=0.9.25:devel/tevent
-RUN_DEPENDS+= tevent>=0.9.25:devel/tevent
+BUILD_DEPENDS+= tevent>=0.9.28:devel/tevent
+RUN_DEPENDS+= tevent>=0.9.28:devel/tevent
SAMBA4_BUNDLED_LIBS+= !tevent
# tdb
BUILD_DEPENDS+= tdb>=1.3.8:databases/tdb
diff --git a/net/samba43/distinfo b/net/samba43/distinfo
index b3628c89dad6..f8cafa72df07 100644
--- a/net/samba43/distinfo
+++ b/net/samba43/distinfo
@@ -1,2 +1,2 @@
-SHA256 (samba-4.3.8.tar.gz) = 379dc66c3a0a483bf5bed37be6e5d182934db7c4102b21929a6c4602b32b2b10
-SIZE (samba-4.3.8.tar.gz) = 20568773
+SHA256 (samba-4.3.9.tar.gz) = 1f22c61a7f24c5357a9ef4d10833a2cd161f40f3db03bcbe586d7cd3a56139f3
+SIZE (samba-4.3.9.tar.gz) = 20570849
diff --git a/net/samba43/files/extra-patch-talloc b/net/samba43/files/extra-patch-talloc
deleted file mode 100644
index da59adf00c19..000000000000
--- a/net/samba43/files/extra-patch-talloc
+++ /dev/null
@@ -1,431 +0,0 @@
-From 6108281171db83394a0a814b5f272c5afb9c4f51 Mon Sep 17 00:00:00 2001
-From: Andrew Bartlett <abartlet@samba.org>
-Date: Tue, 22 Sep 2015 15:25:30 +1200
-Subject: [PATCH 1/3] pydsdb: Also accept ldb.MessageElement values to dsdb
- routines
-
-This shows the correct way to accept a value that may be a list of strings
-or a proper ldb.MessageElement.
-
-Andrew Bartlett
-
-Signed-off-by: Andrew Bartlett <abartlet@samba.org>
-Reviewed-by: Garming Sam <garming@catalyst.net.nz>
-(cherry picked from commit b48776d78b446ad4abd4a6bc2ba6b488a29b11d2)
----
- python/samba/dbchecker.py | 4 +-
- source4/dsdb/pydsdb.c | 113 +++++++++++++++++++++++++---------------------
- 2 files changed, 63 insertions(+), 54 deletions(-)
-
-diff --git a/python/samba/dbchecker.py b/python/samba/dbchecker.py
-index 4fb9d12..69b4c61 100644
---- a/python/samba/dbchecker.py
-+++ b/python/samba/dbchecker.py
-@@ -1286,8 +1286,8 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
- continue
-
- if str(attrname).lower() == 'objectclass':
-- normalised = self.samdb.dsdb_normalise_attributes(self.samdb_schema, attrname, list(obj[attrname]))
-- if list(normalised) != list(obj[attrname]):
-+ normalised = self.samdb.dsdb_normalise_attributes(self.samdb_schema, attrname, obj[attrname])
-+ if normalised != obj[attrname]:
- self.err_normalise_mismatch_replace(dn, attrname, list(obj[attrname]))
- error_count += 1
- continue
-diff --git a/source4/dsdb/pydsdb.c b/source4/dsdb/pydsdb.c
-index 9a3b509..4d38c4a 100644
---- a/source4/dsdb/pydsdb.c
-+++ b/source4/dsdb/pydsdb.c
-@@ -529,11 +529,6 @@ static PyObject *py_dsdb_DsReplicaAttribute(PyObject *self, PyObject *args)
-
- PyErr_LDB_OR_RAISE(py_ldb, ldb);
-
-- if (!PyList_Check(el_list)) {
-- PyErr_Format(PyExc_TypeError, "ldif_elements must be a list");
-- return NULL;
-- }
--
- schema = dsdb_get_schema(ldb, NULL);
- if (!schema) {
- PyErr_SetString(PyExc_RuntimeError, "Failed to find a schema from ldb");
-@@ -555,32 +550,42 @@ static PyObject *py_dsdb_DsReplicaAttribute(PyObject *self, PyObject *args)
- return NULL;
- }
-
-- el = talloc_zero(tmp_ctx, struct ldb_message_element);
-- if (el == NULL) {
-- PyErr_NoMemory();
-- talloc_free(tmp_ctx);
-- return NULL;
-- }
--
-- el->name = ldap_display_name;
-- el->num_values = PyList_Size(el_list);
-+ /* If we were not given an LdbMessageElement */
-+ if (!PyList_Check(el_list)) {
-+ if (!py_check_dcerpc_type(el_list, "ldb", "MessageElement")) {
-+ PyErr_SetString(py_ldb_get_exception(),
-+ "list of strings or ldb MessageElement object required");
-+ return NULL;
-+ }
-+ el = pyldb_MessageElement_AsMessageElement(el_list);
-+ } else {
-+ el = talloc_zero(tmp_ctx, struct ldb_message_element);
-+ if (el == NULL) {
-+ PyErr_NoMemory();
-+ talloc_free(tmp_ctx);
-+ return NULL;
-+ }
-
-- el->values = talloc_array(el, struct ldb_val, el->num_values);
-- if (el->values == NULL) {
-- PyErr_NoMemory();
-- talloc_free(tmp_ctx);
-- return NULL;
-- }
-+ el->name = ldap_display_name;
-+ el->num_values = PyList_Size(el_list);
-
-- for (i = 0; i < el->num_values; i++) {
-- PyObject *item = PyList_GetItem(el_list, i);
-- if (!PyString_Check(item)) {
-- PyErr_Format(PyExc_TypeError, "ldif_elements should be strings");
-+ el->values = talloc_array(el, struct ldb_val, el->num_values);
-+ if (el->values == NULL) {
-+ PyErr_NoMemory();
- talloc_free(tmp_ctx);
- return NULL;
- }
-- el->values[i].data = (uint8_t *)PyString_AsString(item);
-- el->values[i].length = PyString_Size(item);
-+
-+ for (i = 0; i < el->num_values; i++) {
-+ PyObject *item = PyList_GetItem(el_list, i);
-+ if (!PyString_Check(item)) {
-+ PyErr_Format(PyExc_TypeError, "ldif_elements should be strings");
-+ talloc_free(tmp_ctx);
-+ return NULL;
-+ }
-+ el->values[i].data = (uint8_t *)PyString_AsString(item);
-+ el->values[i].length = PyString_Size(item);
-+ }
- }
-
- attr = talloc_zero(tmp_ctx, struct drsuapi_DsReplicaAttribute);
-@@ -624,11 +629,6 @@ static PyObject *py_dsdb_normalise_attributes(PyObject *self, PyObject *args)
-
- PyErr_LDB_OR_RAISE(py_ldb, ldb);
-
-- if (!PyList_Check(el_list)) {
-- PyErr_Format(PyExc_TypeError, "ldif_elements must be a list");
-- return NULL;
-- }
--
- schema = dsdb_get_schema(ldb, NULL);
- if (!schema) {
- PyErr_SetString(PyExc_RuntimeError, "Failed to find a schema from ldb");
-@@ -650,32 +650,41 @@ static PyObject *py_dsdb_normalise_attributes(PyObject *self, PyObject *args)
- return NULL;
- }
-
-- el = talloc_zero(tmp_ctx, struct ldb_message_element);
-- if (el == NULL) {
-- PyErr_NoMemory();
-- talloc_free(tmp_ctx);
-- return NULL;
-- }
--
-- el->name = ldap_display_name;
-- el->num_values = PyList_Size(el_list);
-+ if (!PyList_Check(el_list)) {
-+ if (!py_check_dcerpc_type(el_list, "ldb", "MessageElement")) {
-+ PyErr_SetString(py_ldb_get_exception(),
-+ "list of strings or ldb MessageElement object required");
-+ return NULL;
-+ }
-+ el = pyldb_MessageElement_AsMessageElement(el_list);
-+ } else {
-+ el = talloc_zero(tmp_ctx, struct ldb_message_element);
-+ if (el == NULL) {
-+ PyErr_NoMemory();
-+ talloc_free(tmp_ctx);
-+ return NULL;
-+ }
-
-- el->values = talloc_array(el, struct ldb_val, el->num_values);
-- if (el->values == NULL) {
-- PyErr_NoMemory();
-- talloc_free(tmp_ctx);
-- return NULL;
-- }
-+ el->name = ldap_display_name;
-+ el->num_values = PyList_Size(el_list);
-
-- for (i = 0; i < el->num_values; i++) {
-- PyObject *item = PyList_GetItem(el_list, i);
-- if (!PyString_Check(item)) {
-- PyErr_Format(PyExc_TypeError, "ldif_elements should be strings");
-+ el->values = talloc_array(el, struct ldb_val, el->num_values);
-+ if (el->values == NULL) {
-+ PyErr_NoMemory();
- talloc_free(tmp_ctx);
- return NULL;
- }
-- el->values[i].data = (uint8_t *)PyString_AsString(item);
-- el->values[i].length = PyString_Size(item);
-+
-+ for (i = 0; i < el->num_values; i++) {
-+ PyObject *item = PyList_GetItem(el_list, i);
-+ if (!PyString_Check(item)) {
-+ PyErr_Format(PyExc_TypeError, "ldif_elements should be strings");
-+ talloc_free(tmp_ctx);
-+ return NULL;
-+ }
-+ el->values[i].data = (uint8_t *)PyString_AsString(item);
-+ el->values[i].length = PyString_Size(item);
-+ }
- }
-
- /* Normalise "objectClass" attribute if needed */
---
-1.9.1
-
-From 34f741104e4212fb28d9fc06f60c0503e02fb556 Mon Sep 17 00:00:00 2001
-From: Andrew Bartlett <abartlet@samba.org>
-Date: Mon, 4 Jan 2016 13:23:50 +1300
-Subject: [PATCH 2/3] python: Remove Python 2.4 support macros
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-We require Python 2.6
-
-Signed-off-by: Andrew Bartlett <abartlet@samba.org>
-Reviewed-by: Jelmer Vernoo <jelmer@samba.org>
-(cherry picked from commit 0e58705a5bc11a9556d0774f9cb2fbb3897839c8)
----
- source3/passdb/py_passdb.c | 7 -------
- source4/auth/pyauth.c | 7 -------
- source4/dsdb/pydsdb.c | 7 -------
- source4/param/pyparam.c | 6 ------
- source4/web_server/wsgi.c | 7 -------
- 5 files changed, 34 deletions(-)
-
-diff --git a/source3/passdb/py_passdb.c b/source3/passdb/py_passdb.c
-index ca43f70..0d4ca3b 100644
---- a/source3/passdb/py_passdb.c
-+++ b/source3/passdb/py_passdb.c
-@@ -27,13 +27,6 @@
- #include "secrets.h"
- #include "idmap.h"
-
--/* There's no Py_ssize_t in 2.4, apparently */
--#if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 5
--typedef int Py_ssize_t;
--typedef inquiry lenfunc;
--typedef intargfunc ssizeargfunc;
--#endif
--
- #ifndef Py_TYPE /* Py_TYPE is only available on Python > 2.6 */
- #define Py_TYPE(ob) (((PyObject*)(ob))->ob_type)
- #endif
-diff --git a/source4/auth/pyauth.c b/source4/auth/pyauth.c
-index d79d417..37f19fa 100644
---- a/source4/auth/pyauth.c
-+++ b/source4/auth/pyauth.c
-@@ -36,13 +36,6 @@ void initauth(void);
-
- staticforward PyTypeObject PyAuthContext;
-
--/* There's no Py_ssize_t in 2.4, apparently */
--#if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 5
--typedef int Py_ssize_t;
--typedef inquiry lenfunc;
--typedef intargfunc ssizeargfunc;
--#endif
--
- static PyObject *PyAuthSession_FromSession(struct auth_session_info *session)
- {
- return py_return_ndr_struct("samba.dcerpc.auth", "session_info", session, session);
-diff --git a/source4/dsdb/pydsdb.c b/source4/dsdb/pydsdb.c
-index 4d38c4a..ea30898 100644
---- a/source4/dsdb/pydsdb.c
-+++ b/source4/dsdb/pydsdb.c
-@@ -31,13 +31,6 @@
-
- void initdsdb(void);
-
--/* There's no Py_ssize_t in 2.4, apparently */
--#if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 5
--typedef int Py_ssize_t;
--typedef inquiry lenfunc;
--typedef intargfunc ssizeargfunc;
--#endif
--
- /* FIXME: These should be in a header file somewhere */
- #define PyErr_LDB_OR_RAISE(py_ldb, ldb) \
- if (!py_check_dcerpc_type(py_ldb, "ldb", "Ldb")) { \
-diff --git a/source4/param/pyparam.c b/source4/param/pyparam.c
-index 14ffb2d..d1ba009 100644
---- a/source4/param/pyparam.c
-+++ b/source4/param/pyparam.c
-@@ -26,12 +26,6 @@
-
- void initparam(void);
-
--/* There's no Py_ssize_t in 2.4, apparently */
--#if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 5
--typedef int Py_ssize_t;
--typedef inquiry lenfunc;
--#endif
--
- #define PyLoadparmContext_AsLoadparmContext(obj) pytalloc_get_type(obj, struct loadparm_context)
- #define PyLoadparmService_AsLoadparmService(obj) pytalloc_get_type(obj, struct loadparm_service)
-
-diff --git a/source4/web_server/wsgi.c b/source4/web_server/wsgi.c
-index f0e7bd5..0b1c5d2 100644
---- a/source4/web_server/wsgi.c
-+++ b/source4/web_server/wsgi.c
-@@ -28,13 +28,6 @@
- #include "lib/tsocket/tsocket.h"
- #include "python/modules.h"
-
--/* There's no Py_ssize_t in 2.4, apparently */
--#if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 5
--typedef int Py_ssize_t;
--typedef inquiry lenfunc;
--typedef intargfunc ssizeargfunc;
--#endif
--
- typedef struct {
- PyObject_HEAD
- struct websrv_context *web;
---
-1.9.1
-
-From 259b7ff44095214e80615f5dad946f09b2d33f6f Mon Sep 17 00:00:00 2001
-From: Andrew Bartlett <abartlet@samba.org>
-Date: Tue, 16 Feb 2016 15:15:44 +1300
-Subject: [PATCH 3/3] pydsdb: Fix returning of ldb.MessageElement.
-
-This object is not based on pytalloc_Object and so this causes
-a segfault (later a failure) when the struct definitions diverge.
-We must also not reuse the incoming ldb_message_element as a talloc
-context and overwrite the values, instead we should create a new
-object and return that.
-
-Signed-off-by: Andrew Bartlett <abartlet@samba.org>
-Reviewed-by: Garming Sam <garming@catalyst.net.nz>
-(cherry picked from commit b96b1e88f760c92c7d9bb7e732f72d7e73a68907)
----
- source4/dsdb/pydsdb.c | 49 +++++++++++++++++++++++++++++++++++++++++++------
- 1 file changed, 43 insertions(+), 6 deletions(-)
-
-diff --git a/source4/dsdb/pydsdb.c b/source4/dsdb/pydsdb.c
-index ea30898..e6055d9 100644
---- a/source4/dsdb/pydsdb.c
-+++ b/source4/dsdb/pydsdb.c
-@@ -550,6 +550,11 @@ static PyObject *py_dsdb_DsReplicaAttribute(PyObject *self, PyObject *args)
- "list of strings or ldb MessageElement object required");
- return NULL;
- }
-+ /*
-+ * NOTE:
-+ * el may not be a valid talloc context, it
-+ * could be part of an array
-+ */
- el = pyldb_MessageElement_AsMessageElement(el_list);
- } else {
- el = talloc_zero(tmp_ctx, struct ldb_message_element);
-@@ -604,17 +609,20 @@ static PyObject *py_dsdb_DsReplicaAttribute(PyObject *self, PyObject *args)
- */
- static PyObject *py_dsdb_normalise_attributes(PyObject *self, PyObject *args)
- {
-- PyObject *py_ldb, *el_list, *ret;
-+ PyObject *py_ldb, *el_list, *py_ret;
- struct ldb_context *ldb;
- char *ldap_display_name;
- const struct dsdb_attribute *a;
- struct dsdb_schema *schema;
- struct dsdb_syntax_ctx syntax_ctx;
-- struct ldb_message_element *el;
-+ struct ldb_message_element *el, *new_el;
- struct drsuapi_DsReplicaAttribute *attr;
-+ PyLdbMessageElementObject *ret;
- TALLOC_CTX *tmp_ctx;
- WERROR werr;
- Py_ssize_t i;
-+ PyTypeObject *py_type = NULL;
-+ PyObject *module = NULL;
-
- if (!PyArg_ParseTuple(args, "OsO", &py_ldb, &ldap_display_name, &el_list)) {
- return NULL;
-@@ -649,6 +657,11 @@ static PyObject *py_dsdb_normalise_attributes(PyObject *self, PyObject *args)
- "list of strings or ldb MessageElement object required");
- return NULL;
- }
-+ /*
-+ * NOTE:
-+ * el may not be a valid talloc context, it
-+ * could be part of an array
-+ */
- el = pyldb_MessageElement_AsMessageElement(el_list);
- } else {
- el = talloc_zero(tmp_ctx, struct ldb_message_element);
-@@ -680,10 +693,17 @@ static PyObject *py_dsdb_normalise_attributes(PyObject *self, PyObject *args)
- }
- }
-
-+ new_el = talloc_zero(tmp_ctx, struct ldb_message_element);
-+ if (new_el == NULL) {
-+ PyErr_NoMemory();
-+ talloc_free(tmp_ctx);
-+ return NULL;
-+ }
-+
- /* Normalise "objectClass" attribute if needed */
- if (ldb_attr_cmp(a->lDAPDisplayName, "objectClass") == 0) {
- int iret;
-- iret = dsdb_sort_objectClass_attr(ldb, schema, el, tmp_ctx, el);
-+ iret = dsdb_sort_objectClass_attr(ldb, schema, el, new_el, new_el);
- if (iret != LDB_SUCCESS) {
- PyErr_SetString(PyExc_RuntimeError, ldb_errstring(ldb));
- talloc_free(tmp_ctx);
-@@ -706,14 +726,31 @@ static PyObject *py_dsdb_normalise_attributes(PyObject *self, PyObject *args)
- PyErr_WERROR_NOT_OK_RAISE(werr);
-
- /* now convert back again */
-- werr = a->syntax->drsuapi_to_ldb(&syntax_ctx, a, attr, el, el);
-+ werr = a->syntax->drsuapi_to_ldb(&syntax_ctx, a, attr, new_el, new_el);
- PyErr_WERROR_NOT_OK_RAISE(werr);
-
-- ret = py_return_ndr_struct("ldb", "MessageElement", el, el);
-+ module = PyImport_ImportModule("ldb");
-+ if (module == NULL) {
-+ return NULL;
-+ }
-+
-+ py_type = (PyTypeObject *)PyObject_GetAttrString(module, "MessageElement");
-+ if (py_type == NULL) {
-+ return NULL;
-+ }
-+ py_ret = py_type->tp_alloc(py_type, 0);
-+ ret = (PyLdbMessageElementObject *)py_ret;
-+
-+ ret->mem_ctx = talloc_new(NULL);
-+ if (talloc_reference(ret->mem_ctx, new_el) == NULL) {
-+ PyErr_NoMemory();
-+ return NULL;
-+ }
-+ ret->el = new_el;
-
- talloc_free(tmp_ctx);
-
-- return ret;
-+ return py_ret;
- }
-
-
---
-1.9.1
-
diff --git a/net/samba43/files/patch-source3__wscript_build b/net/samba43/files/patch-source3__wscript_build
index b5d444cdf0af..24b438e3a2c3 100644
--- a/net/samba43/files/patch-source3__wscript_build
+++ b/net/samba43/files/patch-source3__wscript_build
@@ -1,6 +1,6 @@
---- source3/wscript_build.orig 2015-02-24 18:59:51.000000000 +0000
-+++ source3/wscript_build 2015-03-25 01:00:04.143487619 +0000
-@@ -601,6 +601,7 @@
+--- source3/wscript_build.orig 2016-05-02 07:48:32.000000000 +0000
++++ source3/wscript_build 2016-05-05 08:40:07.413511000 +0000
+@@ -619,6 +619,7 @@
smbd_conn
param_service
AVAHI
@@ -8,7 +8,7 @@
PRINTBASE
PROFILE
LOCKING
-@@ -1043,6 +1044,7 @@
+@@ -1072,6 +1073,7 @@
msrpc3
RPC_NDR_SRVSVC
cli_smb_common
@@ -16,12 +16,3 @@
''' + bld.env['archive_lib'])
bld.SAMBA3_BINARY('net',
-@@ -1457,7 +1459,7 @@
-
- bld.SAMBA3_PYTHON('pylibsmb',
- source='libsmb/pylibsmb.c',
-- deps='smbclient samba-credentials',
-+ deps='smbclient samba-credentials libsmb errors',
- realname='samba/samba3/libsmb_samba_internal.so'
- )
-