summaryrefslogtreecommitdiffstats
path: root/usr.bin/tar
diff options
context:
space:
mode:
authorcperciva <cperciva@FreeBSD.org>2008-06-09 14:03:55 +0000
committercperciva <cperciva@FreeBSD.org>2008-06-09 14:03:55 +0000
commit02aa7dcfd94c8f1fe8486cf86260e55edf5a0d63 (patch)
treeafd5f990dbf4c29581a2edb834683e2e35d9fd5d /usr.bin/tar
parent926d12d0ea65c1b10638efb17de093ecc2fe4063 (diff)
downloadFreeBSD-src-02aa7dcfd94c8f1fe8486cf86260e55edf5a0d63.zip
FreeBSD-src-02aa7dcfd94c8f1fe8486cf86260e55edf5a0d63.tar.gz
Rework code to avoid using a pointer after freeing it. Aside from the
possibility of memory becoming undereferenceable when it is freed, this change should have no effect on bsdtar behaviour. Found by: Coverity Prevent
Diffstat (limited to 'usr.bin/tar')
-rw-r--r--usr.bin/tar/util.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/usr.bin/tar/util.c b/usr.bin/tar/util.c
index 4ddcb00..33281aa 100644
--- a/usr.bin/tar/util.c
+++ b/usr.bin/tar/util.c
@@ -369,9 +369,11 @@ edit_pathname(struct bsdtar *bsdtar, struct archive_entry *entry)
}
if (r == 1) {
archive_entry_copy_pathname(entry, subst_name);
- free(subst_name);
- if (*subst_name == '\0')
+ if (*subst_name == '\0') {
+ free(subst_name);
return -1;
+ } else
+ free(subst_name);
name = archive_entry_pathname(entry);
}
OpenPOWER on IntegriCloud