From 53ca96fceedb5789ca6ed1e9a6fd69827a56dc65 Mon Sep 17 00:00:00 2001 From: Willi Ballenthin Date: Tue, 21 Mar 2023 17:37:27 +0100 Subject: [PATCH] result document: make all classes frozen and forbid extra attributes --- capa/render/result_document.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/capa/render/result_document.py b/capa/render/result_document.py index 71bdb6bd..7f994064 100644 --- a/capa/render/result_document.py +++ b/capa/render/result_document.py @@ -24,6 +24,7 @@ from capa.helpers import assert_never class FrozenModel(BaseModel): class Config: frozen = True + extra = "forbid" class Sample(FrozenModel): @@ -226,7 +227,7 @@ def node_from_capa(node: Union[capa.engine.Statement, capa.engine.Feature]) -> N assert_never(node) -class Match(BaseModel): +class Match(FrozenModel): """ args: success: did the node match? @@ -490,7 +491,7 @@ class RuleMetadata(FrozenModel): examples=rule.meta.get("examples", []), description=rule.meta.get("description", ""), lib=rule.meta.get("lib", False), - capa_subscope=rule.meta.get("capa/subscope", False), + is_subscope_rule=rule.meta.get("capa/subscope", False), maec=MaecMetadata( analysis_conclusion=rule.meta.get("maec/analysis-conclusion"), analysis_conclusion_ov=rule.meta.get("maec/analysis-conclusion-ov"), @@ -505,7 +506,7 @@ class RuleMetadata(FrozenModel): allow_population_by_field_name = True -class RuleMatches(BaseModel): +class RuleMatches(FrozenModel): """ args: meta: the metadata from the rule @@ -517,7 +518,7 @@ class RuleMatches(BaseModel): matches: Tuple[Tuple[frz.Address, Match], ...] -class ResultDocument(BaseModel): +class ResultDocument(FrozenModel): meta: Metadata rules: Dict[str, RuleMatches]