diff options
author | Kamen Mazdrashki <kamenim@samba.org> | 2014-11-09 04:31:36 +0100 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2014-11-25 05:04:07 +0100 |
commit | 18f879b857c174371a9fe27722c70051ed68ed64 (patch) | |
tree | d00ce7e43744f407596aa273ab6b4ffd5e9cf2c8 /lib/ldb/pyldb.c | |
parent | a48b533ea5c9faae3429b0fb680b52b14676cd22 (diff) | |
download | samba-18f879b857c174371a9fe27722c70051ed68ed64.tar.gz samba-18f879b857c174371a9fe27722c70051ed68ed64.tar.xz samba-18f879b857c174371a9fe27722c70051ed68ed64.zip |
lib-pyldb: Avoid leaking memory in error cases
Signed-off-by: Kamen Mazdrashki <kamenim@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'lib/ldb/pyldb.c')
-rw-r--r-- | lib/ldb/pyldb.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/ldb/pyldb.c b/lib/ldb/pyldb.c index c541b7249e..efac7b1be6 100644 --- a/lib/ldb/pyldb.c +++ b/lib/ldb/pyldb.c @@ -1624,8 +1624,6 @@ static PyObject *py_ldb_schema_format_value(PyLdbObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "sO", &element_name, &val)) return NULL; - mem_ctx = talloc_new(NULL); - old_val.data = (uint8_t *)PyString_AsString(val); old_val.length = PyString_Size(val); @@ -1640,6 +1638,12 @@ static PyObject *py_ldb_schema_format_value(PyLdbObject *self, PyObject *args) Py_RETURN_NONE; } + mem_ctx = talloc_new(NULL); + if (mem_ctx == NULL) { + PyErr_NoMemory(); + return NULL; + } + if (a->syntax->ldif_write_fn(pyldb_Ldb_AsLdbContext(self), mem_ctx, &old_val, &new_val) != 0) { talloc_free(mem_ctx); Py_RETURN_NONE; |