From 7de599403de2af9be38f8b50e0bccd32576c55a2 Mon Sep 17 00:00:00 2001 From: Alexander Popov Date: Sat, 9 Mar 2024 21:53:47 +0300 Subject: [PATCH] Implement the set_state() method of the check classes Refers to #88, #89, #97 --- kernel_hardening_checker/engine.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/kernel_hardening_checker/engine.py b/kernel_hardening_checker/engine.py index f52c446..8ba34ef 100644 --- a/kernel_hardening_checker/engine.py +++ b/kernel_hardening_checker/engine.py @@ -61,6 +61,12 @@ class OptCheck: def type(self): return None + def set_state(self, data): + if data: + assert(isinstance(data, str)), \ + f'invalid state "{data}" for "{self.name}" check' + self.state = data + def check(self): # handle the 'is present' check if self.expected == 'is present': @@ -130,7 +136,7 @@ class SysctlCheck(OptCheck): class VersionCheck: def __init__(self, ver_expected): assert(ver_expected and isinstance(ver_expected, tuple) and len(ver_expected) == 3), \ - f'invalid version "{ver_expected}" for VersionCheck' + f'invalid expected version "{ver_expected}" for VersionCheck' self.ver_expected = ver_expected self.ver = () self.result = None @@ -139,6 +145,11 @@ class VersionCheck: def type(self): return 'version' + def set_state(self, data): + assert(data and isinstance(data, tuple) and len(data) >= 3), \ + f'invalid version "{data}" for VersionCheck' + self.ver = data[:3] + def check(self): if self.ver[0] > self.ver_expected[0]: self.result = f'OK: version >= {self.ver_expected[0]}.{self.ver_expected[1]}' @@ -280,11 +291,11 @@ def populate_simple_opt_with_data(opt, data, data_type): return if data_type in ('kconfig', 'cmdline', 'sysctl'): - opt.state = data.get(opt.name, None) + opt.set_state(data.get(opt.name, None)) else: assert(data_type == 'version'), \ f'unexpected data type "{data_type}"' - opt.ver = data + opt.set_state(data) def populate_opt_with_data(opt, data, data_type): -- 2.31.1