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;
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;