Skip to content

Commit 82e1813

Browse files
committed
Handle InvalidAddressException in volshell value display (thanks @atcuno!)
Details: Implements exception handling for InvalidAddressException in volshell. Ensures invalid pointers don't cause large stack traces, displaying "N/A" instead.
1 parent 9ffdf08 commit 82e1813

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

volatility3/cli/volshell/generic.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -502,6 +502,10 @@ def display_type(
502502
len_typename = len(member_type_name)
503503
if isinstance(volobject, interfaces.objects.ObjectInterface):
504504
# We're an instance, so also display the data
505+
try:
506+
value = self._display_value(getattr(volobject, member))
507+
except exceptions.InvalidAddressException:
508+
value = self._display_value(renderers.NotAvailableValue())
505509
print(
506510
" " * dereference_count,
507511
" " * (longest_offset - len_offset),
@@ -513,7 +517,7 @@ def display_type(
513517
member_type_name,
514518
" " * (longest_typename - len_typename),
515519
" ",
516-
self._display_value(getattr(volobject, member)),
520+
value,
517521
)
518522
else:
519523
# not provided with an actual object, nor an offset so just display the types
@@ -585,7 +589,9 @@ def _display_simple_type(
585589

586590
def _display_value(self, value: Any) -> str:
587591
try:
588-
if isinstance(value, objects.Pointer):
592+
if isinstance(value, interfaces.renderers.BaseAbsentValue):
593+
return "N/A"
594+
elif isinstance(value, objects.Pointer):
589595
# show pointers in hex to match output for struct addrs
590596
# highlight null or unreadable pointers
591597
if value == 0:

0 commit comments

Comments
 (0)