From a5e5efe13a0e1ce9f9d8f6e3c4d4964dac52323b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Martin=20Matu=C5=A1ka?= Date: Fri, 5 Jul 2024 00:56:52 +0200 Subject: [PATCH] tar: free two temporary allocated strings after use (#2255) OSS-Fuzz issue: 70020 --- libarchive/archive_read_support_format_tar.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libarchive/archive_read_support_format_tar.c b/libarchive/archive_read_support_format_tar.c index 3b7bd8556..5a19872b2 100644 --- a/libarchive/archive_read_support_format_tar.c +++ b/libarchive/archive_read_support_format_tar.c @@ -1349,9 +1349,12 @@ header_common(struct archive_read *a, struct tar *tar, archive_strlen(&linkpath), tar->sconv) != 0) { err = set_conversion_failed_error(a, tar->sconv, "Linkname"); - if (err == ARCHIVE_FATAL) + if (err == ARCHIVE_FATAL) { + archive_string_free(&linkpath); return (err); + } } + archive_string_free(&linkpath); } /* * The following may seem odd, but: Technically, tar @@ -1422,9 +1425,12 @@ header_common(struct archive_read *a, struct tar *tar, archive_strlen(&linkpath), tar->sconv) != 0) { err = set_conversion_failed_error(a, tar->sconv, "Linkname"); - if (err == ARCHIVE_FATAL) + if (err == ARCHIVE_FATAL) { + archive_string_free(&linkpath); return (err); + } } + archive_string_free(&linkpath); } archive_entry_set_filetype(entry, AE_IFLNK); archive_entry_set_size(entry, 0); -- 2.47.2