Commit fa360cf
fix(ffi): remove redundant @ptrCast from cartridge shims (CWE-704)
Sweeps all 114 vendored copies of cartridge_shim.zig in boj-server —
including the canonical shared source ffi/zig/src/cartridge_shim.zig —
to the blessed post-#146 idiom: std.mem.sliceTo(tool_name, 0) with
[*c]const u8 test locals and no @ptrCast. Mirrors PR #89 in
boj-server-cartridges, which is the split-out of these cartridges.
Why the casts were redundant, not unsafe: a [*:0]const u8 sentinel
pointer coerces implicitly to the [*c]const u8 that toolIs/invokeArgsNull
accept, so @ptrCast(name) was a no-op widening — but a C-oriented
scanner (Hypatia code_safety/zig_ptr_cast, CWE-704) still flags it as an
unchecked pointer type conversion. Typing the local as [*c]const u8 up
front removes the finding rather than suppressing it.
Also folds in ffi/zig/src/abi_verify.zig (ABI-conformance tests C.6/C.7),
which called shim.toolIs/invokeArgsNull via @ptrCast. NOTE: that file was
modified in the shared working tree by a concurrent agent; it is included
here because it is the identical CWE-704 fix — flag if it should land
separately.
Verification (zig 0.15.2, the CI-pinned version):
- every cartridge_shim.zig compiles and passes `zig test` standalone;
- the edited abi_verify C.6/C.7 idiom verified in isolation against the
real shim (8/8), since the full `zig build test` graph does not compile
under 0.15.2 for reasons unrelated to this change (see below).
Out of scope, reported separately: (1) .github/workflows/zig-test.yml has
been startup_failure (0s) on main since >=2026-07-09, so this repo's Zig
CI validates nothing and this PR's zig-test check cannot pass on any
branch; (2) catalogue/guardian/loader/coprocessor/sdp reference the
removed std.atomic.Mutex and do not compile under the pinned 0.15.2.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>1 parent 42fec37 commit fa360cf
115 files changed
Lines changed: 1833 additions & 1149 deletions
File tree
- cartridges
- academic-workflow-mcp/ffi
- aerie-mcp/ffi
- affinescript-mcp/ffi
- agent-mcp/ffi
- airtable-mcp/ffi
- arango-mcp/ffi
- aws-mcp/ffi
- bofig-mcp/ffi
- browser-mcp/ffi
- bsp-mcp/ffi
- bug-filing-mcp/ffi
- buildkite-mcp/ffi
- burble-admin-mcp/ffi
- circleci-mcp/ffi
- civic-connect-mcp/ffi
- claude-agents-power-mcp/ffi
- claude-ai-mcp/ffi
- clickhouse-mcp/ffi
- cloud-mcp/ffi
- cloudflare-mcp/ffi
- coderag-mcp/ffi
- codeseeker-mcp/ffi
- comms-mcp/ffi
- conflow-mcp/ffi
- container-mcp/ffi
- crates-mcp/ffi
- dap-mcp/ffi
- database-mcp/ffi
- digitalocean-mcp/ffi
- discord-mcp/ffi
- dns-shield-mcp/ffi
- docker-hub-mcp/ffi
- duckdb-mcp/ffi
- ephapax-mcp/ffi
- feedback-mcp/ffi
- fireflag-mcp/ffi
- fleet-mcp/ffi
- fly-mcp/ffi
- game-admin-mcp/ffi
- gcp-mcp/ffi
- git-mcp/ffi
- github-actions-mcp/ffi
- github-api-mcp/ffi
- gitlab-api-mcp/ffi
- google-docs-mcp/ffi
- google-drive-mcp/ffi
- google-sheets-mcp/ffi
- gossamer-mcp/ffi
- grafana-mcp/ffi
- hackage-mcp/ffi
- hesiod-mcp/ffi
- hetzner-mcp/ffi
- hex-mcp/ffi
- hypatia-mcp/ffi
- iac-mcp/ffi
- idaptik-admin-mcp/ffi
- jira-mcp/ffi
- k8s-mcp/ffi
- k9iser-mcp/ffi
- kategoria-mcp/ffi
- laminar-mcp/ffi
- lang-mcp/ffi
- linear-mcp/ffi
- linode-mcp/ffi
- local-memory-mcp/ffi
- lsp-mcp/ffi
- matrix-mcp/ffi
- ml-mcp/ffi
- model-router-mcp/ffi
- mongodb-mcp/ffi
- neo4j-mcp/ffi
- neon-mcp/ffi
- nesy-mcp/ffi
- notifyhub-mcp/ffi
- notion-mcp/ffi
- npm-registry-mcp/ffi
- observe-mcp/ffi
- obsidian-mcp/ffi
- opam-mcp/ffi
- opendata-mcp/ffi
- opsm-mcp/ffi
- origene-mcp/ffi
- panic-attack-mcp/ffi
- pmpl-mcp/ffi
- postgresql-mcp/ffi
- prometheus-mcp/ffi
- proof-mcp/ffi
- pypi-mcp/ffi
- queues-mcp/ffi
- railway-mcp/ffi
- redis-mcp/ffi
- render-mcp/ffi
- reposystem-mcp/ffi
- research-mcp/ffi
- rokur-mcp/ffi
- sanctify-mcp/ffi
- secrets-mcp/ffi
- sentry-mcp/ffi
- slack-mcp/ffi
- ssg-mcp/ffi
- stapeln-mcp/ffi
- supabase-mcp/ffi
- telegram-mcp/ffi
- todoist-mcp/ffi
- toolchain-mcp/ffi
- turso-mcp/ffi
- typed-wasm-mcp/ffi
- ums-mcp/ffi
- vault-mcp/ffi
- verisimdb-mcp/ffi
- vext-mcp/ffi
- vordr-mcp/ffi
- zotero-mcp/ffi
- ffi/zig/src
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
61 | 67 | | |
62 | | - | |
| 68 | + | |
63 | 69 | | |
64 | 70 | | |
65 | 71 | | |
| |||
124 | 130 | | |
125 | 131 | | |
126 | 132 | | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
132 | 138 | | |
133 | 139 | | |
134 | 140 | | |
135 | 141 | | |
136 | 142 | | |
137 | | - | |
138 | | - | |
| 143 | + | |
| 144 | + | |
139 | 145 | | |
140 | | - | |
141 | | - | |
| 146 | + | |
| 147 | + | |
142 | 148 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
61 | 67 | | |
62 | | - | |
| 68 | + | |
63 | 69 | | |
64 | 70 | | |
65 | 71 | | |
| |||
124 | 130 | | |
125 | 131 | | |
126 | 132 | | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
132 | 138 | | |
133 | 139 | | |
134 | 140 | | |
135 | 141 | | |
136 | 142 | | |
137 | | - | |
138 | | - | |
| 143 | + | |
| 144 | + | |
139 | 145 | | |
140 | | - | |
141 | | - | |
| 146 | + | |
| 147 | + | |
142 | 148 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
61 | 67 | | |
62 | | - | |
| 68 | + | |
63 | 69 | | |
64 | 70 | | |
65 | 71 | | |
| |||
124 | 130 | | |
125 | 131 | | |
126 | 132 | | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
132 | 138 | | |
133 | 139 | | |
134 | 140 | | |
135 | 141 | | |
136 | 142 | | |
137 | | - | |
138 | | - | |
| 143 | + | |
| 144 | + | |
139 | 145 | | |
140 | | - | |
141 | | - | |
| 146 | + | |
| 147 | + | |
142 | 148 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
61 | 67 | | |
62 | | - | |
| 68 | + | |
63 | 69 | | |
64 | 70 | | |
65 | 71 | | |
| |||
124 | 130 | | |
125 | 131 | | |
126 | 132 | | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
132 | 138 | | |
133 | 139 | | |
134 | 140 | | |
135 | 141 | | |
136 | 142 | | |
137 | | - | |
138 | | - | |
| 143 | + | |
| 144 | + | |
139 | 145 | | |
140 | | - | |
141 | | - | |
| 146 | + | |
| 147 | + | |
142 | 148 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
61 | 67 | | |
62 | | - | |
| 68 | + | |
63 | 69 | | |
64 | 70 | | |
65 | 71 | | |
| |||
124 | 130 | | |
125 | 131 | | |
126 | 132 | | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
132 | 138 | | |
133 | 139 | | |
134 | 140 | | |
135 | 141 | | |
136 | 142 | | |
137 | | - | |
138 | | - | |
| 143 | + | |
| 144 | + | |
139 | 145 | | |
140 | | - | |
141 | | - | |
| 146 | + | |
| 147 | + | |
142 | 148 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
61 | 67 | | |
62 | | - | |
| 68 | + | |
63 | 69 | | |
64 | 70 | | |
65 | 71 | | |
| |||
124 | 130 | | |
125 | 131 | | |
126 | 132 | | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
132 | 138 | | |
133 | 139 | | |
134 | 140 | | |
135 | 141 | | |
136 | 142 | | |
137 | | - | |
138 | | - | |
| 143 | + | |
| 144 | + | |
139 | 145 | | |
140 | | - | |
141 | | - | |
| 146 | + | |
| 147 | + | |
142 | 148 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
61 | 67 | | |
62 | | - | |
| 68 | + | |
63 | 69 | | |
64 | 70 | | |
65 | 71 | | |
| |||
124 | 130 | | |
125 | 131 | | |
126 | 132 | | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
132 | 138 | | |
133 | 139 | | |
134 | 140 | | |
135 | 141 | | |
136 | 142 | | |
137 | | - | |
138 | | - | |
| 143 | + | |
| 144 | + | |
139 | 145 | | |
140 | | - | |
141 | | - | |
| 146 | + | |
| 147 | + | |
142 | 148 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
61 | 67 | | |
62 | | - | |
| 68 | + | |
63 | 69 | | |
64 | 70 | | |
65 | 71 | | |
| |||
124 | 130 | | |
125 | 131 | | |
126 | 132 | | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
132 | 138 | | |
133 | 139 | | |
134 | 140 | | |
135 | 141 | | |
136 | 142 | | |
137 | | - | |
138 | | - | |
| 143 | + | |
| 144 | + | |
139 | 145 | | |
140 | | - | |
141 | | - | |
| 146 | + | |
| 147 | + | |
142 | 148 | | |
0 commit comments