aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDag-Erling Smørgrav <des@FreeBSD.org>2026-05-22 17:57:12 +0000
committerDag-Erling Smørgrav <des@FreeBSD.org>2026-05-22 17:57:12 +0000
commit29351335704e39ce3ca09c528d534c7898bbdc2c (patch)
treeeba4f75dbd9de51e1ad2658f401e8dccb3d660a1
parenta4b17594181502cea38ab0d8b2a9a10782286334 (diff)
tftp: Close files when we're done with them
Also, delete the file we created if receiving it failed. MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D57071
-rw-r--r--usr.bin/tftp/main.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/usr.bin/tftp/main.c b/usr.bin/tftp/main.c
index 9b7ea7155d82..a26561eaa982 100644
--- a/usr.bin/tftp/main.c
+++ b/usr.bin/tftp/main.c
@@ -584,8 +584,11 @@ get(int argc, char *argv[])
if (verbose)
printf("getting from %s:%s to %s [%s]\n",
hostname, src, cp, mode);
- if (recvfile(peer, port, fd, src, mode) != 0)
+ if (recvfile(peer, port, fd, src, mode) != 0) {
+ (void) unlink(cp);
txrx_error = 1;
+ }
+ close(fd);
break;
}
cp = tail(src); /* new .. jdg */
@@ -597,8 +600,11 @@ get(int argc, char *argv[])
if (verbose)
printf("getting from %s:%s to %s [%s]\n",
hostname, src, cp, mode);
- if (recvfile(peer, port, fd, src, mode) != 0)
+ if (recvfile(peer, port, fd, src, mode) != 0) {
+ (void) unlink(cp);
txrx_error = 1;
+ }
+ close(fd);
}
}