Repository navigation
SAST review and hardening on go-ocpp v0.2.0 (v0.3.0 prepared) - #16
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
20 defects, each with a test that failed first; seven new fuzz targets; station_busy exit code; ocpp-interop v0.5.3 default; workflows v3.3.1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
boeboe
added a commit
that referenced
this pull request
Nov 5, 2026
Codecov patch coverage of #16: the *ocpp.CallError branches of the CSMS answerer (an action the version does not have) and the timer path of waitBoot (a Pending interval that runs out). Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Dependencies: go-ocpp v0.1.5 → v0.2.0. The Go 1.26 floor is kept, and
go fix ./...has been applied. The CI and release workflows are on otfabric/.github v3.3.1.SAST (gosec and opengrep, low/low): 16 findings → 0. Fourteen are fixed in code:
filepath.Clean.The other two are recorded as false positives in otfabric/sast-triage (PR linked below):
OCPPCTL_PASSWORDvariable name, the same case as bacnetctl.examples/scenarios/smoke-1.6.yamluses@../payloads/…). docs/scenarios.md now says to review a scenario from someone else as you would a script.Hardening: 20 defects fixed, each with a test that failed before the fix.
error:lines and the--debugtrace.timeout_ms, of the heartbeat and boot intervals, and of{N..M}station ranges (panic and endless loop).timeoutwas cut off at--timeout.frame decode -: it read stdin without a bound.--urland--headererrors repeated secrets.server stations: it failed with long 1.6 identities.server startkept running when its output failed.server callto a busy station exited 10.New exit code:
station_busy(exit 4), documented in docs/exitcodes.md and docs/server-config.md.Tests:
FuzzFrameDecode,FuzzExpandURL,FuzzSubstitute,FuzzCheck,FuzzEscape,FuzzParsePasswordsandFuzzCheckCSMSCall.Release notes: RELEASE.md has a
## v0.3.0section. It is prepared, not released.Test plan
make checkpasses (coverage 95.3 %, per-package floor met).make e2epasses.go test -race -count=5 -cpu 1,2,8 ./...passes.go vetpasses for linux/386 and linux/arm.scripts/interop.sh v0.5.3, run before the hardening: 1154 pass, 29 CALLERROR, 32 skip and 3 fail, the same as v0.4.1. The 3 failures are ocpp-go's schema-invalid 2.0.1 responses.reports/interop-v0.5.3.tsvis from the last, on the final code). Its results match v0.4.1 row for row. The second run had one extra failure, lorenzodonini 1.6 Reset ("connection closed while waiting for the response"), which did not recur in the third run or in 26 targeted Resets, with and without an open session. It is recorded here as an intermittent failure whose cause I have not found; it is not attributed to either side.🤖 Generated with Claude Code