From: Wayne Davison Date: Sat, 16 Mar 2019 18:49:53 +0000 (-0700) Subject: Try to fix the iconv crash in bug 11338. X-Git-Tag: v3.2.0pre1~199 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c0c6a97c35e8e4fb56ba26dc9c8447e26d94de06;p=thirdparty%2Frsync.git 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. --- 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