From 2bc28c74b640ea8b0d252a766371a15ed40314a3 Mon Sep 17 00:00:00 2001 From: Tim Kientzle Date: Fri, 12 Jul 2013 09:12:34 -0700 Subject: [PATCH] http://code.google.com/p/libarchive/issues/detail?id=325 Simplify the method/level checks here and fix a bug. --- libarchive/archive_read_support_filter_lzop.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libarchive/archive_read_support_filter_lzop.c b/libarchive/archive_read_support_filter_lzop.c index 713af31e9..f8d04bd0e 100644 --- a/libarchive/archive_read_support_filter_lzop.c +++ b/libarchive/archive_read_support_filter_lzop.c @@ -242,10 +242,11 @@ consume_header(struct archive_read_filter *self) if (version >= 0x940) { unsigned level = *p++; - if (method == 1 && level == 0) level = 3; - if (method == 2 && level == 0) level = 1; - if (method == 3 && level == 0) level = 9; - if (level < 1 && level > 9) { + unsigned default_level[] = {0, 3, 1, 9}; + if (level == 0) + /* Method is 1..3 here due to check above. */ + level = default_level[method]; + else if (level > 9) { archive_set_error(&self->archive->archive, ARCHIVE_ERRNO_MISC, "Invalid level"); return (ARCHIVE_FAILED); -- 2.47.2