Skip to content

Commit 0a760a2

Browse files
committed
No need to check ret for QL_INTERCEPT.ENTER and close #808 and #807
1 parent 839af93 commit 0a760a2

File tree

1 file changed

+28
-30
lines changed

1 file changed

+28
-30
lines changed

qiling/os/posix/posix.py

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -245,49 +245,47 @@ def load_syscall(self):
245245
self.utils.syscalls_counter += 1
246246

247247
try:
248-
ret = 0
249248

250249
if onenter_hook is not None:
251-
ret = onenter_hook(self.ql, *self.get_syscall_args())
250+
onenter_hook(self.ql, *self.get_syscall_args())
252251

253-
if type(ret) is not int or (ret & QL_CALL_BLOCK) == 0:
254-
syscall_basename = syscall_hook.__name__[len(SYSCALL_PREF):]
255-
args = []
252+
syscall_basename = syscall_hook.__name__[len(SYSCALL_PREF):]
253+
args = []
256254

257-
# ignore first arg, which is 'ql'
258-
arg_names = tuple(signature(syscall_hook).parameters.values())[1:]
259-
arg_values = self.get_syscall_args()
255+
# ignore first arg, which is 'ql'
256+
arg_names = tuple(signature(syscall_hook).parameters.values())[1:]
257+
arg_values = self.get_syscall_args()
260258

261-
for name, value in zip(arg_names, arg_values):
262-
name = str(name)
259+
for name, value in zip(arg_names, arg_values):
260+
name = str(name)
263261

264-
# ignore python special args
265-
if name in ('*args', '**kw', '**kwargs'):
266-
continue
262+
# ignore python special args
263+
if name in ('*args', '**kw', '**kwargs'):
264+
continue
267265

268-
# cut the first part of the arg if it is of form fstatat64_fd
269-
if name.startswith(f'{syscall_basename}_'):
270-
name = name.partition('_')[-1]
266+
# cut the first part of the arg if it is of form fstatat64_fd
267+
if name.startswith(f'{syscall_basename}_'):
268+
name = name.partition('_')[-1]
271269

272-
args.append(f'{name} = {value:#x}')
270+
args.append(f'{name} = {value:#x}')
273271

274-
faddr = f'{self.ql.reg.arch_pc:#0{self.ql.archbit // 4 + 2}x}: ' if self.ql.verbose >= QL_VERBOSE.DEBUG else ''
275-
fargs = ', '.join(args)
272+
faddr = f'{self.ql.reg.arch_pc:#0{self.ql.archbit // 4 + 2}x}: ' if self.ql.verbose >= QL_VERBOSE.DEBUG else ''
273+
fargs = ', '.join(args)
276274

277-
log = f'{faddr}{syscall_basename}({fargs})'
275+
log = f'{faddr}{syscall_basename}({fargs})'
278276

279-
if self.ql.verbose >= QL_VERBOSE.DEBUG:
280-
self.ql.log.debug(log)
281-
else:
282-
self.ql.log.info(log)
277+
if self.ql.verbose >= QL_VERBOSE.DEBUG:
278+
self.ql.log.debug(log)
279+
else:
280+
self.ql.log.info(log)
283281

284-
ret = syscall_hook(self.ql, *arg_values)
282+
ret = syscall_hook(self.ql, *arg_values)
285283

286-
if ret is not None and type(ret) is int:
287-
# each name has a list of calls, we want the last one and we want to update the return value
288-
self.utils.syscalls[syscall_name][-1]["result"] = ret
289-
ret = self.set_syscall_return(ret)
290-
self.ql.log.debug(f'{syscall_basename}() = {QlOsPosix.getNameFromErrorCode(ret)}')
284+
if ret is not None and type(ret) is int:
285+
# each name has a list of calls, we want the last one and we want to update the return value
286+
self.utils.syscalls[syscall_name][-1]["result"] = ret
287+
ret = self.set_syscall_return(ret)
288+
self.ql.log.debug(f'{syscall_basename}() = {QlOsPosix.getNameFromErrorCode(ret)}')
291289

292290
if onexit_hook is not None:
293291
onexit_hook(self.ql, *self.get_syscall_args())

0 commit comments

Comments
 (0)