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