svn commit: samba r19722 - in branches/SAMBA_4_0/source/ldap_server: .

metze at samba.org metze at samba.org
Wed Nov 15 16:53:32 GMT 2006


Author: metze
Date: 2006-11-15 16:53:32 +0000 (Wed, 15 Nov 2006)
New Revision: 19722

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=19722

Log:
fix memory leaks and hierachie bugs

metze
Modified:
   branches/SAMBA_4_0/source/ldap_server/ldap_backend.c


Changeset:
Modified: branches/SAMBA_4_0/source/ldap_server/ldap_backend.c
===================================================================
--- branches/SAMBA_4_0/source/ldap_server/ldap_backend.c	2006-11-15 16:36:14 UTC (rev 19721)
+++ branches/SAMBA_4_0/source/ldap_server/ldap_backend.c	2006-11-15 16:53:32 UTC (rev 19722)
@@ -198,7 +198,7 @@
 	}
 
 	if (req->num_attributes >= 1) {
-		attrs = talloc_array(samdb, const char *, req->num_attributes+1);
+		attrs = talloc_array(local_ctx, const char *, req->num_attributes+1);
 		NT_STATUS_HAVE_NO_MEMORY(attrs);
 
 		for (i=0; i < req->num_attributes; i++) {
@@ -368,7 +368,8 @@
 
 			msg->elements[i].num_values = req->mods[i].attrib.num_values;
 			if (msg->elements[i].num_values > 0) {
-				msg->elements[i].values = talloc_array(msg, struct ldb_val, msg->elements[i].num_values);
+				msg->elements[i].values = talloc_array(msg->elements, struct ldb_val,
+								       msg->elements[i].num_values);
 				NT_STATUS_HAVE_NO_MEMORY(msg->elements[i].values);
 
 				for (j=0; j < msg->elements[i].num_values; j++) {
@@ -456,7 +457,8 @@
 			
 			if (req->attributes[i].num_values > 0) {
 				msg->elements[i].num_values = req->attributes[i].num_values;
-				msg->elements[i].values = talloc_array(msg, struct ldb_val, msg->elements[i].num_values);
+				msg->elements[i].values = talloc_array(msg->elements, struct ldb_val,
+								       msg->elements[i].num_values);
 				NT_STATUS_HAVE_NO_MEMORY(msg->elements[i].values);
 
 				for (j=0; j < msg->elements[i].num_values; j++) {
@@ -671,7 +673,7 @@
 
 	if (result == LDAP_SUCCESS) {
 		ldb_ret = ldb_search(samdb, dn, LDB_SCOPE_BASE, filter, attrs, &res);
-		talloc_steal(samdb, res);
+		talloc_steal(local_ctx, res);
 		if (ldb_ret != LDB_SUCCESS) {
 			result = map_ldb_error(samdb, ldb_ret, &errstr);
 			DEBUG(10,("CompareRequest: error: %s\n", errstr));



More information about the samba-cvs mailing list