summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2010-04-15 18:41:56 +0200
committerJelmer Vernooij <jelmer@samba.org>2010-04-15 18:45:41 +0200
commit13bbfa3fcabfc97a57ae56ef916bf13137fb5290 (patch)
tree26be3d8c069a02d8c1a21784e7d5b38bf395e18c
parentce28f854c0c8c62c6f13989ec4d2f9e890ffd0e1 (diff)
downloadsamba-13bbfa3fcabfc97a57ae56ef916bf13137fb5290.tar.gz
samba-13bbfa3fcabfc97a57ae56ef916bf13137fb5290.tar.bz2
samba-13bbfa3fcabfc97a57ae56ef916bf13137fb5290.zip
pydsdb: Fix memory leak on invalid parameters, formatting, trivial
typos.
-rw-r--r--source4/dsdb/pydsdb.c23
-rw-r--r--source4/scripting/python/samba/tests/dsdb.py16
2 files changed, 22 insertions, 17 deletions
diff --git a/source4/dsdb/pydsdb.c b/source4/dsdb/pydsdb.c
index 39f20672ce..88c62086f3 100644
--- a/source4/dsdb/pydsdb.c
+++ b/source4/dsdb/pydsdb.c
@@ -191,31 +191,38 @@ static PyObject *py_dsdb_get_oid_from_attid(PyObject *self, PyObject *args)
uint32_t attid;
struct dsdb_schema *schema;
const char *oid;
+ PyObject *ret;
TALLOC_CTX *mem_ctx;
WERROR status;
+ if (!PyArg_ParseTuple(args, "Oi", &py_ldb, &attid))
+ return NULL;
+
mem_ctx = talloc_new(NULL);
if (mem_ctx == NULL) {
PyErr_NoMemory();
return NULL;
}
- if (!PyArg_ParseTuple(args, "Oi", &py_ldb, &attid))
- return NULL;
-
PyErr_LDB_OR_RAISE(py_ldb, ldb);
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);
+
+ status = dsdb_schema_pfm_oid_from_attid(schema->prefixmap, attid,
+ mem_ctx, &oid);
PyErr_WERROR_IS_ERR_RAISE(status);
- return PyString_FromString(oid);
+ ret = PyString_FromString(oid);
+
+ talloc_free(mem_ctx);
+
+ return ret;
}
static PyObject *py_dsdb_set_ntds_invocation_id(PyObject *self, PyObject *args)
@@ -349,8 +356,8 @@ static PyMethodDef py_dsdb_methods[] = {
"Get SID of domain in use." },
{ "samdb_ntds_invocation_id", (PyCFunction)py_samdb_ntds_invocation_id,
METH_VARARGS, "get the NTDS invocation ID GUID as a string"},
- { "dsdb_get_oid_from_attid", (PyCFunction)py_dsdb_get_oid_from_attid, METH_VARARGS,
- NULL },
+ { "dsdb_get_oid_from_attid", (PyCFunction)py_dsdb_get_oid_from_attid,
+ METH_VARARGS, NULL },
{ "dsdb_set_ntds_invocation_id",
(PyCFunction)py_dsdb_set_ntds_invocation_id, METH_VARARGS,
NULL },
diff --git a/source4/scripting/python/samba/tests/dsdb.py b/source4/scripting/python/samba/tests/dsdb.py
index ed41d87f3d..86ec3ecd6c 100644
--- a/source4/scripting/python/samba/tests/dsdb.py
+++ b/source4/scripting/python/samba/tests/dsdb.py
@@ -1,6 +1,6 @@
#!/usr/bin/python
-# Unix SMB/CIFS implementation. Tests for glue helper
+# Unix SMB/CIFS implementation. Tests for dsdb
# Copyright (C) Matthieu Patou <mat@matws.net> 2010
#
# This program is free software; you can redistribute it and/or modify
@@ -18,27 +18,25 @@
#
import samba.dsdb
-import samba.param
from samba.credentials import Credentials
from samba import Ldb
from samba.auth import system_session
-from testtools.testcase import TestCase, TestSkipped
-import random
+from testtools.testcase import TestCase
import os
-class GlueTests(TestCase):
+class DsdbTests(TestCase):
def _baseprovpath(self):
return os.path.join(os.environ['SELFTEST_PREFIX'], "dc")
def test_get_oid_from_attrid(self):
lp = samba.param.LoadParm()
- lp.load(os.path.join(os.path.join(self._baseprovpath(),"etc"),"smb.conf"))
+ lp.load(os.path.join(os.path.join(self._baseprovpath(), "etc"), "smb.conf"))
creds = Credentials()
creds.guess(lp)
session = system_session()
- test_ldb = Ldb(os.path.join(os.path.join(self._baseprovpath(),"private"),"sam.ldb"), session_info=session, credentials=creds,lp=lp)
- oid = samba.dsdb.dsdb_get_oid_from_attid(test_ldb,591614)
+ test_ldb = Ldb(os.path.join(self._baseprovpath(), "private", "sam.ldb"),
+ session_info=session, credentials=creds,lp=lp)
+ oid = samba.dsdb.dsdb_get_oid_from_attid(test_ldb, 591614)
self.assertEquals(oid, "1.2.840.113556.1.4.1790")
-