Apparently libarchive has a limitation of reading zip and 7z archive
contents if it does so by using "archive_read_open_fd".
It can be easily checked with:

bsdtar tvf <archive>
vs
cat <archive> | bsdtar tvf -

First works, second either fails with 'bsdtar: Error seeking in stdin'
(7z), or erroneously assumes that all files in the archive are empty
(zip).

Attached patch workarounds the problem by using
archive_read_open_filename instead, which solves the issue for me.

Reco
--- archivemount-0.8.7.orig/archivemount.c
+++ archivemount-0.8.7/archivemount.c
@@ -450,7 +450,7 @@ build_tree( const char *mtpt )
 			return archive_errno( archive );
 		}
 	}
-	if( archive_read_open_fd( archive, archiveFd, 10240 ) != ARCHIVE_OK ) {
+	if ( archive_read_open_filename( archive, archiveFile, 512) != ARCHIVE_OK ) {
 		fprintf( stderr, "%s\n", archive_error_string( archive ) );
 		return archive_errno( archive );
 	}

Reply via email to