]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Free `temp` immediately after use in archive_write_gnutar_header(..)
authorNgie Cooper <yanegomi@gmail.com>
Tue, 13 Dec 2016 07:33:22 +0000 (23:33 -0800)
committerNgie Cooper <yaneurabeya@gmail.com>
Tue, 17 Jan 2017 02:17:53 +0000 (18:17 -0800)
This prevents it from being leaked if the function returns early

Reported by: Coverity
CID: 1016752

libarchive/archive_write_set_format_gnutar.c

index 76b4e73ea81b2e75a95da4551743cb43520171db..2d858c9f752cc269462036b86ea8e6cc5299fcd8 100644 (file)
@@ -478,12 +478,12 @@ archive_write_gnutar_header(struct archive_write *a,
                archive_entry_set_pathname(temp, "././@LongLink");
                archive_entry_set_size(temp, length);
                ret = archive_format_gnutar_header(a, buff, temp, 'K');
+               archive_entry_free(temp);
                if (ret < ARCHIVE_WARN)
                        goto exit_write_header;
                ret = __archive_write_output(a, buff, 512);
                if (ret < ARCHIVE_WARN)
                        goto exit_write_header;
-               archive_entry_free(temp);
                /* Write name and trailing null byte. */
                ret = __archive_write_output(a, gnutar->linkname, length);
                if (ret < ARCHIVE_WARN)
@@ -508,12 +508,12 @@ archive_write_gnutar_header(struct archive_write *a,
                archive_entry_set_pathname(temp, "././@LongLink");
                archive_entry_set_size(temp, length);
                ret = archive_format_gnutar_header(a, buff, temp, 'L');
+               archive_entry_free(temp);
                if (ret < ARCHIVE_WARN)
                        goto exit_write_header;
                ret = __archive_write_output(a, buff, 512);
                if(ret < ARCHIVE_WARN)
                        goto exit_write_header;
-               archive_entry_free(temp);
                /* Write pathname + trailing null byte. */
                ret = __archive_write_output(a, pathname, length);
                if(ret < ARCHIVE_WARN)