mirror of
https://github.com/volatilityfoundation/volatility3.git
synced 2026-09-09 19:27:39 +02:00
Merge pull request #1749 from eve-mem/volshell_fix_1714
Volshell: handle case where paged out member would cause backtrace for dt output.
This commit is contained in:
@@ -446,8 +446,14 @@ class Volshell(interfaces.plugins.PluginInterface):
|
||||
len_offset = len(hex(relative_offset))
|
||||
len_member = len(member)
|
||||
len_typename = len(member_type.vol.type_name)
|
||||
|
||||
if isinstance(volobject, interfaces.objects.ObjectInterface):
|
||||
# We're an instance, so also display the data
|
||||
try:
|
||||
value = self._display_value(volobject.member(member))
|
||||
except exceptions.InvalidAddressException:
|
||||
value = self._display_value(renderers.NotAvailableValue())
|
||||
|
||||
print(
|
||||
" " * (longest_offset - len_offset),
|
||||
hex(relative_offset),
|
||||
@@ -458,7 +464,7 @@ class Volshell(interfaces.plugins.PluginInterface):
|
||||
member_type.vol.type_name,
|
||||
" " * (longest_typename - len_typename),
|
||||
" ",
|
||||
self._display_value(getattr(volobject, member)),
|
||||
value,
|
||||
)
|
||||
else:
|
||||
print(
|
||||
@@ -473,7 +479,9 @@ class Volshell(interfaces.plugins.PluginInterface):
|
||||
|
||||
@classmethod
|
||||
def _display_value(cls, value: Any) -> str:
|
||||
if isinstance(value, objects.PrimitiveObject):
|
||||
if isinstance(value, interfaces.renderers.BaseAbsentValue):
|
||||
return "N/A"
|
||||
elif isinstance(value, objects.PrimitiveObject):
|
||||
return repr(value)
|
||||
elif isinstance(value, objects.Array):
|
||||
return repr([cls._display_value(val) for val in value])
|
||||
|
||||
Reference in New Issue
Block a user