[SCM] Samba Shared Repository - branch master updated
Matthias Dieter Wallnöfer
mdw at samba.org
Sun Dec 12 12:51:01 MST 2010
The branch, master has been updated
via 4c373d2 s4:scripting/python/pyglue.c - add a OOM handling
via 13da83b s4:scripting/python/pyglue.c - optimise includes
via c5deda5 s4:param/provision.c - optimise includes
via 34c5bdc s4:libcli/finddc.h - fix header dependancies
via 721c3b1 s4:libcli/finddcs_nbt.c - optimise headers
via f9b8735 s4:libnet/py_net.c - add checks for OOM conditions
via c8d8887 s4:dsdb/pydsdb.c and web_server/wsgi.c - remove accidentally introduced Py_RETURN_NONE
via 65bcde2 s4:lib/ldb-samba/pyldb.c - optimise includes
via b974966 s4:dsdb/pydsdb.c - clean up memory handling
via b56a6f2 ldb:pyldb - optimise includes
from 93ea5cb change searched name from _ss_family to __ss_family
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 4c373d20131fecf09a3e8c053597f68d772b8d55
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Sun Dec 12 19:23:53 2010 +0100
s4:scripting/python/pyglue.c - add a OOM handling
Autobuild-User: Matthias Dieter Wallnöfer <mdw at samba.org>
Autobuild-Date: Sun Dec 12 20:50:55 CET 2010 on sn-devel-104
commit 13da83be60ef79d1ba75455f9b96f7dfb80bd43a
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Sun Dec 12 19:23:34 2010 +0100
s4:scripting/python/pyglue.c - optimise includes
commit c5deda5d85707cf12b491e4887ca2871be742128
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Sun Dec 12 19:19:43 2010 +0100
s4:param/provision.c - optimise includes
commit 34c5bdc1c329a2f3b4ab3a4dfff4c747f2910379
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Sun Dec 12 19:13:51 2010 +0100
s4:libcli/finddc.h - fix header dependancies
And optimise includes
commit 721c3b1c4ba75f9fc846483af325615e0d0420f0
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Sun Dec 12 19:01:23 2010 +0100
s4:libcli/finddcs_nbt.c - optimise headers
commit f9b87352f40c04446bd2456064088df2510e8f70
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Sun Dec 12 18:54:56 2010 +0100
s4:libnet/py_net.c - add checks for OOM conditions
commit c8d888772a855b6f9b7f4b06412b1b4c84174ef8
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Sun Dec 12 18:45:07 2010 +0100
s4:dsdb/pydsdb.c and web_server/wsgi.c - remove accidentally introduced Py_RETURN_NONE
This was only thought for Python 2.3 which we generally no longer support (only
pyldb in the LDB library is an exception).
commit 65bcde23346c16e044e7587de1e7a6fc130b276f
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Sun Dec 12 18:42:58 2010 +0100
s4:lib/ldb-samba/pyldb.c - optimise includes
commit b974966cc2b4d0b5b0d83206070b5f7c5c6495d1
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Sun Dec 12 18:31:37 2010 +0100
s4:dsdb/pydsdb.c - clean up memory handling
- Remove memory contexts when not really useful (if only one allocation)
- Try to find out OOM conditions and return correct error codes
- Move the parameter parsing always to the beginning (to prevent
unneeded allocations in case of errors)
commit b56a6f2eda228698a2433ea2365fda5967bd904c
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Sun Dec 12 17:44:04 2010 +0100
ldb:pyldb - optimise includes
-----------------------------------------------------------------------
Summary of changes:
source4/dsdb/pydsdb.c | 128 ++++++++++++++++++++-----------------
source4/lib/ldb-samba/pyldb.c | 4 +-
source4/lib/ldb/pyldb.c | 3 -
source4/lib/ldb/pyldb.h | 3 +-
source4/lib/ldb/pyldb_util.c | 3 -
source4/libcli/finddc.h | 2 +
source4/libcli/finddcs_cldap.c | 2 -
source4/libcli/finddcs_nbt.c | 2 -
source4/libnet/libnet_lookup.c | 6 --
source4/libnet/py_net.c | 19 ++++--
source4/param/provision.c | 10 +---
source4/scripting/python/pyglue.c | 8 +-
source4/web_server/wsgi.c | 4 -
source4/winbind/wb_dom_info.c | 2 -
14 files changed, 94 insertions(+), 102 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source4/dsdb/pydsdb.c b/source4/dsdb/pydsdb.c
index f5832d1..64b7266 100644
--- a/source4/dsdb/pydsdb.c
+++ b/source4/dsdb/pydsdb.c
@@ -17,11 +17,9 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <Python.h>
+#include "lib/ldb/pyldb.h"
#include "includes.h"
-#include "libcli/util/pyerrors.h"
#include "dsdb/samdb/samdb.h"
-#include "lib/ldb/pyldb.h"
#include "libcli/security/security.h"
#include "librpc/ndr/libndr.h"
#include "system/kerberos.h"
@@ -36,10 +34,6 @@ typedef inquiry lenfunc;
typedef intargfunc ssizeargfunc;
#endif
-#ifndef Py_RETURN_NONE
-#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None
-#endif
-
/* FIXME: These should be in a header file somewhere, once we finish moving
* away from SWIG .. */
#define PyErr_LDB_OR_RAISE(py_ldb, ldb) \
@@ -81,6 +75,10 @@ static PyObject *py_samdb_server_site_name(PyObject *self, PyObject *args)
PyErr_LDB_OR_RAISE(py_ldb, ldb);
mem_ctx = talloc_new(NULL);
+ if (mem_ctx == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
site = samdb_server_site_name(ldb, mem_ctx);
if (site == NULL) {
@@ -133,6 +131,10 @@ static PyObject *py_samdb_set_domain_sid(PyLdbObject *self, PyObject *args)
PyErr_LDB_OR_RAISE(py_ldb, ldb);
sid = dom_sid_parse_talloc(NULL, PyString_AsString(py_sid));
+ if (sid == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
ret = samdb_set_domain_sid(ldb, sid);
talloc_free(sid);
@@ -153,7 +155,7 @@ static PyObject *py_samdb_set_ntds_settings_dn(PyLdbObject *self, PyObject *args
if (!PyArg_ParseTuple(args, "OO", &py_ldb, &py_ntds_settings_dn))
return NULL;
-
+
PyErr_LDB_OR_RAISE(py_ldb, ldb);
tmp_ctx = talloc_new(NULL);
@@ -163,6 +165,8 @@ static PyObject *py_samdb_set_ntds_settings_dn(PyLdbObject *self, PyObject *args
}
if (!PyObject_AsDn(tmp_ctx, py_ntds_settings_dn, ldb, &ntds_settings_dn)) {
+ PyErr_NoMemory();
+ talloc_free(tmp_ctx);
return NULL;
}
@@ -185,15 +189,20 @@ static PyObject *py_samdb_get_domain_sid(PyLdbObject *self, PyObject *args)
if (!PyArg_ParseTuple(args, "O", &py_ldb))
return NULL;
-
+
PyErr_LDB_OR_RAISE(py_ldb, ldb);
sid = samdb_domain_sid(ldb);
if (!sid) {
PyErr_SetString(PyExc_RuntimeError, "samdb_domain_sid failed");
return NULL;
- }
+ }
+
retstr = dom_sid_string(NULL, sid);
+ if (retstr == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
ret = PyString_FromString(retstr);
talloc_free(retstr);
return ret;
@@ -203,17 +212,10 @@ static PyObject *py_samdb_ntds_invocation_id(PyObject *self, PyObject *args)
{
PyObject *py_ldb, *result;
struct ldb_context *ldb;
- TALLOC_CTX *mem_ctx;
const struct GUID *guid;
-
- mem_ctx = talloc_new(NULL);
- if (mem_ctx == NULL) {
- PyErr_NoMemory();
- return NULL;
- }
+ char *retstr;
if (!PyArg_ParseTuple(args, "O", &py_ldb)) {
- talloc_free(mem_ctx);
return NULL;
}
@@ -223,12 +225,16 @@ static PyObject *py_samdb_ntds_invocation_id(PyObject *self, PyObject *args)
if (guid == NULL) {
PyErr_SetString(PyExc_RuntimeError,
"Failed to find NTDS invocation ID");
- talloc_free(mem_ctx);
return NULL;
}
- result = PyString_FromString(GUID_string(mem_ctx, guid));
- talloc_free(mem_ctx);
+ retstr = GUID_string(NULL, guid);
+ if (retstr == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+ result = PyString_FromString(retstr);
+ talloc_free(retstr);
return result;
}
@@ -240,7 +246,6 @@ static PyObject *py_dsdb_get_oid_from_attid(PyObject *self, PyObject *args)
struct dsdb_schema *schema;
const char *oid;
PyObject *ret;
- TALLOC_CTX *mem_ctx;
WERROR status;
if (!PyArg_ParseTuple(args, "Oi", &py_ldb, &attid))
@@ -248,27 +253,19 @@ static PyObject *py_dsdb_get_oid_from_attid(PyObject *self, PyObject *args)
PyErr_LDB_OR_RAISE(py_ldb, ldb);
- mem_ctx = talloc_new(NULL);
- if (mem_ctx == NULL) {
- PyErr_NoMemory();
- return NULL;
- }
-
schema = dsdb_get_schema(ldb, NULL);
if (!schema) {
PyErr_SetString(PyExc_RuntimeError, "Failed to find a schema from ldb \n");
- talloc_free(mem_ctx);
return NULL;
}
status = dsdb_schema_pfm_oid_from_attid(schema->prefixmap, attid,
- mem_ctx, &oid);
+ NULL, &oid);
PyErr_WERROR_IS_ERR_RAISE(status);
ret = PyString_FromString(oid);
-
- talloc_free(mem_ctx);
+ talloc_free(discard_const_p(char, oid));
return ret;
}
@@ -361,11 +358,28 @@ static PyObject *py_dsdb_DsReplicaAttribute(PyObject *self, PyObject *args)
syntax_ctx.is_schema_nc = false;
tmp_ctx = talloc_new(ldb);
+ if (tmp_ctx == NULL) {
+ PyErr_NoMemory();
+ 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);
+
el->values = talloc_array(el, struct ldb_val, el->num_values);
+ if (el->values == NULL) {
+ PyErr_NoMemory();
+ talloc_free(tmp_ctx);
+ return NULL;
+ }
+
for (i = 0; i < el->num_values; i++) {
PyObject *item = PyList_GetItem(el_list, i);
if (!PyString_Check(item)) {
@@ -377,13 +391,18 @@ static PyObject *py_dsdb_DsReplicaAttribute(PyObject *self, PyObject *args)
}
attr = talloc_zero(tmp_ctx, struct drsuapi_DsReplicaAttribute);
+ if (attr == NULL) {
+ PyErr_NoMemory();
+ talloc_free(tmp_ctx);
+ return NULL;
+ }
werr = a->syntax->ldb_to_drsuapi(&syntax_ctx, a, el, attr, attr);
PyErr_WERROR_IS_ERR_RAISE(werr);
ret = py_return_ndr_struct("samba.dcerpc.drsuapi", "DsReplicaAttribute", attr, attr);
- talloc_unlink(ldb, tmp_ctx);
+ talloc_free(tmp_ctx);
return ret;
}
@@ -412,8 +431,8 @@ static PyObject *py_samdb_ntds_objectGUID(PyObject *self, PyObject *args)
{
PyObject *py_ldb, *result;
struct ldb_context *ldb;
- TALLOC_CTX *mem_ctx;
const struct GUID *guid;
+ char *retstr;
if (!PyArg_ParseTuple(args, "O", &py_ldb)) {
return NULL;
@@ -421,21 +440,19 @@ static PyObject *py_samdb_ntds_objectGUID(PyObject *self, PyObject *args)
PyErr_LDB_OR_RAISE(py_ldb, ldb);
- mem_ctx = talloc_new(NULL);
- if (mem_ctx == NULL) {
- PyErr_NoMemory();
- return NULL;
- }
-
guid = samdb_ntds_objectGUID(ldb);
if (guid == NULL) {
PyErr_SetString(PyExc_RuntimeError, "Failed to find NTDS GUID");
- talloc_free(mem_ctx);
return NULL;
}
- result = PyString_FromString(GUID_string(mem_ctx, guid));
- talloc_free(mem_ctx);
+ retstr = GUID_string(NULL, guid);
+ if (retstr == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+ result = PyString_FromString(retstr);
+ talloc_free(retstr);
return result;
}
@@ -464,19 +481,18 @@ static PyObject *py_dsdb_load_partition_usn(PyObject *self, PyObject *args)
TALLOC_CTX *mem_ctx;
int ret;
+ if (!PyArg_ParseTuple(args, "OO", &py_ldb, &py_dn)) {
+ return NULL;
+ }
+
+ PyErr_LDB_OR_RAISE(py_ldb, ldb);
+
mem_ctx = talloc_new(NULL);
if (mem_ctx == NULL) {
PyErr_NoMemory();
return NULL;
}
- if (!PyArg_ParseTuple(args, "OO", &py_ldb, &py_dn)) {
- talloc_free(mem_ctx);
- return NULL;
- }
-
- PyErr_LDB_OR_RAISE(py_ldb, ldb);
-
if (!PyObject_AsDn(mem_ctx, py_dn, ldb, &dn)) {
talloc_free(mem_ctx);
return NULL;
@@ -597,7 +613,6 @@ static PyObject *py_dsdb_get_partitions_dn(PyObject *self, PyObject *args)
struct ldb_context *ldb;
struct ldb_dn *dn;
PyObject *py_ldb, *ret;
- TALLOC_CTX *tmp_ctx;
PyObject *mod;
mod = PyImport_ImportModule("ldb");
@@ -607,16 +622,13 @@ static PyObject *py_dsdb_get_partitions_dn(PyObject *self, PyObject *args)
PyErr_LDB_OR_RAISE(py_ldb, ldb);
- tmp_ctx = talloc_new(NULL);
-
- dn = samdb_partitions_dn(ldb, tmp_ctx);
-
+ dn = samdb_partitions_dn(ldb, NULL);
if (dn == NULL) {
- talloc_free(tmp_ctx);
- Py_RETURN_NONE;
+ PyErr_NoMemory();
+ return NULL;
}
ret = PyLdbDn_FromDn(dn);
- talloc_free(tmp_ctx);
+ talloc_free(dn);
return ret;
}
diff --git a/source4/lib/ldb-samba/pyldb.c b/source4/lib/ldb-samba/pyldb.c
index e8cdb90..f198d74 100644
--- a/source4/lib/ldb-samba/pyldb.c
+++ b/source4/lib/ldb-samba/pyldb.c
@@ -19,10 +19,8 @@
License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
-#include <Python.h>
-#include "includes.h"
-#include <ldb.h>
#include "lib/ldb/pyldb.h"
+#include "includes.h"
#include "param/pyparam.h"
#include "auth/credentials/pycredentials.h"
#include "ldb_wrap.h"
diff --git a/source4/lib/ldb/pyldb.c b/source4/lib/ldb/pyldb.c
index 3bee9ab..44a006f 100644
--- a/source4/lib/ldb/pyldb.c
+++ b/source4/lib/ldb/pyldb.c
@@ -26,9 +26,6 @@
License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
-#include <Python.h>
-#include "replace.h"
-#include "ldb_private.h"
#include "pyldb.h"
/* There's no Py_ssize_t in 2.4, apparently */
diff --git a/source4/lib/ldb/pyldb.h b/source4/lib/ldb/pyldb.h
index 1f4bdf7..afc8c51 100644
--- a/source4/lib/ldb/pyldb.h
+++ b/source4/lib/ldb/pyldb.h
@@ -1,7 +1,7 @@
/*
Unix SMB/CIFS implementation.
- Swig interface to ldb.
+ Python interface to ldb.
Copyright (C) 2007-2008 Jelmer Vernooij <jelmer at samba.org>
@@ -28,6 +28,7 @@
#include <Python.h>
#include <talloc.h>
+#include "ldb_private.h"
typedef struct {
PyObject_HEAD
diff --git a/source4/lib/ldb/pyldb_util.c b/source4/lib/ldb/pyldb_util.c
index 3e015d0..35071f3 100644
--- a/source4/lib/ldb/pyldb_util.c
+++ b/source4/lib/ldb/pyldb_util.c
@@ -23,10 +23,7 @@
License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
-#include <Python.h>
-#include "replace.h"
#include "pyldb.h"
-#include <ldb.h>
static PyObject *ldb_module = NULL;
diff --git a/source4/libcli/finddc.h b/source4/libcli/finddc.h
index 86e2f2c..9ff1723 100644
--- a/source4/libcli/finddc.h
+++ b/source4/libcli/finddc.h
@@ -19,6 +19,8 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "lib/messaging/messaging.h"
+#include "libcli/libcli.h"
#include "libcli/netlogon.h"
struct finddcs {
diff --git a/source4/libcli/finddcs_cldap.c b/source4/libcli/finddcs_cldap.c
index 1928243..293641b 100644
--- a/source4/libcli/finddcs_cldap.c
+++ b/source4/libcli/finddcs_cldap.c
@@ -23,8 +23,6 @@
#include "include/includes.h"
#include <tevent.h>
#include "libcli/resolve/resolve.h"
-#include "lib/messaging/messaging.h"
-#include "libcli/libcli.h"
#include "libcli/cldap/cldap.h"
#include "libcli/finddc.h"
#include "libcli/security/security.h"
diff --git a/source4/libcli/finddcs_nbt.c b/source4/libcli/finddcs_nbt.c
index 5309900..c7e8989 100644
--- a/source4/libcli/finddcs_nbt.c
+++ b/source4/libcli/finddcs_nbt.c
@@ -24,11 +24,9 @@
#include <tevent.h>
#include "lib/messaging/irpc.h"
#include "librpc/gen_ndr/ndr_irpc_c.h"
-#include "librpc/gen_ndr/samr.h"
#include "libcli/composite/composite.h"
#include "libcli/libcli.h"
#include "libcli/resolve/resolve.h"
-#include "libcli/finddc.h"
#include "lib/util/tevent_ntstatus.h"
struct finddcs_nbt_state {
diff --git a/source4/libnet/libnet_lookup.c b/source4/libnet/libnet_lookup.c
index 272a3fa..f937940 100644
--- a/source4/libnet/libnet_lookup.c
+++ b/source4/libnet/libnet_lookup.c
@@ -22,19 +22,13 @@
*/
#include "includes.h"
-#include "lib/events/events.h"
#include "libnet/libnet.h"
#include "libcli/composite/composite.h"
#include "auth/credentials/credentials.h"
-#include "lib/messaging/messaging.h"
-#include "lib/messaging/irpc.h"
#include "libcli/resolve/resolve.h"
-#include "libcli/libcli.h"
#include "libcli/finddc.h"
#include "libcli/security/security.h"
-#include "librpc/gen_ndr/lsa.h"
#include "librpc/gen_ndr/ndr_lsa_c.h"
-
#include "param/param.h"
struct lookup_state {
diff --git a/source4/libnet/py_net.c b/source4/libnet/py_net.c
index 9775e24..28dee59 100644
--- a/source4/libnet/py_net.c
+++ b/source4/libnet/py_net.c
@@ -18,19 +18,15 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <Python.h>
+#include "lib/ldb/pyldb.h"
#include "includes.h"
#include "libnet.h"
#include "auth/credentials/pycredentials.h"
#include "libcli/security/security.h"
#include "lib/events/events.h"
-#include "param/param.h"
#include "param/pyparam.h"
-#include "lib/ldb/pyldb.h"
#include "auth/gensec/gensec.h"
-#include "librpc/rpc/pyrpc.h"
#include "librpc/rpc/pyrpc_util.h"
-#include "lib/messaging/messaging.h"
#include "libcli/finddc.h"
#include "libcli/resolve/resolve.h"
@@ -55,6 +51,10 @@ static PyObject *py_net_join(py_net_Object *self, PyObject *args, PyObject *kwar
return NULL;
mem_ctx = talloc_new(self->mem_ctx);
+ if (mem_ctx == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
status = libnet_Join(self->libnet_ctx, mem_ctx, &r);
if (NT_STATUS_IS_ERR(status)) {
@@ -95,7 +95,12 @@ static PyObject *py_net_set_password(py_net_Object *self, PyObject *args, PyObje
/* FIXME: we really need to get a context from the caller or we may end
* up with 2 event contexts */
ev = s4_event_context_init(NULL);
+
mem_ctx = talloc_new(ev);
+ if (mem_ctx == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
status = libnet_SetPassword(self->libnet_ctx, mem_ctx, &r);
if (NT_STATUS_IS_ERR(status)) {
@@ -131,6 +136,10 @@ static PyObject *py_net_export_keytab(py_net_Object *self, PyObject *args, PyObj
}
mem_ctx = talloc_new(self->mem_ctx);
+ if (mem_ctx == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
--
Samba Shared Repository
More information about the samba-cvs
mailing list