From 81bef5ace84ab11e91b4154b73045b1dd31f98f8 Mon Sep 17 00:00:00 2001 From: Mike Auty Date: Sun, 23 Sep 2018 18:13:58 +0100 Subject: [PATCH] Minor fixes to the requirement framework. --- volatility/framework/configuration/requirements.py | 5 ++--- volatility/framework/interfaces/configuration.py | 3 +++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/volatility/framework/configuration/requirements.py b/volatility/framework/configuration/requirements.py index 16cd9c581..4e6eb5439 100644 --- a/volatility/framework/configuration/requirements.py +++ b/volatility/framework/configuration/requirements.py @@ -156,7 +156,7 @@ class ComplexListRequirement(MultiRequirement, configuration.ConfigurableRequire @abc.abstractmethod def new_requirement(self, index) -> interfaces.configuration.RequirementInterface: - """Constructs a new requirement based on the specified index""" + """Builds a new requirement based on the specified index""" def build_configuration(self, context: interfaces.context.ContextInterface, @@ -256,8 +256,7 @@ class TranslationLayerRequirement(configuration.ConstructableRequirementInterfac self._validate_class(context, config_path) vollog.log(constants.LOGLEVEL_V, - "IndexError - No configuration provided: {}".format( - config_path + configuration.CONFIG_SEPARATOR + self.name)) + "IndexError - No configuration provided: {}".format(configuration.path_join(config_path, self.name))) return [configuration.path_join(config_path, self.name)] def construct(self, context: interfaces.context.ContextInterface, config_path: str) -> None: diff --git a/volatility/framework/interfaces/configuration.py b/volatility/framework/interfaces/configuration.py index bf26d9984..cf06b22c3 100644 --- a/volatility/framework/interfaces/configuration.py +++ b/volatility/framework/interfaces/configuration.py @@ -423,6 +423,9 @@ class ConstructableRequirementInterface(RequirementInterface): requirement_dict: typing.Dict[str, object] = None) \ -> typing.Optional['interfaces.objects.ObjectInterface']: """Constructs the class, handing args and the subrequirements as parameters to __init__""" + if self.requirements["class"].unsatisfied(context, config_path): + return None + if not isinstance(self.requirements["class"], ClassRequirement): return None cls = self.requirements["class"].cls