From 105ee08d918be92e5abf551d4cbe820010e45982 Mon Sep 17 00:00:00 2001 From: Mike Auty Date: Sun, 28 Dec 2025 14:09:51 +0000 Subject: [PATCH 1/2] Avoid trying to lookup child nodes that have been filtered Fixes issue1309. --- volatility3/cli/text_renderer.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/volatility3/cli/text_renderer.py b/volatility3/cli/text_renderer.py index d55201371..d400067af 100644 --- a/volatility3/cli/text_renderer.py +++ b/volatility3/cli/text_renderer.py @@ -10,8 +10,8 @@ import string import sys from functools import wraps from typing import Any, Callable, Dict, List, Optional, Set, Tuple, TypeVar, Union -from volatility3.cli import text_filter +from volatility3.cli import text_filter from volatility3.framework import exceptions, interfaces, renderers from volatility3.framework.renderers import format_hints @@ -464,9 +464,9 @@ class PrettyTextRenderer(CLIRenderer): accumulator.append((node.path_depth, line)) return accumulator - final_output: List[Tuple[int, Dict[interfaces.renderers.Column, list[str]]]] = ( - [] - ) + final_output: List[ + Tuple[int, Dict[interfaces.renderers.Column, list[str]]] + ] = [] if not grid.populated: grid.populate(visitor, final_output) else: @@ -598,7 +598,8 @@ class JsonRenderer(CLIRenderer): if self.filter and self.filter.filter(line): return accumulator - if node.parent: + # Only add if the parent hasn't been filtered out + if node.parent and node.parent.path in acc_map: acc_map[node.parent.path]["__children"].append(node_dict) else: final_tree.append(node_dict) From 0089aefaf6a4b72729ff79ddaf2d0390ba24ddb7 Mon Sep 17 00:00:00 2001 From: Mike Auty Date: Sun, 28 Dec 2025 14:13:44 +0000 Subject: [PATCH 2/2] Reformat because ruff and black disagree --- volatility3/cli/text_renderer.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/volatility3/cli/text_renderer.py b/volatility3/cli/text_renderer.py index d400067af..d00c00bf4 100644 --- a/volatility3/cli/text_renderer.py +++ b/volatility3/cli/text_renderer.py @@ -464,9 +464,9 @@ class PrettyTextRenderer(CLIRenderer): accumulator.append((node.path_depth, line)) return accumulator - final_output: List[ - Tuple[int, Dict[interfaces.renderers.Column, list[str]]] - ] = [] + final_output: List[Tuple[int, Dict[interfaces.renderers.Column, list[str]]]] = ( + [] + ) if not grid.populated: grid.populate(visitor, final_output) else: