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

Reply via email to