From: Alexander Popov Date: Wed, 20 Apr 2022 16:25:16 +0000 (+0300) Subject: Fix the bug in the verdict description for ComplexOptCheck X-Git-Tag: v0.5.17~9 X-Git-Url: https://jxself.org/git/?a=commitdiff_plain;h=228f9e2b51f645266a70d86b215e9899f3bdeb9b;p=kconfig-hardened-check.git Fix the bug in the verdict description for ComplexOptCheck Before the fix: CONFIG_EFI_DISABLE_PCI_DMA | kconfig | y | clipos | self_protection | OK: not found After the fix: CONFIG_EFI_DISABLE_PCI_DMA | kconfig | y | clipos | self_protection | OK: CONFIG_EFI not found Also added the assertions preventing similar bugs in future. --- diff --git a/kconfig_hardened_check/__init__.py b/kconfig_hardened_check/__init__.py index 04121d4..a999c97 100644 --- a/kconfig_hardened_check/__init__.py +++ b/kconfig_hardened_check/__init__.py @@ -235,11 +235,18 @@ class OR(ComplexOptCheck): for i, opt in enumerate(self.opts): opt.check() if opt.result.startswith('OK'): - if opt.result == 'OK' and i != 0: - # Simple OK is not enough for additional checks, add more info: - self.result = 'OK: {} "{}"'.format(opt.name, opt.expected) - else: - self.result = opt.result + self.result = opt.result + # Add more info for additional checks: + if i != 0: + if opt.result == 'OK': + self.result = 'OK: {} "{}"'.format(opt.name, opt.expected) + elif opt.result == 'OK: not found': + self.result = 'OK: {} not found'.format(opt.name) + elif opt.result == 'OK: is present': + self.result = 'OK: {} is present'.format(opt.name) + # VersionCheck provides enough info + elif not opt.result.startswith('OK: version'): + sys.exit('[!] ERROR: unexpected OK description "{}"'.format(opt.result)) return self.result = self.opts[0].result @@ -265,8 +272,10 @@ class AND(ComplexOptCheck): elif opt.result == 'FAIL: not present': self.result = 'FAIL: {} not present'.format(opt.name) else: - # This FAIL message is self-explaining. + # VersionCheck provides enough info self.result = opt.result + if not opt.result.startswith('FAIL: version'): + sys.exit('[!] ERROR: unexpected FAIL description "{}"'.format(opt.result)) return sys.exit('[!] ERROR: invalid AND check')