39 lines
1.1 KiB
Diff
39 lines
1.1 KiB
Diff
From c0c6a97c35e8e4fb56ba26dc9c8447e26d94de06 Mon Sep 17 00:00:00 2001
|
|
From: Wayne Davison <wayned@samba.org>
|
|
Date: Sat, 16 Mar 2019 11:49:53 -0700
|
|
Subject: [PATCH 36/36] 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.
|
|
|
|
Signed-off-by: root <root@localhost.localdomain>
|
|
---
|
|
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.19.1
|
|
|