diff options
| author | Tim Blazytko <tim.blazytko@rub.de> | 2016-01-08 14:38:21 +0100 |
|---|---|---|
| committer | Tim Blazytko <tim.blazytko@rub.de> | 2016-01-08 14:38:21 +0100 |
| commit | 5a39b6a42b291052913717fb11b6796898f81475 (patch) | |
| tree | 1ad8f5af66aa0e095e67bb26ef13d71185c96667 | |
| parent | 5d2fef790bf92555e58f2725967b05de9f6627ca (diff) | |
| download | miasm-5a39b6a42b291052913717fb11b6796898f81475.tar.gz miasm-5a39b6a42b291052913717fb11b6796898f81475.zip | |
smt2_translator: fixed bug in ExprId to escape expression names
| -rw-r--r-- | miasm2/ir/translators/smt2.py | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/miasm2/ir/translators/smt2.py b/miasm2/ir/translators/smt2.py index 7cb60310..96f8dab3 100644 --- a/miasm2/ir/translators/smt2.py +++ b/miasm2/ir/translators/smt2.py @@ -134,9 +134,15 @@ class TranslatorSMT2(Translator): return bit_vec_val(expr.arg.arg, expr.size) def from_ExprId(self, expr): - if isinstance(expr.name, asm_label) and expr.name.offset is not None: - return bit_vec_val(str(expr.name.offset), expr.size) - + if isinstance(expr.name, asm_label): + if expr.name.offset is not None: + return bit_vec_val(str(expr.name.offset), expr.size) + else: + # SMT2-escape expression name + name = "|{}|".format(str(expr.name)) + if name not in self._bitvectors: + self._bitvectors[name] = expr.size + return name else: if str(expr) not in self._bitvectors: self._bitvectors[str(expr)] = expr.size |