diff --git a/lib/dpkg/compress.c b/lib/dpkg/compress.c index 3822a5520390f6f097d00f60b4a851602c514cb2..e052d0bd86e2a5fc793390bfa252b5b83300b275 100644 --- a/lib/dpkg/compress.c +++ b/lib/dpkg/compress.c @@ -1028,6 +1028,12 @@ compressor_check_params(struct compress_params *params, struct dpkg_error *err) { compressor_fixup_params(params); + if (params->level > 9) { + dpkg_put_error(err, _("invalid compression level %d"), + params->level); + return false; + } + if (params->strategy == COMPRESSOR_STRATEGY_NONE) return true; diff --git a/src/deb/main.c b/src/deb/main.c index 80886f6511baf8405275f01fb1c77e494c5f8fe8..416eba30fc78b08eac99371b047b81b5de1e9dc8 100644 --- a/src/deb/main.c +++ b/src/deb/main.c @@ -187,13 +187,7 @@ parse_compress_level(const char *str) static void set_compress_level(const struct cmdinfo *cip, const char *value) { - long level; - - level = dpkg_options_parse_arg_int(cip, value); - if (level < 0 || level > 9) - badusage(_("invalid compression level for -%c: %ld"), cip->oshort, level); - - compress_params.level = level; + compress_params.level = dpkg_options_parse_arg_int(cip, value); } static void