svn commit: r357538 - head/contrib/elftoolchain/elfcopy
Mark Johnston
markj at FreeBSD.org
Tue Feb 4 21:16:57 UTC 2020
Author: markj
Date: Tue Feb 4 21:16:56 2020
New Revision: 357538
URL: https://svnweb.freebsd.org/changeset/base/357538
Log:
elfcopy: Avoid leaking dst's fd when we fail to copy a file.
We should really create the output file in the same directory as the
destination file so that rename() works. This will be done in a future
change as part of some work to run in capability mode.
CID: 1262523
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Modified:
head/contrib/elftoolchain/elfcopy/main.c
Modified: head/contrib/elftoolchain/elfcopy/main.c
==============================================================================
--- head/contrib/elftoolchain/elfcopy/main.c Tue Feb 4 21:16:41 2020 (r357537)
+++ head/contrib/elftoolchain/elfcopy/main.c Tue Feb 4 21:16:56 2020 (r357538)
@@ -587,15 +587,19 @@ copy_from_tempfile(const char *src, const char *dst, i
if ((tmpfd = open(dst, O_CREAT | O_TRUNC | O_WRONLY, 0755)) < 0)
return (-1);
- if (elftc_copyfile(infd, tmpfd) < 0)
+ if (elftc_copyfile(infd, tmpfd) < 0) {
+ (void) close(tmpfd);
return (-1);
+ }
/*
* Remove the temporary file from the file system
* namespace, and close its file descriptor.
*/
- if (unlink(src) < 0)
+ if (unlink(src) < 0) {
+ (void) close(tmpfd);
return (-1);
+ }
(void) close(infd);
More information about the svn-src-all
mailing list