dovecot-2.1: lib-index: Avoid assert-crashing on keyword-update ...
dovecot at dovecot.org
dovecot at dovecot.org
Wed Jan 4 17:26:45 EET 2012
details: http://hg.dovecot.org/dovecot-2.1/rev/931436c5f2cc
changeset: 13889:931436c5f2cc
user: Timo Sirainen <tss at iki.fi>
date: Wed Jan 04 17:26:25 2012 +0200
description:
lib-index: Avoid assert-crashing on keyword-update record with empty keyword.
diffstat:
src/lib-index/mail-index-sync-keywords.c | 7 ++-----
src/lib-index/mail-index-sync.c | 2 ++
src/lib-index/mail-transaction-log-view.c | 5 +++++
3 files changed, 9 insertions(+), 5 deletions(-)
diffs (51 lines):
diff -r 4f995c6e971b -r 931436c5f2cc src/lib-index/mail-index-sync-keywords.c
--- a/src/lib-index/mail-index-sync-keywords.c Wed Jan 04 16:46:12 2012 +0200
+++ b/src/lib-index/mail-index-sync-keywords.c Wed Jan 04 17:26:25 2012 +0200
@@ -261,6 +261,8 @@
unsigned int keyword_idx;
int ret;
+ i_assert(rec->name_size > 0);
+
seqset_offset = sizeof(*rec) + rec->name_size;
if ((seqset_offset % 4) != 0)
seqset_offset += 4 - (seqset_offset % 4);
@@ -270,11 +272,6 @@
end = CONST_PTR_OFFSET(rec, hdr->size);
keyword_name = t_strndup(rec + 1, rec->name_size);
- if (*keyword_name == '\0') {
- mail_index_sync_set_corrupted(ctx,
- "Trying to use empty keyword");
- return -1;
- }
if (!keyword_lookup(ctx, keyword_name, &keyword_idx))
keywords_header_add(ctx, keyword_name, &keyword_idx);
diff -r 4f995c6e971b -r 931436c5f2cc src/lib-index/mail-index-sync.c
--- a/src/lib-index/mail-index-sync.c Wed Jan 04 16:46:12 2012 +0200
+++ b/src/lib-index/mail-index-sync.c Wed Jan 04 17:26:25 2012 +0200
@@ -83,6 +83,8 @@
uint32_t uid;
size_t uidset_offset, i, size;
+ i_assert(u->name_size > 0);
+
uidset_offset = sizeof(*u) + u->name_size;
if ((uidset_offset % 4) != 0)
uidset_offset += 4 - (uidset_offset % 4);
diff -r 4f995c6e971b -r 931436c5f2cc src/lib-index/mail-transaction-log-view.c
--- a/src/lib-index/mail-transaction-log-view.c Wed Jan 04 16:46:12 2012 +0200
+++ b/src/lib-index/mail-transaction-log-view.c Wed Jan 04 17:26:25 2012 +0200
@@ -519,6 +519,11 @@
if ((seqset_offset % 4) != 0)
seqset_offset += 4 - (seqset_offset % 4);
+ if (rec->name_size == 0) {
+ mail_transaction_log_file_set_corrupted(file,
+ "Trying to use empty keyword");
+ return FALSE;
+ }
if (seqset_offset > rec_size) {
mail_transaction_log_file_set_corrupted(file,
"Invalid keyword update record size");
More information about the dovecot-cvs
mailing list