Use regex lookaround in asm sanitize #62
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The regular expressions used in asm sanitize looked like this:
i.e. capturing the surrounding square brackets as part of the total match.
re.sub
will replace the entire match with a string or the return value of a function. We use the function, butmatch.group(0)
included more than just the hex value, so we used a hacky string replacement to get it working. The correct way is to use lookaround expressions to match with the surrounding characters but to not include them ingroup(0)
.I also removed an edge case that makes no sense. The expression that detects immediate value operands would allow a replacement of the first operand, which is the destination in intel syntax. But an immediate value can never be the destination. I think this was there to cover replacement for single operand instructions, but we already match the ones we want earlier in the function:
call
,push
, and jumps.