Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion docs/reviews/2026-10-26-codeql-triage.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,19 @@ Snapshot: open CodeQL alerts on `main` at `a52a3a470cbbcd6c90fede0dd026f4e74ede8
| [#621](https://github.com/dborgards/CanKit.Pro/security/code-scanning/621) | CANopen subscription predicate | Express the disjoint COB-ID cases as a switch, preserving the SRDO and LSS feature gates and identifier range. |
| [#620](https://github.com/dborgards/CanKit.Pro/security/code-scanning/620) | LSS emergency cancellation test | Declare the second task where it is assigned; remove its unused initial value. |
| [#647](https://github.com/dborgards/CanKit.Pro/security/code-scanning/647), [#648](https://github.com/dborgards/CanKit.Pro/security/code-scanning/648), [#649](https://github.com/dborgards/CanKit.Pro/security/code-scanning/649), [#650](https://github.com/dborgards/CanKit.Pro/security/code-scanning/650), [#651](https://github.com/dborgards/CanKit.Pro/security/code-scanning/651), [#652](https://github.com/dborgards/CanKit.Pro/security/code-scanning/652), [#653](https://github.com/dborgards/CanKit.Pro/security/code-scanning/653), [#654](https://github.com/dborgards/CanKit.Pro/security/code-scanning/654), [#655](https://github.com/dborgards/CanKit.Pro/security/code-scanning/655), [#656](https://github.com/dborgards/CanKit.Pro/security/code-scanning/656), [#657](https://github.com/dborgards/CanKit.Pro/security/code-scanning/657), [#658](https://github.com/dborgards/CanKit.Pro/security/code-scanning/658), [#659](https://github.com/dborgards/CanKit.Pro/security/code-scanning/659), [#660](https://github.com/dborgards/CanKit.Pro/security/code-scanning/660), [#661](https://github.com/dborgards/CanKit.Pro/security/code-scanning/661), [#662](https://github.com/dborgards/CanKit.Pro/security/code-scanning/662), [#663](https://github.com/dborgards/CanKit.Pro/security/code-scanning/663), [#664](https://github.com/dborgards/CanKit.Pro/security/code-scanning/664) | LSS tests | Remove casts whose operand already has the concrete CanOpenNode type. |
| [#742](https://github.com/dborgards/CanKit.Pro/security/code-scanning/742) | ISO-TP queued-send cancellation regression test | Follow-up in #480: keep the deliberately delayed Dispose as an observed test operation, with using-owned channel cleanup and an outer finally that releases the actor. The caller-token and late-disposal ordering assertions remain intact. Full main CodeQL at cc363d6d confirmed this previously retained recommendation as fixed on 2026-10-27. |

The cancellation tests inject throwing callbacks and assert both the original failure and completed cleanup. Restoring each old swallowing path makes the corresponding test fail. Full-suite, packaging and coverage evidence belongs to the pull request/check runs.

## Retained recommendations

Follow-up verification on 2026-10-27 at `cc363d6d`: #742 is now fixed by #480, leaving 18 of the original recommendations below visible. No new alerts were reported.

These sites retain their existing behavior and remain visible to CodeQL. No global query exclusion, inline suppression or alert dismissal is used to make the dashboard green.

| Alerts | Site | Reason to retain the current construct |
| --- | --- | --- |
| [#714](https://github.com/dborgards/CanKit.Pro/security/code-scanning/714), [#715](https://github.com/dborgards/CanKit.Pro/security/code-scanning/715), [#716](https://github.com/dborgards/CanKit.Pro/security/code-scanning/716), [#737](https://github.com/dborgards/CanKit.Pro/security/code-scanning/737) | J1939 node fields: service, actor, subscription, reader CTS | These are object-lifetime fields, not local temporaries. Constructor failure cleanup releases partially initialized owned resources; normal disposal releases them later. A local using would dispose successful construction resources before the node can use them. Injected actors/services retain caller ownership. |
| [#742](https://github.com/dborgards/CanKit.Pro/security/code-scanning/742) | ISO-TP queued-send cancellation regression test | The channel is disposed on a deliberately delayed worker after cancellation assertions. The test observes the disposal before releasing the held actor; a using cannot replace this ordering or the finally that releases the actor and joins disposal. |
| [#748](https://github.com/dborgards/CanKit.Pro/security/code-scanning/748) | TX-confirm cross-service reentrant-disposal regression test | The service is disposed only if its send has completed. Unconditional using cleanup would deadlock on the very regression this test must report. |
| [#731](https://github.com/dborgards/CanKit.Pro/security/code-scanning/731), [#732](https://github.com/dborgards/CanKit.Pro/security/code-scanning/732), [#697](https://github.com/dborgards/CanKit.Pro/security/code-scanning/697), [#698](https://github.com/dborgards/CanKit.Pro/security/code-scanning/698) | Background fault delivery in dispatcher, actor and RawCan | Fault subscribers are arbitrary application callbacks. Each must be isolated from subsequent subscribers and the draining loop. Sending subscriber failures back into the same fault channel would recurse. Narrowing by exception type would let other callback exceptions terminate delivery. |
| [#733](https://github.com/dborgards/CanKit.Pro/security/code-scanning/733), [#734](https://github.com/dborgards/CanKit.Pro/security/code-scanning/734) | Background-dispatch regression test callbacks | Transfer an arbitrary callback failure to the test completion source, so the awaiting test observes it instead of leaving the test hanging. |
Expand Down
Loading
Loading