about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2018-09-11 08:33:18 +0200
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2018-09-20 07:44:31 +0200
commit846d316efab8b8b654eee58b952cdf1ba2d3eb42 (patch)
tree217e8f5b825ad11c224d016a6d54b9224337b5f6
parent2f9139cbc737978d7308496bb8249a99431320e7 (diff)
downloadmiasm-846d316efab8b8b654eee58b952cdf1ba2d3eb42.tar.gz
miasm-846d316efab8b8b654eee58b952cdf1ba2d3eb42.zip
Code cleaning: lgtm.com
-rw-r--r--example/disasm/full.py2
-rw-r--r--example/ida/ctype_propagation.py4
-rw-r--r--example/jitter/run_with_linuxenv.py1
-rw-r--r--miasm2/analysis/cst_propag.py5
-rw-r--r--miasm2/analysis/data_flow.py2
-rw-r--r--miasm2/analysis/depgraph.py7
-rw-r--r--miasm2/analysis/expression_range.py1
-rw-r--r--miasm2/analysis/ssa.py2
-rw-r--r--miasm2/arch/aarch64/arch.py2
-rw-r--r--miasm2/arch/arm/sem.py13
-rw-r--r--miasm2/arch/ppc/arch.py2
-rw-r--r--miasm2/arch/ppc/sem.py6
-rw-r--r--miasm2/arch/x86/arch.py7
-rw-r--r--miasm2/arch/x86/sem.py8
-rw-r--r--miasm2/core/asmblock.py1
-rw-r--r--miasm2/core/cpu.py2
-rw-r--r--miasm2/core/ctypesmngr.py3
-rw-r--r--miasm2/core/types.py3
-rw-r--r--miasm2/expression/expression.py1
-rw-r--r--miasm2/jitter/codegen.py2
-rw-r--r--miasm2/jitter/llvmconvert.py3
-rw-r--r--miasm2/jitter/loader/elf.py1
-rw-r--r--miasm2/jitter/loader/pe.py1
-rw-r--r--miasm2/os_dep/linux/syscall.py1
-rw-r--r--miasm2/os_dep/win_api_x86_32.py4
25 files changed, 33 insertions, 51 deletions
diff --git a/example/disasm/full.py b/example/disasm/full.py
index ac8bf522..03094a55 100644
--- a/example/disasm/full.py
+++ b/example/disasm/full.py
@@ -10,7 +10,7 @@ from miasm2.analysis.data_flow import dead_simp, DiGraphDefUse, \
     ReachingDefinitions, merge_blocks, remove_empty_assignblks, \
     PropagateExpr, replace_stack_vars, load_from_int
 from miasm2.expression.simplifications import expr_simp
-from miasm2.analysis.ssa import SSAPath, SSADiGraph, remove_phi
+from miasm2.analysis.ssa import SSADiGraph, remove_phi
 from miasm2.ir.ir import AssignBlock, IRBlock
 
 log = logging.getLogger("dis")
diff --git a/example/ida/ctype_propagation.py b/example/ida/ctype_propagation.py
index 3c8a745a..a3d6df8b 100644
--- a/example/ida/ctype_propagation.py
+++ b/example/ida/ctype_propagation.py
@@ -337,7 +337,7 @@ def analyse_function():
         if lbl not in ircfg.blocks:
             continue
         symbexec_engine = TypePropagationEngine(ir_arch, types_mngr, state)
-        addr = symbexec_engine.run_block_at(ircfg, lbl)
+        symbexec_engine.run_block_at(ircfg, lbl)
         symbexec_engine.del_mem_above_stack(ir_arch.sp)
 
         sons = ircfg.successors(lbl)
@@ -351,7 +351,7 @@ def analyse_function():
         if lbl not in ircfg.blocks:
             continue
         symbexec_engine = CTypeEngineFixer(ir_arch, types_mngr, state, cst_propag_link)
-        addr = symbexec_engine.run_block_at(ircfg, lbl)
+        symbexec_engine.run_block_at(ircfg, lbl)
         symbexec_engine.del_mem_above_stack(ir_arch.sp)
 
 
diff --git a/example/jitter/run_with_linuxenv.py b/example/jitter/run_with_linuxenv.py
index 933459f4..c9abe699 100644
--- a/example/jitter/run_with_linuxenv.py
+++ b/example/jitter/run_with_linuxenv.py
@@ -1,6 +1,5 @@
 from argparse import ArgumentParser
 import logging
-import os
 import re
 
 from elfesteem import elf as elf_csts
diff --git a/miasm2/analysis/cst_propag.py b/miasm2/analysis/cst_propag.py
index 7f74324f..48d588c8 100644
--- a/miasm2/analysis/cst_propag.py
+++ b/miasm2/analysis/cst_propag.py
@@ -52,9 +52,8 @@ def is_expr_cst(ir_arch, expr):
         if element.is_int():
             continue
         return False
-    else:
-        # Expr is a constant
-        return True
+    # Expr is a constant
+    return True
 
 
 class SymbExecStateFix(SymbolicExecutionEngine):
diff --git a/miasm2/analysis/data_flow.py b/miasm2/analysis/data_flow.py
index f3881df9..83dae92d 100644
--- a/miasm2/analysis/data_flow.py
+++ b/miasm2/analysis/data_flow.py
@@ -957,7 +957,7 @@ def read_mem(bs, expr):
     var_bytes = bs.getbytes(ptr, expr.size / 8)[::-1]
     try:
         value = int(var_bytes.encode('hex'), 16)
-    except:
+    except ValueError:
         return expr
     return ExprInt(value, expr.size)
 
diff --git a/miasm2/analysis/depgraph.py b/miasm2/analysis/depgraph.py
index 46a83d2d..0d4a3719 100644
--- a/miasm2/analysis/depgraph.py
+++ b/miasm2/analysis/depgraph.py
@@ -50,6 +50,9 @@ class DependencyNode(object):
                 self.element == depnode.element and
                 self.line_nb == depnode.line_nb)
 
+    def __ne__(self, other):
+        return not self.__eq__(other)
+
     def __cmp__(self, node):
         """Compares @self with @node."""
         if not isinstance(node, self.__class__):
@@ -195,8 +198,9 @@ class DependencyResult(DependencyState):
     """Container and methods for DependencyGraph results"""
 
     def __init__(self, ircfg, initial_state, state, inputs):
+
+        super(DependencyResult, self).__init__(state.loc_key, state.pending)
         self.initial_state = initial_state
-        self.loc_key = state.loc_key
         self.history = state.history
         self.pending = state.pending
         self.line_nb = state.line_nb
@@ -205,7 +209,6 @@ class DependencyResult(DependencyState):
         self._ircfg = ircfg
 
         # Init lazy elements
-        self._graph = None
         self._has_loop = None
 
     @property
diff --git a/miasm2/analysis/expression_range.py b/miasm2/analysis/expression_range.py
index a2c4a8df..f09a18d0 100644
--- a/miasm2/analysis/expression_range.py
+++ b/miasm2/analysis/expression_range.py
@@ -8,7 +8,6 @@ _op_range_handler = {
     "|": lambda x, y: x | y,
     "^": lambda x, y: x ^ y,
     "*": lambda x, y: x * y,
-    ">>": lambda x, y: x >> y,
     "a>>": lambda x, y: x.arithmetic_shift_right(y),
     "<<": lambda x, y: x << y,
     ">>": lambda x, y: x >> y,
diff --git a/miasm2/analysis/ssa.py b/miasm2/analysis/ssa.py
index a8a50351..61aa987f 100644
--- a/miasm2/analysis/ssa.py
+++ b/miasm2/analysis/ssa.py
@@ -509,7 +509,7 @@ class SSADiGraph(SSA):
                 self._rename_phi_rhs(successor)
 
             # Save current SSA variable stack for successors in the dominator tree
-            for successor in dominator_tree.successors_iter(loc_key):
+            for _ in dominator_tree.successors_iter(loc_key):
                 stack.append(self._stack_rhs)
 
     def _rename_phi_lhs(self, loc_key):
diff --git a/miasm2/arch/aarch64/arch.py b/miasm2/arch/aarch64/arch.py
index 15a7bd77..598aca83 100644
--- a/miasm2/arch/aarch64/arch.py
+++ b/miasm2/arch/aarch64/arch.py
@@ -357,7 +357,7 @@ class instruction_aarch64(instruction):
             raise NotImplementedError("bad op")
 
     def dstflow(self):
-        return self.name in self.name in BRCOND + ["B", "BL", "BR", "BLR"]
+        return self.name in BRCOND + ["B", "BL", "BR", "BLR"]
 
     def mnemo_flow_to_dst_index(self, name):
         if self.name in ['CBZ', 'CBNZ']:
diff --git a/miasm2/arch/arm/sem.py b/miasm2/arch/arm/sem.py
index 7dca6242..0f4e368a 100644
--- a/miasm2/arch/arm/sem.py
+++ b/miasm2/arch/arm/sem.py
@@ -283,7 +283,8 @@ def rsb(ir, instr, a, b, c=None):
     e = []
     if c is None:
         b, c = a, b
-    r = c - b
+    arg1, arg2 = c, b
+    r = arg1 - arg2
     e.append(ExprAff(a, r))
     dst = get_dst(a)
     if dst is not None:
@@ -297,10 +298,8 @@ def rsbs(ir, instr, a, b, c=None):
         b, c = a, b
     arg1, arg2 = c, b
     r = arg1 - arg2
-
     e += update_flag_arith_sub_zn(arg1, arg2)
     e += update_flag_arith_sub_co(arg1, arg2)
-
     e.append(ExprAff(a, r))
     dst = get_dst(a)
     if dst is not None:
@@ -398,11 +397,8 @@ def l_cmp(ir, instr, a, b, c=None):
     if c is None:
         b, c = a, b
     arg1, arg2 = b, c
-    r = b - c
-
     e += update_flag_arith_sub_zn(arg1, arg2)
     e += update_flag_arith_sub_co(arg1, arg2)
-
     return e, []
 
 
@@ -411,11 +407,8 @@ def cmn(ir, instr, a, b, c=None):
     if c is None:
         b, c = a, b
     arg1, arg2 = b, c
-    r = b + c
-
     e += update_flag_arith_add_zn(arg1, arg2)
     e += update_flag_arith_add_co(arg1, arg2)
-
     return e, []
 
 
@@ -448,7 +441,7 @@ def orrs(ir, instr, a, b, c=None):
     if c is None:
         b, c = a, b
     arg1, arg2 = b, c
-    r = b | c
+    r = arg1 | arg2
 
     e += [ExprAff(zf, ExprOp('FLAG_EQ', r))]
     e += update_flag_nf(r)
diff --git a/miasm2/arch/ppc/arch.py b/miasm2/arch/ppc/arch.py
index c100cde3..f198312e 100644
--- a/miasm2/arch/ppc/arch.py
+++ b/miasm2/arch/ppc/arch.py
@@ -313,7 +313,7 @@ class ppc_gpreg_or_0(ppc_reg):
     parser = reg_info.parser
 
     def decode(self, v):
-        ret = super(ppc_reg, self).decode(v)
+        ret = super(ppc_gpreg_or_0, self).decode(v)
         if ret == False:
             return False
         reg = self.expr
diff --git a/miasm2/arch/ppc/sem.py b/miasm2/arch/ppc/sem.py
index 3c885d12..82a662c2 100644
--- a/miasm2/arch/ppc/sem.py
+++ b/miasm2/arch/ppc/sem.py
@@ -135,7 +135,7 @@ def mn_do_cr(ir, instr, crd, cra, crb):
     elif op == 'XOR':
         r = a ^ b
     else:
-        raise "Unknown operation on CR"
+        raise RuntimeError("Unknown operation on CR")
     return [ ExprAff(d, r) ], []
 
 def mn_do_div(ir, instr, rd, ra, rb):
@@ -294,10 +294,10 @@ def mn_do_lswi(ir, instr, rd, ra, nb):
     if nb == 0:
         nb = 32
     i = 32
-    raise "%r not implemented" % instr
+    raise RuntimeError("%r not implemented" % instr)
 
 def mn_do_lswx(ir, instr, rd, ra, nb):
-    raise "%r not implemented" % instr
+    raise RuntimeError("%r not implemented" % instr)
 
 def mn_do_mcrf(ir, instr, crfd, crfs):
     ret = []
diff --git a/miasm2/arch/x86/arch.py b/miasm2/arch/x86/arch.py
index 3e41d46e..2abd5bbc 100644
--- a/miasm2/arch/x86/arch.py
+++ b/miasm2/arch/x86/arch.py
@@ -939,7 +939,6 @@ class bs_modname_size(bs_divert):
                     osize = v_opmode_info(size, opmode, 1, 0)
                     nfields[i] = f
                     nfields = nfields[:-1]
-                    args = dict(self.args)
                     ndct = dict(dct)
                     if osize in self.args['name']:
                         ndct['name'] = self.args['name'][osize]
@@ -951,7 +950,6 @@ class bs_modname_size(bs_divert):
                     f = bs("0", l=0, cls=(bs_fbit,), fname="rex_w")
                     osize = v_opmode_info(size, opmode, 0, 0)
                     nfields[i] = f
-                    args = dict(self.args)
                     ndct = dict(dct)
                     if osize in self.args['name']:
                         ndct['name'] = self.args['name'][osize]
@@ -960,7 +958,6 @@ class bs_modname_size(bs_divert):
                 l = opmode_prefix((dct['mode'], dct['opmode'], dct['admode']))
                 osize = v_opmode_info(size, opmode, None, 0)
                 nfields = fields[:-1]
-                args = dict(self.args)
                 ndct = dict(dct)
                 if osize in self.args['name']:
                     ndct['name'] = self.args['name'][osize]
@@ -2897,9 +2894,7 @@ class bs_rel_off(bs_cond_imm):
         if not isinstance(self.expr, ExprInt):
             raise StopIteration
         arg0_expr = self.parent.args[0].expr
-        if self.l != 0:
-            l = self.l
-        else:
+        if self.l == 0:
             l = self.parent.v_opmode()
             self.l = l
         l = offsize(self.parent)
diff --git a/miasm2/arch/x86/sem.py b/miasm2/arch/x86/sem.py
index f07e2285..816608cb 100644
--- a/miasm2/arch/x86/sem.py
+++ b/miasm2/arch/x86/sem.py
@@ -1441,7 +1441,6 @@ def ret(ir, instr, src=None):
     myesp = mRSP[instr.mode][:size]
 
     if src is None:
-        src = m2_expr.ExprInt(0, size)
         value = (myesp + (m2_expr.ExprInt((size / 8), size)))
     else:
         src = m2_expr.ExprInt(int(src), size)
@@ -1490,7 +1489,6 @@ def retf(ir, instr, src=None):
 
 
 def leave(ir, instr):
-    opmode, admode = instr.v_opmode(), instr.v_admode()
     size = instr.mode
     myesp = mRSP[size]
     e = []
@@ -4427,7 +4425,6 @@ def pslldq(_, instr, dst, src):
 
 def psrldq(_, instr, dst, src):
     assert src.is_int()
-    e = []
     count = int(src)
     if count > 15:
         return [m2_expr.ExprAff(dst, m2_expr.ExprInt(0, dst.size))], []
@@ -4924,7 +4921,6 @@ def maskmovq(ir, instr, src, mask):
     # Build write blocks
     dst_addr = mRDI[instr.mode]
     for i, start in enumerate(xrange(0, mask.size, 8)):
-        bit = mask[start + 7: start + 8]
         cur_label = write_labels[i]
         next_check_label = check_labels[i + 1] if (i + 1) < len(check_labels) else loc_next_expr
         write_addr = dst_addr + m2_expr.ExprInt(i, dst_addr.size)
@@ -5664,13 +5660,9 @@ class ir_x86_16(IntermediateRepresentation):
             return instr_ir, extra_ir
 
         instr.additional_info.except_on_instr = True
-        # get instruction size
-        s = {"B": 8, "W": 16, "D": 32, 'Q': 64}[instr.name[-1]]
-        size = instr.v_opmode()
         admode = instr.v_admode()
         c_reg = mRCX[instr.mode][:admode]
 
-        out_ir = []
         zf_val = None
         # set if zf is tested (cmps, scas)
         for e in instr_ir:  # +[updt_c]:
diff --git a/miasm2/core/asmblock.py b/miasm2/core/asmblock.py
index 2f336617..97113be1 100644
--- a/miasm2/core/asmblock.py
+++ b/miasm2/core/asmblock.py
@@ -169,7 +169,6 @@ class AsmBlock(object):
     def split(self, loc_db, offset):
         loc_key = loc_db.get_or_create_offset_location(offset)
         log_asmblock.debug('split at %x', offset)
-        i = -1
         offsets = [x.offset for x in self.lines]
         offset = loc_db.get_location_offset(loc_key)
         if offset not in offsets:
diff --git a/miasm2/core/cpu.py b/miasm2/core/cpu.py
index 071991b7..813ac47d 100644
--- a/miasm2/core/cpu.py
+++ b/miasm2/core/cpu.py
@@ -684,7 +684,7 @@ class m_arg(object):
         self.expr = expr
         return start, stop
 
-    def asm_ast_to_expr(self, arg, loc_db):
+    def asm_ast_to_expr(self, arg, loc_db, **kwargs):
         raise NotImplementedError("Virtual")
 
 
diff --git a/miasm2/core/ctypesmngr.py b/miasm2/core/ctypesmngr.py
index ef14451f..5daf8950 100644
--- a/miasm2/core/ctypesmngr.py
+++ b/miasm2/core/ctypesmngr.py
@@ -36,6 +36,9 @@ class CTypeBase(object):
     def _typerepr(self):
         return self.__repr
 
+    def __eq__(self, other):
+        raise NotImplementedError("Abstract method")
+
     def __ne__(self, other):
         return not self.__eq__(other)
 
diff --git a/miasm2/core/types.py b/miasm2/core/types.py
index e6ba1ccf..a60077ac 100644
--- a/miasm2/core/types.py
+++ b/miasm2/core/types.py
@@ -340,6 +340,9 @@ class Type(object):
     def __neq__(self, other):
         return not self == other
 
+    def __eq__(self, other):
+        raise NotImplementedError("Abstract method")
+
     def __ne__(self, other):
         return not self.__eq__(other)
 
diff --git a/miasm2/expression/expression.py b/miasm2/expression/expression.py
index c4b3cca1..d617a8fa 100644
--- a/miasm2/expression/expression.py
+++ b/miasm2/expression/expression.py
@@ -1943,7 +1943,6 @@ def expr_is_IEEE754_zero(expr):
     """Return 1 or 0 on 1 bit if expr represent a zero value according to
     IEEE754
     """
-    info = size_to_IEEE754_info[expr.size]
     # Sign is the msb
     expr_no_sign = expr[:expr.size - 1]
     return ExprCond(expr_no_sign, ExprInt(0, 1), ExprInt(1, 1))
diff --git a/miasm2/jitter/codegen.py b/miasm2/jitter/codegen.py
index ff6c1485..e1185944 100644
--- a/miasm2/jitter/codegen.py
+++ b/miasm2/jitter/codegen.py
@@ -6,7 +6,7 @@ from miasm2.expression.expression import Expr, ExprId, ExprLoc, ExprInt, \
     ExprMem, ExprCond, LocKey
 from miasm2.ir.ir import IRBlock, AssignBlock
 
-from miasm2.ir.translators.C import TranslatorC, int_size_to_bn
+from miasm2.ir.translators.C import TranslatorC
 from miasm2.core.asmblock import AsmBlockBad
 from miasm2.expression.simplifications import expr_simp_high_to_explicit
 
diff --git a/miasm2/jitter/llvmconvert.py b/miasm2/jitter/llvmconvert.py
index 1c2b453b..3ef45e60 100644
--- a/miasm2/jitter/llvmconvert.py
+++ b/miasm2/jitter/llvmconvert.py
@@ -398,7 +398,7 @@ class LLVMContext_JIT(LLVMContext):
             builder.store(value, ret)
             value_ptr = builder.bitcast(ret, llvm_ir.IntType(8).as_pointer())
 
-            ret = builder.call(
+            builder.call(
                 fc_ptr,
                 [
                     func.local_vars["jitcpu"],
@@ -581,7 +581,6 @@ class LLVMFunction():
         ptr = builder.gep(self.local_vars["vmcpu"],
                           [llvm_ir.Constant(LLVMType.IntType(),
                                             offset)])
-        regs = self.llvm_context.ir_arch.arch.regs
         pointee_type = LLVMType.IntType(expr.size)
         ptr_casted = builder.bitcast(ptr,
                                      llvm_ir.PointerType(pointee_type))
diff --git a/miasm2/jitter/loader/elf.py b/miasm2/jitter/loader/elf.py
index af078ab5..d1df8c3f 100644
--- a/miasm2/jitter/loader/elf.py
+++ b/miasm2/jitter/loader/elf.py
@@ -166,7 +166,6 @@ def apply_reloc_x86(elf, vm, section, base_addr, loc_db):
     for reloc in section.reltab:
 
         # Parse relocation info
-        r_addend = reloc.addend if hasattr(reloc, "addend") else 0
         r_info = reloc.info
         if elf.size == 64:
             r_info_sym = (r_info >> 32) & 0xFFFFFFFF
diff --git a/miasm2/jitter/loader/pe.py b/miasm2/jitter/loader/pe.py
index 9bc0ef8b..e4cd57ee 100644
--- a/miasm2/jitter/loader/pe.py
+++ b/miasm2/jitter/loader/pe.py
@@ -404,7 +404,6 @@ class libimp_pe(libimp):
                         # Ensure function entry is created
                         _ = self.lib_get_add_func(new_lib_base, exp_fname)
 
-                    c_name = canon_libname_libfunc(exp_dname, exp_fname)
                     libad_tmp = self.name2off[exp_dname]
                     ad = self.lib_imp2ad[libad_tmp][exp_fname]
 
diff --git a/miasm2/os_dep/linux/syscall.py b/miasm2/os_dep/linux/syscall.py
index 87839dc4..5bf7d64c 100644
--- a/miasm2/os_dep/linux/syscall.py
+++ b/miasm2/os_dep/linux/syscall.py
@@ -1,7 +1,6 @@
 import fcntl
 import functools
 import logging
-import os
 import struct
 import termios
 
diff --git a/miasm2/os_dep/win_api_x86_32.py b/miasm2/os_dep/win_api_x86_32.py
index 19f8c994..db6cfa19 100644
--- a/miasm2/os_dep/win_api_x86_32.py
+++ b/miasm2/os_dep/win_api_x86_32.py
@@ -1530,6 +1530,8 @@ def my_GetVolumeInformation(jitter, funcname, get_str, set_str):
                                              "nfilesystemnamesize"])
     if args.lprootpathname:
         s = get_str(args.lprootpathname)
+        log.info('GetVolumeInformation %r', s)
+
 
     if args.lpvolumenamebuffer:
         s = "volumename"
@@ -2066,7 +2068,7 @@ def msvcrt_swprintf(jitter):
 def msvcrt_fprintf(jitter):
     ret_addr, args = jitter.func_args_cdecl(['file', 'fmt'])
     cur_arg, fmt = 2, args.fmt
-    output = get_fmt_args(jitter, fmt, cur_arg)
+    output = get_fmt_args(jitter, fmt, cur_arg, jitter.get_str_ansi)
     ret = len(output)
     log.info("fprintf(%x, '%s') = '%s'" % (args.file, jitter.get_str_ansi(args.fmt), output))