copy_bytes() recover function

The version of copy_bytes() in util/recover.c had fallen behind
the internal version in files.c which had received some
analyzer changes in 4bc5e26082 from
December 2022.

This synchronizes them, and addresses a couple of other static
analysis recommendations.
This commit is contained in:
nhmall
2024-10-05 10:54:54 -04:00
parent 5af723669e
commit 6f8c36df70
2 changed files with 10 additions and 5 deletions
+2 -1
View File
@@ -4456,9 +4456,10 @@ boolean
copy_bytes(int ifd, int ofd) copy_bytes(int ifd, int ofd)
{ {
char buf[BUFSIZ]; char buf[BUFSIZ];
int nfrom, nto = 0; int nfrom, nto;
do { do {
nto = 0;
nfrom = read(ifd, buf, BUFSIZ); nfrom = read(ifd, buf, BUFSIZ);
/* read can return -1 */ /* read can return -1 */
if (nfrom >= 0 && nfrom <= BUFSIZ) if (nfrom >= 0 && nfrom <= BUFSIZ)
+8 -4
View File
@@ -201,9 +201,12 @@ copy_bytes(int ifd, int ofd)
int nfrom, nto; int nfrom, nto;
do { do {
nto = 0;
nfrom = read(ifd, buf, BUFSIZ); nfrom = read(ifd, buf, BUFSIZ);
nto = write(ofd, buf, nfrom); /* read can return -1 */
if (nto != nfrom) { if (nfrom >= 0 && nfrom <= BUFSIZ)
nto = write(ofd, buf, nfrom);
if (nto != nfrom || nfrom < 0) {
Fprintf(stderr, "file copy failed!\n"); Fprintf(stderr, "file copy failed!\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
@@ -333,6 +336,7 @@ restore_savefile(char *basename)
return -1; return -1;
} }
assert((size_t) pltmpsiz <= sizeof plbuf);
if (write(sfd, (genericptr_t) plbuf, pltmpsiz) != pltmpsiz) { if (write(sfd, (genericptr_t) plbuf, pltmpsiz) != pltmpsiz) {
Fprintf(stderr, "Error writing %s; recovery failed (player name).\n", Fprintf(stderr, "Error writing %s; recovery failed (player name).\n",
savename); savename);
@@ -404,8 +408,8 @@ store_formatindicator(int fd)
char indicate = 'h'; /* historical */ char indicate = 'h'; /* historical */
int cmc = 0; int cmc = 0;
write(fd, (genericptr_t) &indicate, sizeof indicate); (void) write(fd, (genericptr_t) &indicate, sizeof indicate);
write(fd, (genericptr_t) &cmc, sizeof cmc); (void) write(fd, (genericptr_t) &cmc, sizeof cmc);
} }