diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libarchive/archive_read_support_format_ar.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/libarchive/archive_read_support_format_ar.c b/lib/libarchive/archive_read_support_format_ar.c index 3bd13b1..0992b27 100644 --- a/lib/libarchive/archive_read_support_format_ar.c +++ b/lib/libarchive/archive_read_support_format_ar.c @@ -72,8 +72,6 @@ struct ar { #define AR_fmag_offset 58 #define AR_fmag_size 2 -#define isdigit(x) (x) >= '0' && (x) <= '9' - static int archive_read_format_ar_bid(struct archive_read *a); static int archive_read_format_ar_cleanup(struct archive_read *a); static int archive_read_format_ar_read_data(struct archive_read *a, @@ -309,8 +307,10 @@ archive_read_format_ar_read_header(struct archive_read *a, /* * GNU variant handles long filenames by storing /<number> * to indicate a name stored in the filename table. + * XXX TODO: Verify that it's all digits... Don't be fooled + * by "/9xyz" XXX */ - if (filename[0] == '/' && isdigit(filename[1])) { + if (filename[0] == '/' && filename[1] >= '0' && filename[1] <= '9') { number = ar_atol10(h + AR_name_offset + 1, AR_name_size - 1); /* * If we can't look up the real name, warn and return |