diff --git a/proj/server/src/intercept/__init__.py b/proj/server/src/intercept/__init__.py index 8664ca5..d21ff08 100644 --- a/proj/server/src/intercept/__init__.py +++ b/proj/server/src/intercept/__init__.py @@ -263,7 +263,7 @@ class Parser: idx += 1 value = int(value, 0) if value != '(nil)' else 0 return PointerTo(val, value), idx - m = re.match(r'[A-Z0-9_]+', argument[idx:]) + m = re.match(r'[A-Z0-9_]+|\?', argument[idx:]) if m is not None: value = m.group(0) idx += len(value) @@ -302,6 +302,8 @@ class Parser: self.pid, self.tid = int(pid), int(tid) if len(self.stack) == 0: self.stack[(self.pid, self.tid)] = [] + elif (self.pid, self.tid) not in self.stack: + self.stack[(self.pid, self.tid)] = [] if not data.startswith(b'return ') and not data == b'return': call = data.decode('utf-8') #print(f'[{self.pid}][{self.tid}] {call}') diff --git a/proj/server/src/test-return-values b/proj/server/src/test-return-values index 8625585..33415d2 100755 --- a/proj/server/src/test-return-values +++ b/proj/server/src/test-return-values @@ -102,7 +102,7 @@ def main() -> None: entry[ret] = set() entry[ret].add(tuple(c for c in iter_tree_ok(child))) - allowed_cleanup_functions = ['malloc', 'free', 'freeaddrinfo', 'close', 'exit'] + allowed_cleanup_functions = ['malloc', 'free', 'freeaddrinfo', 'close', 'exit', 'sigaction'] for call, errors in calls.items(): if len(errors) <= 1: continue