Skip to content

Commit 2ba1eb6

Browse files
authored
Fail closed chain loading and harden CI/release pinning (#4)
1 parent 8cb6e24 commit 2ba1eb6

File tree

5 files changed

+25
-4
lines changed

5 files changed

+25
-4
lines changed

.github/workflows/main.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ jobs:
1717
- run: go vet ./...
1818
- name: gosec
1919
run: |
20-
go install github.com/securego/gosec/v2/cmd/gosec@latest
20+
go install github.com/securego/gosec/v2/cmd/gosec@v2.23.0
2121
gosec ./...
2222
- name: govulncheck
2323
run: |
24-
go install golang.org/x/vuln/cmd/govulncheck@latest
24+
go install golang.org/x/vuln/cmd/govulncheck@v1.1.4
2525
govulncheck ./...
2626
2727
test:

.github/workflows/release.yml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
go-version-file: go.mod
2323
- uses: goreleaser/goreleaser-action@v6
2424
with:
25-
version: latest
25+
version: v2.13.3
2626
args: release --clean
2727
env:
2828
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -42,6 +42,15 @@ jobs:
4242
cosign sign-blob --yes --output-signature dist/checksums.txt.sig --output-certificate dist/checksums.txt.pem dist/checksums.txt
4343
- name: Verify signed checksums
4444
run: ./scripts/verify_release_artifacts.sh dist
45+
- name: Upload checksum signature assets to release
46+
env:
47+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
48+
run: |
49+
gh release upload "${{ github.ref_name }}" \
50+
dist/checksums.txt.sig \
51+
dist/checksums.txt.pem \
52+
--repo "${{ github.repository }}" \
53+
--clobber
4554
- name: Generate build provenance
4655
uses: actions/attest-build-provenance@v2
4756
with:

cmd/proof/artifacts.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ func loadChain(path string) (*proof.Chain, error) {
108108
}
109109
r, err := loadRecord(f)
110110
if err != nil {
111-
continue
111+
return nil, fmt.Errorf("parse %s: %w", base, err)
112112
}
113113
c.Records = append(c.Records, *r)
114114
c.RecordCount = len(c.Records)

cmd/proof/more_branches_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,13 @@ func TestLoadChainFallbackAndJSONLError(t *testing.T) {
5252
require.Error(t, err)
5353
}
5454

55+
func TestLoadChainMalformedJSONRecordFails(t *testing.T) {
56+
dir := t.TempDir()
57+
testutil.WriteFile(t, filepath.Join(dir, "bad.json"), []byte("{not-json"))
58+
_, err := loadChain(dir)
59+
require.Error(t, err)
60+
}
61+
5562
func TestBundleAndGaitHelperErrors(t *testing.T) {
5663
dir := t.TempDir()
5764
testutil.WriteFile(t, filepath.Join(dir, "manifest.json"), []byte(`{"files":[{"path":"a.txt","sha256":"sha256:abcd"}]}`))

cmd/proof/verify_cmd_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@ func TestVerifyCommandErrorPaths(t *testing.T) {
6464
require.NoError(t, proof.WriteRecord(p, r))
6565
_, err = runCLIForTest(t, []string{"verify", "--signatures", p})
6666
require.Error(t, err)
67+
68+
chainDir := t.TempDir()
69+
testutil.WriteFile(t, filepath.Join(chainDir, "bad.json"), []byte("{not-json"))
70+
_, err = runCLIForTest(t, []string{"verify", chainDir})
71+
require.Error(t, err)
6772
}
6873

6974
func TestVerifyBundleWithManifestSignature(t *testing.T) {

0 commit comments

Comments
 (0)