pydsdb: Fix memory leak on invalid parameters, formatting, trivial
authorJelmer Vernooij <jelmer@samba.org>
Thu, 15 Apr 2010 16:41:56 +0000 (18:41 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Thu, 15 Apr 2010 16:45:41 +0000 (18:45 +0200)
typos.

source4/dsdb/pydsdb.c
source4/scripting/python/samba/tests/dsdb.py

index 39f20672ced6814744178453df326daa448d5e35..88c62086f3dad01cc5da8ee390f5acdab78a894a 100644 (file)
@@ -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 },
index ed41d87f3d5a55308826d1406d53b42dbaf6b87d..86ec3ecd6c117c7bceeba991e8d85bc55022c131 100644 (file)
@@ -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
 #
 
 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")
-