Backport of upstream commit dc72e61 (bsc#1261003)
"mtree: fix file descriptor leak in cleanup"
Close any dangling mtree->fd during cleanup. Adapted to libarchive 3.6.2.

diff -ru a/libarchive/archive_read_support_format_mtree.c b/libarchive/archive_read_support_format_mtree.c
--- a/libarchive/archive_read_support_format_mtree.c
+++ b/libarchive/archive_read_support_format_mtree.c
@@ -300,7 +300,12 @@
 	struct mtree_entry *p, *q;
 
 	mtree = (struct mtree *)(a->format->data);
-
+	
+	/* Close any dangling file descriptor before freeing */
+    if (mtree->fd >= 0) {
+        close(mtree->fd);
+        mtree->fd = -1;
+    }
 	p = mtree->entries;
 	while (p != NULL) {
 		q = p->next;
