Skip to content

Commit 424f96a

Browse files
committed
cptbox/isolate: use array accessors for uargs
1 parent 4b246bd commit 424f96a

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

dmoj/cptbox/isolate.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ def _compile_fs_jail(self, fs) -> FilesystemPolicy:
213213

214214
def _dirfd_getter_from_reg(self, reg: int) -> DirFDGetter:
215215
def getter(debugger: Debugger) -> int:
216-
return getattr(debugger, 'uarg%d' % reg)
216+
return debugger.uarg[reg]
217217

218218
return getter
219219

@@ -222,7 +222,7 @@ def _dirfd_getter_cwd(self, debugger: Debugger) -> int:
222222

223223
def _fs_jail_getter_from_open_flags_reg(self, reg: int) -> FSJailGetter:
224224
def getter(debugger: Debugger) -> FilesystemPolicy:
225-
open_flags = getattr(debugger, 'uarg%d' % reg)
225+
open_flags = debugger.uarg[reg]
226226
for flag in open_write_flags:
227227
# Strict equality is necessary here, since e.g. O_TMPFILE has multiple bits set,
228228
# and O_DIRECTORY & O_TMPFILE > 0.
@@ -282,7 +282,7 @@ def check(debugger: Debugger) -> None:
282282
# We already allowed this one way or another, don't check again.
283283
return
284284

285-
dirfd = getattr(debugger, 'uarg%d' % dir_reg)
285+
dirfd = debugger.uarg[dir_reg]
286286
full_path = self.get_full_path_unnormalized(debugger, rel_file, dirfd=dirfd)
287287
self._access_check(debugger, full_path, self.read_fs_jail)
288288

@@ -299,9 +299,8 @@ def check(debugger: Debugger) -> None:
299299
return check
300300

301301
def get_rel_file(self, debugger: Debugger, *, reg: int) -> str:
302-
ptr = getattr(debugger, 'uarg%d' % reg)
303302
try:
304-
file = debugger.readstr(ptr)
303+
file = debugger.readstr(debugger.uarg[reg])
305304
except MaxLengthExceeded as e:
306305
raise DeniedSyscall(ACCESS_ENAMETOOLONG, f'Overly long path: {e.args[0]}')
307306
except UnicodeDecodeError as e:

0 commit comments

Comments
 (0)