summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorkientzle <kientzle@FreeBSD.org>2009-02-01 02:33:02 +0000
committerkientzle <kientzle@FreeBSD.org>2009-02-01 02:33:02 +0000
commit8211ee605742c9618dc15aec0951e7b5121c8466 (patch)
tree3e37dbbe929d5a2437a6b3550205a192f2a85098 /lib
parent41ccd088c601ccdc3af29608e22e81b78a708b95 (diff)
downloadFreeBSD-src-8211ee605742c9618dc15aec0951e7b5121c8466.zip
FreeBSD-src-8211ee605742c9618dc15aec0951e7b5121c8466.tar.gz
Permit ` as a pad character in the filename table.
This seems to fix the devel/zziplib port, which distributes its man pages in an ar archive.
Diffstat (limited to 'lib')
-rw-r--r--lib/libarchive/archive_read_support_format_ar.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/lib/libarchive/archive_read_support_format_ar.c b/lib/libarchive/archive_read_support_format_ar.c
index fed979d..0201364 100644
--- a/lib/libarchive/archive_read_support_format_ar.c
+++ b/lib/libarchive/archive_read_support_format_ar.c
@@ -511,11 +511,10 @@ ar_parse_gnu_filename_table(struct archive_read *a)
}
}
/*
- * Sanity check, last two chars must be `/\n' or '\n\n',
- * depending on whether the string table is padded by a '\n'
- * (string table produced by GNU ar always has a even size).
+ * GNU ar always pads the table to an even size.
+ * The pad character is either '\n' or '`'.
*/
- if (p != ar->strtab + size && *p != '\n')
+ if (p != ar->strtab + size && *p != '\n' && *p != '`')
goto bad_string_table;
/* Enforce zero termination. */
OpenPOWER on IntegriCloud