diff options
Diffstat (limited to 'toolchain/musl/patches/066-fix-swprintf-internal-buffer-state-and-error-handling.patch')
-rw-r--r-- | toolchain/musl/patches/066-fix-swprintf-internal-buffer-state-and-error-handling.patch | 36 |
1 files changed, 0 insertions, 36 deletions
diff --git a/toolchain/musl/patches/066-fix-swprintf-internal-buffer-state-and-error-handling.patch b/toolchain/musl/patches/066-fix-swprintf-internal-buffer-state-and-error-handling.patch deleted file mode 100644 index a6e7c7f5b0..0000000000 --- a/toolchain/musl/patches/066-fix-swprintf-internal-buffer-state-and-error-handling.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 7442442ccc665641a8827177e8e7ed45bbbd6584 Mon Sep 17 00:00:00 2001 -From: Rich Felker <dalias@aerifal.cx> -Date: Mon, 7 Nov 2016 20:39:59 -0500 -Subject: fix swprintf internal buffer state and error handling - -the swprintf write callback never reset its buffer pointers, so after -its 256-byte buffer filled up, it would keep repeating those bytes -over and over in the output until the destination buffer filled up. it -also failed to set the error indicator for the stream on EILSEQ, -potentially allowing output to continue after the error. ---- - src/stdio/vswprintf.c | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/src/stdio/vswprintf.c b/src/stdio/vswprintf.c -index 7d237ba..6eb2f6a 100644 ---- a/src/stdio/vswprintf.c -+++ b/src/stdio/vswprintf.c -@@ -24,7 +24,14 @@ static size_t sw_write(FILE *f, const unsigned char *s, size_t l) - c->ws++; - } - *c->ws = 0; -- return i<0 ? i : l0; -+ if (i < 0) { -+ f->wpos = f->wbase = f->wend = 0; -+ f->flags |= F_ERR; -+ return i; -+ } -+ f->wend = f->buf + f->buf_size; -+ f->wpos = f->wbase = f->buf; -+ return l0; - } - - int vswprintf(wchar_t *restrict s, size_t n, const wchar_t *restrict fmt, va_list ap) --- -cgit v0.11.2 |