aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-mime-filter-charset.c
diff options
context:
space:
mode:
Diffstat (limited to 'camel/camel-mime-filter-charset.c')
-rw-r--r--camel/camel-mime-filter-charset.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/camel/camel-mime-filter-charset.c b/camel/camel-mime-filter-charset.c
index d3a02ffd15..f30047c96a 100644
--- a/camel/camel-mime-filter-charset.c
+++ b/camel/camel-mime-filter-charset.c
@@ -179,6 +179,12 @@ filter(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, s
bytes for a multibyte sequence, if not, we're in trouble.
*/
+ /* This is to fix a bug in at least 1 version of glibc iconv: we get EINVAL and
+ it reads past the input and returns a converted length of -1 ... so discard
+ any overruns as failed */
+ if (((int)inlen) < 0)
+ inlen = 0;
+
if (inlen>0) {
camel_mime_filter_backup(mf, inbuf, inlen);
}