1 From b46d78b815ffc146efeed74656b592a9f0e90f36 Mon Sep 17 00:00:00 2001 2 From: =?UTF-8?q?Marek=20Beh=C3=BAn?= <kabel@kernel.org> 3 Date: Sun, 18 Sep 2022 13:42:55 +0200 4 Subject: [PATCH 2/2] BinpkgVerifier: check for existence of "size" key after 5 applying hash filter 6 MIME-Version: 1.0 7 Content-Type: text/plain; charset=UTF-8 8 Content-Transfer-Encoding: 8bit 9 10 Currently we check for "size" key in the digests dict before we call 11 _apply_hash_filter(), resulting in the "size" key being lost, which then 12 causes: 13 14 File "/usr/lib/python3.10/site-packages/_emerge/BinpkgVerifier.py", line 54, in _start 15 if size != digests["size"]: 16 KeyError: 'size' 17 18 This can be reproduced by for example setting 19 PORTAGE_CHECKSUM_FILTER="-* sha512" 20 in make.conf and then trying to fetch a binkpkg. 21 22 Signed-off-by: Marek BehĂșn <kabel@kernel.org> 23 --- 24 25 Also why the hell does _apply_hash_filter() always discard "size" key??? 26 27 --- 28 lib/_emerge/BinpkgVerifier.py | 10 +++++----- 29 1 file changed, 5 insertions(+), 5 deletions(-) 30 31 diff --git a/lib/_emerge/BinpkgVerifier.py b/lib/_emerge/BinpkgVerifier.py 32 index 6d8efb9c4..69a3cfb4b 100644 33 --- a/lib/_emerge/BinpkgVerifier.py 34 +++ b/lib/_emerge/BinpkgVerifier.py 35 @@ -25,16 +25,16 @@ class BinpkgVerifier(CompositeTask): 36 37 bintree = self.pkg.root_config.trees["bintree"] 38 digests = bintree._get_digests(self.pkg) 39 - if "size" not in digests: 40 - self.returncode = os.EX_OK 41 - self._async_wait() 42 - return 43 - 44 digests = _filter_unaccelarated_hashes(digests) 45 hash_filter = _hash_filter(bintree.settings.get("PORTAGE_CHECKSUM_FILTER", "")) 46 if not hash_filter.transparent: 47 digests = _apply_hash_filter(digests, hash_filter) 48 49 + if "size" not in digests: 50 + self.returncode = os.EX_OK 51 + self._async_wait() 52 + return 53 + 54 self._digests = digests 55 56 try: 57 -- 58 2.35.1 59