{
char *name;
int err;
- uint8_t *value;
+ uint8_t *value = NULL;
Py_ssize_t size = 0;
- if (!PyArg_ParseTuple(args, "sz#", &name, (const char**)&value, &size))
+ if (!PyArg_ParseTuple(args, "sz#", &name, (char **)&value, &size))
return NULL;
if (value == NULL) {
PyObject *list, *ret;
struct ldb_ldif *ldif;
const char *s;
+ struct ldb_dn *last_dn = NULL;
TALLOC_CTX *mem_ctx;
talloc_steal(mem_ctx, ldif);
if (ldif) {
PyList_Append(list, ldb_ldif_to_pyobject(ldif));
+ last_dn = ldif->msg->dn;
} else {
- PyErr_SetString(PyExc_ValueError, "unable to parse ldif string");
+ const char *last_dn_str = NULL;
+ const char *err_string = NULL;
+ if (last_dn == NULL) {
+ PyErr_SetString(PyExc_ValueError,
+ "unable to parse LDIF "
+ "string at first chunk");
+ talloc_free(mem_ctx);
+ return NULL;
+ }
+
+ last_dn_str
+ = ldb_dn_get_linearized(last_dn);
+
+ err_string
+ = talloc_asprintf(mem_ctx,
+ "unable to parse ldif "
+ "string AFTER %s",
+ last_dn_str);
+
+ PyErr_SetString(PyExc_ValueError,
+ err_string);
talloc_free(mem_ctx);
return NULL;
}
if (!PyArg_ParseTuple(args, "O", &input))
return NULL;
- ops = talloc_zero(talloc_autofree_context(), struct ldb_module_ops);
+ ops = talloc_zero(NULL, struct ldb_module_ops);
if (ops == NULL) {
PyErr_NoMemory();
return NULL;
ops->del_transaction = py_module_del_transaction;
ret = ldb_register_module(ops);
+ if (ret != LDB_SUCCESS) {
+ TALLOC_FREE(ops);
+ }
PyErr_LDB_ERROR_IS_ERR_RAISE(PyExc_LdbError, ret, NULL);
ADD_LDB_INT(FLG_NOSYNC);
ADD_LDB_INT(FLG_RECONNECT);
ADD_LDB_INT(FLG_NOMMAP);
+ ADD_LDB_INT(FLG_SHOW_BINARY);
+ ADD_LDB_INT(FLG_ENABLE_TRACING);
+ ADD_LDB_INT(FLG_DONT_CREATE_DB);
+
/* Historical misspelling */
PyModule_AddIntConstant(m, "ERR_ALIAS_DEREFERINCING_PROBLEM", LDB_ERR_ALIAS_DEREFERENCING_PROBLEM);