Mercurial > dovecot > original-hg > dovecot-1.2
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)) {