def get_safe_functions(self): # for now we consider functions called by printf or malloc to be safe ident_safe = cfg_utils._get_funcs_called_by_printf( self.patcher.project, self.patcher.cfg, self.patcher.identifier) ident_safe |= cfg_utils._get_funcs_called_by_malloc( self.patcher.project, self.patcher.cfg, self.patcher.identifier) return ident_safe
def get_safe_functions(self): ident = self.patcher.identifier # for now we consider functions called by printf or malloc to be safe ident_safe = cfg_utils._get_funcs_called_by_printf( self.patcher.project, self.patcher.cfg, self.patcher.identifier) ident_safe |= cfg_utils._get_funcs_called_by_malloc( self.patcher.project, self.patcher.cfg, self.patcher.identifier) safe_func_addrs = set() unsafe_func_addrs = set() for f in self.patcher.cfg.functions.values(): if f.addr in ident_safe or self._func_is_safe(ident, f): l.debug("%#x is safe", f.addr) safe_func_addrs.add(f.addr) else: l.debug("%#x is unsafe", f.addr) unsafe_func_addrs.add(f.addr) return safe_func_addrs