From f6262ed778f6f42b5555bb6bb9d94fa1d75f5a57 Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Thu, 30 Apr 2020 11:09:09 +0200 Subject: [PATCH] main: fix copy loop fix potential infinite loop on a short read. Signed-off-by: Giuseppe Scrivano --- main.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/main.c b/main.c index c3b391d..b0cfdd6 100644 --- a/main.c +++ b/main.c @@ -2557,12 +2557,14 @@ copy_fd_to_fd (int sfd, int dfd, char *buf, size_t buf_size) break; written = 0; - { - ret = TEMP_FAILURE_RETRY (write (dfd, buf + written, nread)); - if (ret < 0) - return ret; - nread -= ret; - } + do + { + ret = TEMP_FAILURE_RETRY (write (dfd, buf + written, nread)); + if (ret < 0) + return ret; + nread -= ret; + written += ret; + } while (nread); } return 0;