@@ -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