56 # no successors
57 self.gentryPoints.append(node)
58
59 def getPredecessors(self, address, max_ins_size=X86_MAX_INST_LEN): 60 predecessors = []
61 for predecessor_address in self.graph.predecessors(address):
62 for pred in self.md.disasm(
77 self.by_bytes[gadget_bytes] = gadget
78 self.gadgets.append(gadget)
79
80 def defaultCallback(self, gadget, context): 81 # print(str(gadget.max_cost))
82 if gadget.cost() > gadget.max_cost:
83 return False
380 def getChainCondition(self):
381 return set(self.gadgetMatrix.chainCond.nonzero()[1])
382
383 def getReturnCondition(self, to):384 # TODO: use self.gadgetMatrix
385 return None
386
373 def getLength(self):
374 return len(self.instList)
375
376 def getRegisterAccess(self, frm=None, to=None, rflags=False):377 # TODO: use self.gadgetMatrix
378 return None
379
373 def getLength(self):
374 return len(self.instList)
375
376 def getRegisterAccess(self, frm=None, to=None, rflags=False):377 # TODO: use self.gadgetMatrix
378 return None
379
An unused argument can lead to confusions. It should be removed. If this variable is necessary, name the variable _
or start the name with unused
or _unused
.
def square(x, y=1):
return x * x
class MySubClass(MyClass):
def __init__(self, number):
self.value = 42 # argument `number` remains unused
def square(x):
return x * x
class MySubClass(MyClass):
def __init__(self, _):
self.value = 42