From c0c6a97c35e8e4fb56ba26dc9c8447e26d94de06 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Sat, 16 Mar 2019 11:49:53 -0700 Subject: [PATCH] Try to fix the iconv crash in bug 11338. Applying Michal Ruprich's suggested patch for the rwrite() function that should hopefully help with a bug that I couldn't reproduce. --- log.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/log.c b/log.c index 21bcdfd9..a86edd74 100644 --- a/log.c +++ b/log.c @@ -378,10 +378,13 @@ output_msg: filtered_fwrite(f, convbuf, outbuf.len, 0); outbuf.len = 0; } - if (!ierrno || ierrno == E2BIG) - continue; - fprintf(f, "\\#%03o", CVAL(inbuf.buf, inbuf.pos++)); - inbuf.len--; + /* Log one byte of illegal/incomplete sequence and continue with + * the next character. Check that the buffer is non-empty for the + * sake of robustness. */ + if ((ierrno == EILSEQ || ierrno == EINVAL) && inbuf.len) { + fprintf(f, "\\#%03o", CVAL(inbuf.buf, inbuf.pos++)); + inbuf.len--; + } } } else #endif -- 2.47.2