On Sat, 2009-03-21 at 18:58 -0400, David Halik wrote: > Mar 21 18:43:57 er0.rutgers.edu IMAP(dhalik): : [ID 107833 mail.crit] > Panic: Trying to allocate 2147483648 bytes
Attached patch probably helps?
diff -r 1adea68d749b src/lib-charset/charset-iconv.c --- a/src/lib-charset/charset-iconv.c Mon Mar 23 17:40:32 2009 -0400 +++ b/src/lib-charset/charset-iconv.c Tue Mar 24 12:41:11 2009 -0400 @@ -130,10 +130,11 @@ const unsigned char *src, size_t *src_size, buffer_t *dest) { enum charset_result result; - size_t pos, used, size; + size_t pos, used, size, prev_used; bool ret; for (pos = 0;;) { + prev_used = dest->used; size = *src_size - pos; ret = charset_to_utf8_try(t, src + pos, &size, dest, &result); pos += size; @@ -146,6 +147,13 @@ /* force buffer to grow */ used = dest->used; size = buffer_get_size(dest) - used + 1; + if (used == prev_used && size > 1024) { + /* workaround for a buggy Solaris iconv: it's going to + keep returning E2BIG. Skip over a character and + hope that all goes well. */ + *src_size = pos + 1; + return CHARSET_RET_INVALID_INPUT; + } (void)buffer_append_space_unsafe(dest, size); buffer_set_used_size(dest, used); }
signature.asc
Description: This is a digitally signed message part