commit: adedae3b3673d3797ba2ba381acf04c24c38b309
Author: Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 25 10:01:03 2020 +0000
Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Sat Jan 25 10:01:03 2020 +0000
URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=adedae3b
qpkg: try 2 at Coverity 206549 Time of check time of use
Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>
qpkg.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/qpkg.c b/qpkg.c
index 6aa5f76..3602acf 100644
--- a/qpkg.c
+++ b/qpkg.c
@@ -257,9 +257,16 @@ qpkg_make(depend_atom *atom)
}
pclose(fp);
+ if ((i = open(tbz2, O_WRONLY)) < 0) {
+ warnp("failed to open '%s': %s", tbz2, strerror(errno));
+ free(buf);
+ return 1;
+ }
+
/* get offset where xpak will start */
- if (stat(tbz2, &st) == -1) {
+ if (fstat(i, &st) == -1) {
warnp("could not stat '%s': %s", tbz2, strerror(errno));
+ close(i);
free(buf);
return 1;
}
@@ -271,12 +278,6 @@ qpkg_make(depend_atom *atom)
xpak_argv[1] = NULL;
xpak_create(AT_FDCWD, tbz2, 1, xpak_argv, 1, verbose);
- if ((i = open(tbz2, O_WRONLY | O_APPEND)) < 0) {
- warnp("failed to open '%s': %s", tbz2, strerror(errno));
- free(buf);
- return 1;
- }
-
/* calculate the number of bytes taken by the xpak archive */
if (fstat(i, &st) == -1) {
warnp("could not stat '%s': %s", tbz2, strerror(errno));