diff options
Diffstat (limited to 'camel/camel-mime-filter-charset.c')
-rw-r--r-- | camel/camel-mime-filter-charset.c | 6 |
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); } |