dovecot-2.2: fts-lucene: Don't allocate large amounts of memory ...

dovecot at dovecot.org dovecot at dovecot.org
Tue Apr 15 20:28:43 UTC 2014


details:   http://hg.dovecot.org/dovecot-2.2/rev/2ef62e1f44f2
changeset: 17218:2ef62e1f44f2
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Apr 15 22:28:26 2014 +0200
description:
fts-lucene: Don't allocate large amounts of memory from stack.
This probably only happened for huge header values.

diffstat:

 src/plugins/fts-lucene/lucene-wrapper.cc |  7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diffs (24 lines):

diff -r 0ec7e1e1db48 -r 2ef62e1f44f2 src/plugins/fts-lucene/lucene-wrapper.cc
--- a/src/plugins/fts-lucene/lucene-wrapper.cc	Tue Apr 15 18:24:31 2014 +0200
+++ b/src/plugins/fts-lucene/lucene-wrapper.cc	Tue Apr 15 22:28:26 2014 +0200
@@ -535,7 +535,11 @@
 	}
 
 	datasize = uni_utf8_strlen_n(data, size) + 1;
-	wchar_t dest[datasize];
+	wchar_t *dest, *dest_free = NULL;
+	if (datasize < 4096)
+		dest = (wchar_t *)t_malloc(datasize);
+	else
+		dest = dest_free = (wchar_t *)i_malloc(datasize);
 	lucene_utf8_n_to_tchar(data, size, dest, datasize);
 	lucene_data_translate(index, dest, datasize);
 
@@ -556,6 +560,7 @@
 			index->cur_analyzer = guess_analyzer(index, data, size);
 		index->doc->add(*_CLNEW Field(_T("body"), dest, Field::STORE_NO | Field::INDEX_TOKENIZED));
 	}
+	i_free(dest_free);
 	return 0;
 }
 


More information about the dovecot-cvs mailing list