From fe6d57554bfda140d51a490da63f1764b04cd1db Mon Sep 17 00:00:00 2001 From: eve Date: Fri, 28 Mar 2025 14:51:31 +0000 Subject: [PATCH] update _display_value to handle None case --- volatility3/cli/volshell/generic.py | 49 +++++++++++++++++++---------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/volatility3/cli/volshell/generic.py b/volatility3/cli/volshell/generic.py index adb307c62..688a513e5 100644 --- a/volatility3/cli/volshell/generic.py +++ b/volatility3/cli/volshell/generic.py @@ -587,26 +587,43 @@ class Volshell(interfaces.plugins.PluginInterface): def _display_value(self, value: Any) -> str: try: + # if value is a BaseAbsentValue they display N/A if isinstance(value, interfaces.renderers.BaseAbsentValue): return "N/A" - elif isinstance(value, objects.Pointer): - # show pointers in hex to match output for struct addrs - # highlight null or unreadable pointers - if value == 0: - suffix = " (null pointer)" - elif not value.is_readable(): - suffix = " (unreadable pointer)" - else: - suffix = "" - return f"{hex(value)}{suffix}" - elif isinstance(value, objects.PrimitiveObject): - return repr(value) - elif isinstance(value, objects.Array): - return repr([self._display_value(val) for val in value]) else: - return hex(value.vol.offset) + # volobject branch + if isinstance( + value, + Union[ + interfaces.objects.ObjectInterface, interfaces.objects.Template + ], + ): + if isinstance(value, objects.Pointer): + # show pointers in hex to match output for struct addrs + # highlight null or unreadable pointers + if value == 0: + suffix = " (null pointer)" + elif not value.is_readable(): + suffix = " (unreadable pointer)" + else: + suffix = "" + return f"{hex(value)}{suffix}" + elif isinstance(value, objects.PrimitiveObject): + return repr(value) + elif isinstance(value, objects.Array): + return repr([self._display_value(val) for val in value]) + else: + return hex(value.vol.offset) + else: + # non volobject + if value is None: + return "N/A" + else: + return value + except exceptions.InvalidAddressException: - return "-" + # if value causes an InvalidAddressException like BaseAbsentValue then display N/A + return "N/A" def generate_treegrid( self, plugin: Type[interfaces.plugins.PluginInterface], **kwargs