main: fix copy loop

fix potential infinite loop on a short read.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
Giuseppe Scrivano 2020-04-30 11:09:09 +02:00
parent 9b687001bb
commit f6262ed778
No known key found for this signature in database
GPG Key ID: E4730F97F60286ED

14
main.c
View File

@ -2557,12 +2557,14 @@ copy_fd_to_fd (int sfd, int dfd, char *buf, size_t buf_size)
break; break;
written = 0; written = 0;
{ do
ret = TEMP_FAILURE_RETRY (write (dfd, buf + written, nread)); {
if (ret < 0) ret = TEMP_FAILURE_RETRY (write (dfd, buf + written, nread));
return ret; if (ret < 0)
nread -= ret; return ret;
} nread -= ret;
written += ret;
}
while (nread); while (nread);
} }
return 0; return 0;