summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Matuska <martin@matuska.org>2018-11-24 01:26:32 +0100
committerMartin Matuska <martin@matuska.org>2018-11-24 01:26:32 +0100
commit966bfb3f3735daee4f5fc714689040bba0a98c82 (patch)
tree27c57799907c1baeb5f023a057e93c630e4ff8db
parentc114bb9fb585e7d74158afa7afbe8c44922479de (diff)
parentd71b157c2f048f6c88bf9474743faabdc56f6015 (diff)
downloadlibarchive-966bfb3f3735daee4f5fc714689040bba0a98c82.tar.gz
Merge pull request #1091 from praiskup/newc-use-after-free
-rw-r--r--tar/write.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/tar/write.c b/tar/write.c
index e15cc06c..c6e9fccc 100644
--- a/tar/write.c
+++ b/tar/write.c
@@ -540,8 +540,7 @@ write_archive(struct archive *a, struct bsdtar *bsdtar)
lafe_warnc(archive_errno(disk),
"%s", archive_error_string(disk));
bsdtar->return_value = 1;
- archive_entry_free(entry);
- continue;
+ goto next_entry;
}
/*
@@ -559,13 +558,13 @@ write_archive(struct archive *a, struct bsdtar *bsdtar)
bsdtar->return_value = 1;
else
archive_read_close(disk);
- archive_entry_free(entry);
- continue;
+ goto next_entry;
}
write_file(bsdtar, a, entry);
- archive_entry_free(entry);
archive_read_close(disk);
+next_entry:
+ archive_entry_free(entry);
entry = NULL;
archive_entry_linkify(bsdtar->resolver, &entry, &sparse_entry);
}