mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
r19314: Commit tridge's fixes for a big mem leak in ltdb I introduced
when the code has been changed to be async. With the other committed fixes now this works.
This commit is contained in:
parent
e3b7e91299
commit
49fc640b5c
@ -499,12 +499,11 @@ int ltdb_search(struct ldb_module *module, struct ldb_request *req)
|
||||
return LDB_ERR_OPERATIONS_ERROR;
|
||||
}
|
||||
|
||||
req->handle = init_ltdb_handle(ltdb, module, req->context, req->callback);
|
||||
req->handle = init_ltdb_handle(ltdb, module, req);
|
||||
if (req->handle == NULL) {
|
||||
ltdb_unlock_read(module);
|
||||
return LDB_ERR_OPERATIONS_ERROR;
|
||||
}
|
||||
|
||||
ltdb_ac = talloc_get_type(req->handle->private_data, struct ltdb_context);
|
||||
|
||||
ltdb_ac->tree = req->op.search.tree;
|
||||
|
@ -79,13 +79,12 @@ static int ltdb_err_map(enum TDB_ERROR tdb_code)
|
||||
|
||||
|
||||
struct ldb_handle *init_ltdb_handle(struct ltdb_private *ltdb, struct ldb_module *module,
|
||||
void *context,
|
||||
int (*callback)(struct ldb_context *, void *, struct ldb_reply *))
|
||||
struct ldb_request *req)
|
||||
{
|
||||
struct ltdb_context *ac;
|
||||
struct ldb_handle *h;
|
||||
|
||||
h = talloc_zero(ltdb, struct ldb_handle);
|
||||
h = talloc_zero(req, struct ldb_handle);
|
||||
if (h == NULL) {
|
||||
ldb_set_errstring(module->ldb, "Out of Memory");
|
||||
return NULL;
|
||||
@ -106,8 +105,8 @@ struct ldb_handle *init_ltdb_handle(struct ltdb_private *ltdb, struct ldb_module
|
||||
h->status = LDB_SUCCESS;
|
||||
|
||||
ac->module = module;
|
||||
ac->context = context;
|
||||
ac->callback = callback;
|
||||
ac->context = req->context;
|
||||
ac->callback = req->callback;
|
||||
|
||||
return h;
|
||||
}
|
||||
@ -307,7 +306,7 @@ static int ltdb_add(struct ldb_module *module, struct ldb_request *req)
|
||||
}
|
||||
}
|
||||
|
||||
req->handle = init_ltdb_handle(ltdb, module, req->context, req->callback);
|
||||
req->handle = init_ltdb_handle(ltdb, module, req);
|
||||
if (req->handle == NULL) {
|
||||
return LDB_ERR_OPERATIONS_ERROR;
|
||||
}
|
||||
@ -416,7 +415,7 @@ static int ltdb_delete(struct ldb_module *module, struct ldb_request *req)
|
||||
return LDB_ERR_OPERATIONS_ERROR;
|
||||
}
|
||||
|
||||
req->handle = init_ltdb_handle(ltdb, module, req->context, req->callback);
|
||||
req->handle = init_ltdb_handle(ltdb, module, req);
|
||||
if (req->handle == NULL) {
|
||||
return LDB_ERR_OPERATIONS_ERROR;
|
||||
}
|
||||
@ -772,7 +771,7 @@ static int ltdb_modify(struct ldb_module *module, struct ldb_request *req)
|
||||
|
||||
req->handle = NULL;
|
||||
|
||||
req->handle = init_ltdb_handle(ltdb, module, req->context, req->callback);
|
||||
req->handle = init_ltdb_handle(ltdb, module, req);
|
||||
if (req->handle == NULL) {
|
||||
return LDB_ERR_OPERATIONS_ERROR;
|
||||
}
|
||||
@ -826,7 +825,7 @@ static int ltdb_rename(struct ldb_module *module, struct ldb_request *req)
|
||||
return LDB_ERR_OPERATIONS_ERROR;
|
||||
}
|
||||
|
||||
req->handle = init_ltdb_handle(ltdb, module, req->context, req->callback);
|
||||
req->handle = init_ltdb_handle(ltdb, module, req);
|
||||
if (req->handle == NULL) {
|
||||
return LDB_ERR_OPERATIONS_ERROR;
|
||||
}
|
||||
|
@ -110,8 +110,7 @@ int ltdb_search(struct ldb_module *module, struct ldb_request *req);
|
||||
|
||||
/* The following definitions come from lib/ldb/ldb_tdb/ldb_tdb.c */
|
||||
struct ldb_handle *init_ltdb_handle(struct ltdb_private *ltdb, struct ldb_module *module,
|
||||
void *context,
|
||||
int (*callback)(struct ldb_context *, void *, struct ldb_reply *));
|
||||
struct ldb_request *req);
|
||||
struct TDB_DATA ltdb_key(struct ldb_module *module, const struct ldb_dn *dn);
|
||||
int ltdb_store(struct ldb_module *module, const struct ldb_message *msg, int flgs);
|
||||
int ltdb_delete_noindex(struct ldb_module *module, const struct ldb_dn *dn);
|
||||
|
Loading…
Reference in New Issue
Block a user