Mercurial > dovecot > core-2.2
changeset 16080:f874733b4029
Merged changes from v2.1 tree.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 20 Mar 2013 21:44:48 +0200 |
parents | 9a913c803608 (current diff) e511408bd991 (diff) |
children | 11bd79bf4866 |
files | src/auth/mech-scram-sha1.c src/doveadm/doveadm-pw.c src/lib-mail/message-decoder.c src/lib-settings/settings-parser.c src/lib-storage/index/dbox-common/dbox-save.c src/lib-storage/mail-storage-settings.c src/plugins/fts/fts-api.c |
diffstat | 6 files changed, 37 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/doveadm/doveadm-pw.c Wed Mar 20 21:04:29 2013 +0200 +++ b/src/doveadm/doveadm-pw.c Wed Mar 20 21:44:48 2013 +0200 @@ -78,7 +78,7 @@ if (rounds > 0) password_set_encryption_rounds(rounds); - if (test_hash != NULL) + if (test_hash != NULL && plaintext == NULL) plaintext = t_askpass("Enter password to verify: "); while (plaintext == NULL) { const char *check;
--- a/src/lib-mail/message-decoder.c Wed Mar 20 21:04:29 2013 +0200 +++ b/src/lib-mail/message-decoder.c Wed Mar 20 21:44:48 2013 +0200 @@ -201,7 +201,7 @@ { unsigned char trans_buf[MAX_TRANSLATION_BUF_SIZE+1]; unsigned int data_wanted, skip; - size_t trans_size; + size_t trans_size, orig_size; /* @UNSAFE: move the previously untranslated bytes to trans_buf and see if we have now enough data to get the next character @@ -212,11 +212,19 @@ data_wanted = *size; memcpy(trans_buf + ctx->translation_size, *data, data_wanted); - trans_size = ctx->translation_size + data_wanted; + orig_size = trans_size = ctx->translation_size + data_wanted; (void)charset_to_utf8(ctx->charset_trans, trans_buf, &trans_size, ctx->buf2); - i_assert(trans_size > ctx->translation_size); + if (trans_size <= ctx->translation_size) { + /* need more data to finish the translation. */ + i_assert(orig_size < MAX_TRANSLATION_BUF_SIZE); + memcpy(ctx->translation_buf, trans_buf, orig_size); + ctx->translation_size = orig_size; + *data += *size; + *size = 0; + return; + } skip = trans_size - ctx->translation_size; i_assert(*size >= skip);
--- a/src/lib-settings/settings-parser.c Wed Mar 20 21:04:29 2013 +0200 +++ b/src/lib-settings/settings-parser.c Wed Mar 20 21:44:48 2013 +0200 @@ -959,8 +959,15 @@ if (input->stream_errno != 0) { ctx->error = p_strdup_printf(ctx->parser_pool, "read() failed: %m"); + } else if (input->v_offset == 0) { + ctx->error = p_strdup_printf(ctx->parser_pool, + "read(%s) disconnected before receiving any data", + i_stream_get_name(input)); } else { - ctx->error = "input is missing end-of-settings line"; + ctx->error = p_strdup_printf(ctx->parser_pool, + "read(%s) disconnected before receiving " + "end-of-settings line", + i_stream_get_name(input)); } break; case -2: @@ -991,6 +998,7 @@ } input = i_stream_create_fd(fd, max_line_length, TRUE); + i_stream_set_name(input, path); ret = settings_parse_stream_read(ctx, input); i_stream_unref(&input); @@ -1080,6 +1088,7 @@ i_close_fd(&fd[1]); input = i_stream_create_fd(fd[0], (size_t)-1, TRUE); + i_stream_set_name(input, bin_path); ret = settings_parse_stream_read(ctx, input); i_stream_destroy(&input);
--- a/src/lib-storage/index/dbox-common/dbox-save.c Wed Mar 20 21:04:29 2013 +0200 +++ b/src/lib-storage/index/dbox-common/dbox-save.c Wed Mar 20 21:44:48 2013 +0200 @@ -113,10 +113,14 @@ ctx->failed = TRUE; } if (mdata->output != dbox_output) { - /* e.g. zlib plugin had changed this */ - o_stream_ref(dbox_output); - o_stream_destroy(&mdata->output); - mdata->output = dbox_output; + if (mdata->output != NULL) { + /* e.g. zlib plugin had changed this */ + o_stream_ref(dbox_output); + o_stream_destroy(&mdata->output); + mdata->output = dbox_output; + } else { + i_assert(ctx->failed); + } } index_mail_cache_parse_deinit(ctx->ctx.dest_mail, ctx->ctx.data.received_date,
--- a/src/lib-storage/mail-storage-settings.c Wed Mar 20 21:04:29 2013 +0200 +++ b/src/lib-storage/mail-storage-settings.c Wed Mar 20 21:44:48 2013 +0200 @@ -458,7 +458,7 @@ return FALSE; } - if (ns->alias_for != NULL) { + if (ns->alias_for != NULL && !ns->disabled) { if (array_is_created(&ns->user_set->namespaces)) { namespaces = array_get(&ns->user_set->namespaces, &count);
--- a/src/plugins/fts/fts-api.c Wed Mar 20 21:04:29 2013 +0200 +++ b/src/plugins/fts/fts-api.c Wed Mar 20 21:44:48 2013 +0200 @@ -342,8 +342,13 @@ result->box_results = p_new(result->pool, struct fts_result, i+1); for (i = 0; boxes[i] != NULL; i++) { + struct fts_result *box_result = &result->box_results[i]; + + p_array_init(&box_result->definite_uids, result->pool, 32); + p_array_init(&box_result->maybe_uids, result->pool, 32); + p_array_init(&box_result->scores, result->pool, 32); if (backend->v.lookup(backend, boxes[i], args, - and_args, &result->box_results[i]) < 0) + and_args, box_result) < 0) return -1; } return 0;