svn commit: lorikeet r265 - in trunk/heimdal/lib/hdb: .

abartlet at samba.org abartlet at samba.org
Tue May 10 08:10:59 GMT 2005


Author: abartlet
Date: 2005-05-10 08:10:58 +0000 (Tue, 10 May 2005)
New Revision: 265

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

Log:
Avoid memory leaks by properly stealing the returned messages onto a
talloc context.

Andrew Bartlett

Modified:
   trunk/heimdal/lib/hdb/hdb-ldb.c


Changeset:
Modified: trunk/heimdal/lib/hdb/hdb-ldb.c
===================================================================
--- trunk/heimdal/lib/hdb/hdb-ldb.c	2005-05-09 22:03:56 UTC (rev 264)
+++ trunk/heimdal/lib/hdb/hdb-ldb.c	2005-05-10 08:10:58 UTC (rev 265)
@@ -361,7 +361,7 @@
 					    krb5_principal principal,
 					    enum hdb_ent_type ent_type,
 					    const char *realm_dn,
-					    struct ldb_message ***msg)
+					    struct ldb_message ***pmsg)
 {
 	krb5_error_code ret;
 	int count;
@@ -373,6 +373,8 @@
 	char *princ_str_talloc;
 	char *short_princ;
 
+	struct ldb_message **msg;
+
 	ret = krb5_unparse_name(context, principal, &princ_str);
 
 	if (ret != 0) {
@@ -419,7 +421,9 @@
 	}
 
 	count = ldb_search(ldb_ctx, realm_dn, LDB_SCOPE_SUBTREE, filter, 
-			   princ_attrs, msg);
+			   princ_attrs, &msg);
+
+	*pmsg = talloc_steal(mem_ctx, msg);
 	if (count < 1) {
 		krb5_warnx(context, "ldb_search: basedn: '%s' filter: '%s' failed: %d", 
 			   realm_dn, filter, count);
@@ -442,10 +446,11 @@
 static krb5_error_code LDB_lookup_realm(krb5_context context, struct ldb_context *ldb_ctx, 
 					TALLOC_CTX *mem_ctx,
 					const char *realm,
-					struct ldb_message ***msg)
+					struct ldb_message ***pmsg)
 {
 	int count;
 	char *realm_filter;
+	struct ldb_message **msg;
 
 	const char *realm_attrs[] = {
 		"realm", 
@@ -462,7 +467,9 @@
 	}
 
 	count = ldb_search(ldb_ctx, NULL, LDB_SCOPE_SUBTREE, realm_filter, 
-			   realm_attrs, msg);
+			   realm_attrs, &msg);
+	*pmsg = talloc_steal(mem_ctx, msg);
+
 	if (count < 1) {
 		krb5_warnx(context, "ldb_search: filter: '%s' failed: %d", realm_filter, count);
 		krb5_set_error_string(context, "ldb_search: filter: '%s' failed: %d", realm_filter, count);
@@ -641,6 +648,7 @@
 	struct hdb_ldb_seq *priv = (struct hdb_ldb_seq *)db->hdb_openp;
 	char *realm;
 	char *realm_dn = NULL;
+	struct ldb_message **msgs = NULL;
 	struct ldb_message **realm_msgs = NULL;
 	krb5_error_code ret;
 	TALLOC_CTX *mem_ctx;
@@ -694,8 +702,10 @@
 
 	priv->count = ldb_search(ldb_ctx, realm_dn,
 				 LDB_SCOPE_SUBTREE, "(objectClass=user)",
-				 krb5_attrs, &priv->msgs);
+				 krb5_attrs, &msgs);
 
+	priv->msgs = talloc_steal(priv, msgs);
+
 	if (priv->count <= 0) {
 		talloc_free(priv);
 		return HDB_ERR_NOENTRY;



More information about the samba-cvs mailing list