ci: cancel stuck runs; cap ASan wall time; silence path snprintf warning

The sanitizers job wedged the only runner by printing AddressSanitizer
DEADLYSIGNAL forever (Docker without SYS_PTRACE). Concurrency now cancels
in-progress jobs on a new push, and make asan is wrapped in timeout -s KILL
480 with shallow ASAN_OPTIONS.

Also copy the path with memcpy after the length check so -O1 asan builds
do not warn about snprintf truncation into OS_PATH_MAX.
This commit is contained in:
WHC
2026-10-07 01:55:51 +08:00
parent 77de812207
commit 41c7e04940
2 changed files with 25 additions and 3 deletions
+3 -2
View File
@@ -566,9 +566,10 @@ static void sc_rewrite(int pid, const char *in, char *out, size_t n) {
static int sc_abs_ok(const sc_state_t *s, const char *full, int follow,
int strict) {
char path[OS_PATH_MAX], real[OS_PATH_MAX], loc[2 * OS_PATH_MAX + 2];
if (strlen(full) >= sizeof(path))
size_t flen = strlen(full);
if (flen >= sizeof(path))
return 0;
snprintf(path, sizeof(path), "%s", full);
memcpy(path, full, flen + 1);
size_t n = strlen(path);
while (n > 1 && path[n - 1] == '/')
path[--n] = 0;