diff options
author | cperciva <cperciva@FreeBSD.org> | 2008-06-09 14:03:55 +0000 |
---|---|---|
committer | cperciva <cperciva@FreeBSD.org> | 2008-06-09 14:03:55 +0000 |
commit | 02aa7dcfd94c8f1fe8486cf86260e55edf5a0d63 (patch) | |
tree | afd5f990dbf4c29581a2edb834683e2e35d9fd5d /usr.bin | |
parent | 926d12d0ea65c1b10638efb17de093ecc2fe4063 (diff) | |
download | FreeBSD-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')
-rw-r--r-- | usr.bin/tar/util.c | 6 |
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); } |