|
|
Message-ID: <20201012164342.2987876-1-jouni.roivas@tuxera.com>
Date: Mon, 12 Oct 2020 19:43:42 +0300
From: Jouni Roivas <jouni.roivas@...era.com>
To: <musl@...ts.openwall.com>, <dalias@...c.org>
Subject: [PATCH v2] avoid writing two iov in __stdio_write backend when not needed
formally, calling writev with a zero-length first iov component should
behave identically to calling write on just the second component, but
presence of a zero-length iov component has triggered bugs in some
kernels.
---
src/stdio/__stdio_write.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/stdio/__stdio_write.c b/src/stdio/__stdio_write.c
index d2d89475..eedce03a 100644
--- a/src/stdio/__stdio_write.c
+++ b/src/stdio/__stdio_write.c
@@ -11,6 +11,10 @@ size_t __stdio_write(FILE *f, const unsigned char *buf, size_t len)
size_t rem = iov[0].iov_len + iov[1].iov_len;
int iovcnt = 2;
ssize_t cnt;
+ if (iov[0].iov_len == 0) {
+ iov++;
+ iovcnt--;
+ }
for (;;) {
cnt = syscall(SYS_writev, f->fd, iov, iovcnt);
if (cnt == rem) {
--
2.25.1
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.