From ac6f3ead77931427368bd08a1702d4c0b078ddba Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Mon, 28 Jul 2025 11:34:33 +0200 Subject: [PATCH] proj/intercept.c: Fix sigaction sa_mask value --- proj/intercept/src/intercept.c | 4 ++-- proj/server/src/intercept/__init__.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/proj/intercept/src/intercept.c b/proj/intercept/src/intercept.c index 542e304..7a95e40 100644 --- a/proj/intercept/src/intercept.c +++ b/proj/intercept/src/intercept.c @@ -1419,7 +1419,7 @@ int sym(sigaction)(int sig, const struct sigaction *restrict act, struct sigacti if (sigismember(&act->sa_mask, i) != 1) continue; if (maskstr[0] != 0) strcat(maskstr, ","); - strcat(maskstr, getsigstr(i)); + sprintf(maskstr + strlen(maskstr), "%i:%s", i, getsigstr(i)); } if (!verbosity) { msg("sigaction(%i:%s, %p:{}, %p)" ret_str, sig, sigstr, act, oact, ret_data); @@ -1462,7 +1462,7 @@ int sym(sigaction)(int sig, const struct sigaction *restrict act, struct sigacti if (sigismember(&oact->sa_mask, i) != 1) continue; if (maskstr[0] != 0) strcat(maskstr, ","); - strcat(maskstr, getsigstr(i)); + sprintf(maskstr + strlen(maskstr), "%i:%s", i, getsigstr(i)); } msg("return %i; errno %s; oact={sa_flags: 0x%x:%s, %s: %p, sa_mask: [%s]}", ret, strerrorname_np(errno), oact->sa_flags, flgstr, name, ptr, maskstr); } else { diff --git a/proj/server/src/intercept/__init__.py b/proj/server/src/intercept/__init__.py index a97ea2d..8664ca5 100644 --- a/proj/server/src/intercept/__init__.py +++ b/proj/server/src/intercept/__init__.py @@ -23,7 +23,7 @@ class Flags(NamedTuple): flags: list[str] StructTimeSpec = TypedDict('StructTimeSpec', {'tv_sec': int, 'tv_nsec': int}) -StructSigAction = TypedDict('StructSigAction', {'sa_flags': Flags, 'sa_handler': NotRequired[Pointer], 'sa_sigaction': NotRequired[Pointer], 'sa_mask': list[str]}) +StructSigAction = TypedDict('StructSigAction', {'sa_flags': Flags, 'sa_handler': NotRequired[Pointer], 'sa_sigaction': NotRequired[Pointer], 'sa_mask': list[Constant]}) StructSockAddr = TypedDict('StructSockAddr', {'sa_family': Constant, 'sa_data': NotRequired[bytes], 'sun_path': NotRequired[bytes], 'sin_addr': NotRequired[bytes], 'sin_port': NotRequired[int],