diff options
Diffstat (limited to 'libarchive/archive_write_set_format_mtree.c')
-rw-r--r-- | libarchive/archive_write_set_format_mtree.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libarchive/archive_write_set_format_mtree.c b/libarchive/archive_write_set_format_mtree.c index c2ecc424675b..02fbb2d2f555 100644 --- a/libarchive/archive_write_set_format_mtree.c +++ b/libarchive/archive_write_set_format_mtree.c @@ -2209,9 +2209,13 @@ mtree_entry_tree_add(struct archive_write *a, struct mtree_entry **filep) * inserted. */ mtree->cur_dirent = dent; archive_string_empty(&(mtree->cur_dirstr)); - archive_string_ensure(&(mtree->cur_dirstr), + if (archive_string_ensure(&(mtree->cur_dirstr), archive_strlen(&(dent->parentdir)) + - archive_strlen(&(dent->basename)) + 2); + archive_strlen(&(dent->basename)) + 2) == NULL) { + archive_set_error(&a->archive, ENOMEM, + "Can't allocate memory"); + return (ARCHIVE_FATAL); + } if (archive_strlen(&(dent->parentdir)) + archive_strlen(&(dent->basename)) == 0) mtree->cur_dirstr.s[0] = 0; |