changeset 6144:d779b7220e23 HEAD

LDAP crashfixes. Based on patch by Katsu Yamamoto.
author Timo Sirainen <tss@iki.fi>
date Wed, 25 Jul 2007 08:45:11 +0300
parents 705773edecfb
children 5ec02199ff4a
files src/auth/db-ldap.c src/auth/userdb-ldap.c
diffstat 2 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/db-ldap.c	Tue Jul 24 07:57:52 2007 +0300
+++ b/src/auth/db-ldap.c	Wed Jul 25 08:45:11 2007 +0300
@@ -55,6 +55,7 @@
 	BerElement *ber;
 
 	string_t *var, *debug;
+	unsigned int value_idx;
 };
 
 #define DEF_STR(name) DEF_STRUCT_STR(name, ldap_settings)
@@ -764,12 +765,13 @@
 	ctx->vals = ldap_get_values(ctx->conn->ld, ctx->entry,
 				    ctx->attr);
 	ctx->value = ctx->vals[0];
+	ctx->value_idx = 0;
 }
 
 static void
 db_ldap_result_return_value(struct db_ldap_result_iterate_context *ctx)
 {
-	bool first = ctx->value == ctx->vals[0];
+	bool first = ctx->value_idx == 0;
 
 	if (ctx->template != NULL) {
 		ctx->var_table[0].value = ctx->value;
@@ -798,7 +800,7 @@
 		} else {
 			/* continuing existing attribute */
 			if (ctx->value != NULL)
-				ctx->value++;
+				ctx->value = ctx->vals[++ctx->value_idx];
 		}
 
 		if (ctx->value != NULL) {
--- a/src/auth/userdb-ldap.c	Tue Jul 24 07:57:52 2007 +0300
+++ b/src/auth/userdb-ldap.c	Wed Jul 25 08:45:11 2007 +0300
@@ -37,6 +37,8 @@
 	struct db_ldap_result_iterate_context *ldap_iter;
 	const char *name, *const *values;
 
+	auth_request_init_userdb_reply(auth_request);
+
 	ldap_iter = db_ldap_result_iterate_init(conn, entry, auth_request,
 						conn->user_attr_map);
 	while (db_ldap_result_iterate_next_all(ldap_iter, &name, &values)) {