Skip to content

Commit 742b063

Browse files
committed
readjust _run to contain less code & removal of redundant code
1 parent eba4e4b commit 742b063

File tree

1 file changed

+15
-28
lines changed

1 file changed

+15
-28
lines changed

volatility3/framework/plugins/regexscan.py

Lines changed: 15 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,21 @@ def get_requirements(cls) -> List[interfaces.configuration.RequirementInterface]
4646
),
4747
]
4848

49-
def _generator(self, compiled_pattern, raw_pattern, maxsize):
50-
vollog.debug(f"RegEx Pattern: {raw_pattern}")
51-
layer = self.context.layers[self.config["primary"]]
49+
def _generator(self, layer, pattern, maxsize):
50+
vollog.debug(f"RegEx Pattern: {pattern}")
51+
52+
# Convert string pattern to bytes for RegExScanner
53+
pattern_bytes = pattern.encode("utf-8")
54+
55+
# Compile the pattern here to ensure consistency
56+
try:
57+
compiled_pattern = re.compile(pattern_bytes)
58+
except re.error as e:
59+
vollog.error(f"Invalid regex pattern: {e}")
60+
raise ValueError(f"Invalid regex pattern: {e}")
5261

5362
for offset in layer.scan(
54-
context=self.context, scanner=scanners.RegExScanner(raw_pattern)
63+
context=self.context, scanner=scanners.RegExScanner(pattern_bytes)
5564
):
5665
result_data = layer.read(offset, maxsize, pad=True)
5766

@@ -73,36 +82,14 @@ def _generator(self, compiled_pattern, raw_pattern, maxsize):
7382

7483
def run(self):
7584
pattern = self.config.get("pattern")
76-
77-
# Handle pattern encoding robustly
78-
if isinstance(pattern, str):
79-
try:
80-
raw_pattern = pattern.encode("utf-8")
81-
except UnicodeEncodeError:
82-
raw_pattern = pattern.encode("latin1", errors="replace")
83-
else:
84-
raw_pattern = pattern
85-
86-
try:
87-
compiled_pattern = re.compile(raw_pattern)
88-
except re.error as e:
89-
vollog.error(f"Invalid regex pattern: {e}")
90-
return renderers.TreeGrid(
91-
[
92-
("Offset", format_hints.Hex),
93-
("Text", str),
94-
("Hex", bytes),
95-
],
96-
[],
97-
)
98-
9985
maxsize = self.config.get("maxsize", self.MAXSIZE_DEFAULT)
86+
layer = self.context.layers[self.config["primary"]]
10087

10188
return renderers.TreeGrid(
10289
[
10390
("Offset", format_hints.Hex),
10491
("Text", str),
10592
("Hex", bytes),
10693
],
107-
self._generator(compiled_pattern, raw_pattern, maxsize),
94+
self._generator(layer, pattern, maxsize),
10895
)

0 commit comments

Comments
 (0)