From 478c2ff9d857ee2b54f8ec349f40eb825fabe8ad Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 24 Mar 2026 01:40:56 +0000 Subject: [PATCH] Add CI check to enforce capability limits using capslock Adds a capability baseline file and a GitHub Actions workflow that uses Google's capslock tool to detect if any new capabilities (file access, network, syscalls, etc.) are introduced by code changes. https://claude.ai/code/session_01HwDXpKevFLhE5EfrR6JrBn --- .github/workflows/capabilities.yml | 25 + capability_baseline.json | 1272 ++++++++++++++++++++++++++++ 2 files changed, 1297 insertions(+) create mode 100644 .github/workflows/capabilities.yml create mode 100644 capability_baseline.json diff --git a/.github/workflows/capabilities.yml b/.github/workflows/capabilities.yml new file mode 100644 index 0000000..57fcae4 --- /dev/null +++ b/.github/workflows/capabilities.yml @@ -0,0 +1,25 @@ +name: capabilities +on: + push: + branches: + - v2 + pull_request: + branches: + - v2 + +jobs: + check: + name: check capabilities + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + - name: Setup go + uses: actions/setup-go@v6 + with: + go-version: "1.26" + - name: Install capslock + run: go install github.com/google/capslock/cmd/capslock@latest + - name: Check for new capabilities + run: capslock -packages=./... -output=compare -granularity=package capability_baseline.json diff --git a/capability_baseline.json b/capability_baseline.json new file mode 100644 index 0000000..fb5a589 --- /dev/null +++ b/capability_baseline.json @@ -0,0 +1,1272 @@ +{ + "capabilityInfo": [ + { + "packageName": "toml", + "capabilityName": "FILES", + "capability": "CAPABILITY_FILES", + "depPath": "github.com/pelletier/go-toml/v2.Marshal (*github.com/pelletier/go-toml/v2.Encoder).Encode (*os.File).Write", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2.Marshal", + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Encoder).Encode", + "site": { + "filename": "marshaler.go", + "line": "28", + "column": "19" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*os.File).Write", + "site": { + "filename": "marshaler.go", + "line": "191", + "column": "22" + }, + "package": "os" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2", + "capabilityType": "CAPABILITY_TYPE_DIRECT" + }, + { + "packageName": "main", + "capabilityName": "FILES", + "capability": "CAPABILITY_FILES", + "depPath": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-decoder.main github.com/pelletier/go-toml/v2/internal/testsuite.DecodeStdin (*encoding/json.Encoder).Encode (*os.File).Write", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-decoder.main", + "package": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-decoder" + }, + { + "name": "github.com/pelletier/go-toml/v2/internal/testsuite.DecodeStdin", + "site": { + "filename": "main.go", + "line": "21", + "column": "30" + }, + "package": "github.com/pelletier/go-toml/v2/internal/testsuite" + }, + { + "name": "(*encoding/json.Encoder).Encode", + "site": { + "filename": "testsuite.go", + "line": "45", + "column": "20" + }, + "package": "encoding/json" + }, + { + "name": "(*os.File).Write", + "site": { + "filename": "stream.go", + "line": "231", + "column": "25" + }, + "package": "os" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-decoder", + "capabilityType": "CAPABILITY_TYPE_TRANSITIVE" + }, + { + "packageName": "main", + "capabilityName": "FILES", + "capability": "CAPABILITY_FILES", + "depPath": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-encoder.main github.com/pelletier/go-toml/v2/internal/testsuite.EncodeStdin (*github.com/pelletier/go-toml/v2.Encoder).Encode (*os.File).Write", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-encoder.main", + "package": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-encoder" + }, + { + "name": "github.com/pelletier/go-toml/v2/internal/testsuite.EncodeStdin", + "site": { + "filename": "main.go", + "line": "21", + "column": "30" + }, + "package": "github.com/pelletier/go-toml/v2/internal/testsuite" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Encoder).Encode", + "site": { + "filename": "testsuite.go", + "line": "67", + "column": "42" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*os.File).Write", + "site": { + "filename": "marshaler.go", + "line": "191", + "column": "22" + }, + "package": "os" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-encoder", + "capabilityType": "CAPABILITY_TYPE_TRANSITIVE" + }, + { + "packageName": "main", + "capabilityName": "FILES", + "capability": "CAPABILITY_FILES", + "depPath": "github.com/pelletier/go-toml/v2/cmd/jsontoml.convert (*github.com/pelletier/go-toml/v2.Encoder).Encode (*os.File).Write", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/jsontoml.convert", + "package": "github.com/pelletier/go-toml/v2/cmd/jsontoml" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Encoder).Encode", + "site": { + "filename": "main.go", + "line": "65", + "column": "17" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*os.File).Write", + "site": { + "filename": "marshaler.go", + "line": "191", + "column": "22" + }, + "package": "os" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/jsontoml", + "capabilityType": "CAPABILITY_TYPE_TRANSITIVE" + }, + { + "packageName": "main", + "capabilityName": "FILES", + "capability": "CAPABILITY_FILES", + "depPath": "github.com/pelletier/go-toml/v2/cmd/tomljson.convert (*encoding/json.Encoder).Encode (*os.File).Write", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/tomljson.convert", + "package": "github.com/pelletier/go-toml/v2/cmd/tomljson" + }, + { + "name": "(*encoding/json.Encoder).Encode", + "site": { + "filename": "main.go", + "line": "62", + "column": "17" + }, + "package": "encoding/json" + }, + { + "name": "(*os.File).Write", + "site": { + "filename": "stream.go", + "line": "231", + "column": "25" + }, + "package": "os" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/tomljson", + "capabilityType": "CAPABILITY_TYPE_DIRECT" + }, + { + "packageName": "main", + "capabilityName": "FILES", + "capability": "CAPABILITY_FILES", + "depPath": "github.com/pelletier/go-toml/v2/cmd/tomll.convert (*github.com/pelletier/go-toml/v2.Encoder).Encode (*os.File).Write", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/tomll.convert", + "package": "github.com/pelletier/go-toml/v2/cmd/tomll" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Encoder).Encode", + "site": { + "filename": "main.go", + "line": "57", + "column": "17" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*os.File).Write", + "site": { + "filename": "marshaler.go", + "line": "191", + "column": "22" + }, + "package": "os" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/tomll", + "capabilityType": "CAPABILITY_TYPE_TRANSITIVE" + }, + { + "packageName": "main", + "capabilityName": "FILES", + "capability": "CAPABILITY_FILES", + "depPath": "github.com/pelletier/go-toml/v2/cmd/tomltestgen.main os.ReadFile", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/tomltestgen.main", + "package": "github.com/pelletier/go-toml/v2/cmd/tomltestgen" + }, + { + "name": "os.ReadFile", + "site": { + "filename": "main.go", + "line": "116", + "column": "34" + }, + "package": "os" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/tomltestgen", + "capabilityType": "CAPABILITY_TYPE_DIRECT" + }, + { + "packageName": "cli", + "capabilityName": "FILES", + "capability": "CAPABILITY_FILES", + "depPath": "(*github.com/pelletier/go-toml/v2/internal/cli.Program).run$1 (*os.File).Close", + "path": [ + { + "name": "(*github.com/pelletier/go-toml/v2/internal/cli.Program).run$1", + "package": "github.com/pelletier/go-toml/v2/internal/cli" + }, + { + "name": "(*os.File).Close", + "site": { + "filename": "cli.go", + "line": "57", + "column": "29" + }, + "package": "os" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/internal/cli", + "capabilityType": "CAPABILITY_TYPE_DIRECT" + }, + { + "packageName": "testsuite", + "capabilityName": "FILES", + "capability": "CAPABILITY_FILES", + "depPath": "github.com/pelletier/go-toml/v2/internal/testsuite.DecodeStdin (*encoding/json.Encoder).Encode (*os.File).Write", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/internal/testsuite.DecodeStdin", + "package": "github.com/pelletier/go-toml/v2/internal/testsuite" + }, + { + "name": "(*encoding/json.Encoder).Encode", + "site": { + "filename": "testsuite.go", + "line": "45", + "column": "20" + }, + "package": "encoding/json" + }, + { + "name": "(*os.File).Write", + "site": { + "filename": "stream.go", + "line": "231", + "column": "25" + }, + "package": "os" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/internal/testsuite", + "capabilityType": "CAPABILITY_TYPE_DIRECT" + }, + { + "packageName": "ossfuzz", + "capabilityName": "FILES", + "capability": "CAPABILITY_FILES", + "depPath": "github.com/pelletier/go-toml/v2/ossfuzz.FuzzToml github.com/pelletier/go-toml/v2.Marshal (*github.com/pelletier/go-toml/v2.Encoder).Encode (*os.File).Write", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/ossfuzz.FuzzToml", + "package": "github.com/pelletier/go-toml/v2/ossfuzz" + }, + { + "name": "github.com/pelletier/go-toml/v2.Marshal", + "site": { + "filename": "fuzz.go", + "line": "28", + "column": "30" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Encoder).Encode", + "site": { + "filename": "marshaler.go", + "line": "28", + "column": "19" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*os.File).Write", + "site": { + "filename": "marshaler.go", + "line": "191", + "column": "22" + }, + "package": "os" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/ossfuzz", + "capabilityType": "CAPABILITY_TYPE_TRANSITIVE" + }, + { + "packageName": "main", + "capabilityName": "MODIFY_SYSTEM_STATE/LOGGING", + "capability": "CAPABILITY_MODIFY_SYSTEM_STATE", + "depPath": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-decoder.main log.SetFlags", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-decoder.main", + "package": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-decoder" + }, + { + "name": "log.SetFlags", + "site": { + "filename": "main.go", + "line": "14", + "column": "14" + }, + "package": "log" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-decoder", + "capabilityType": "CAPABILITY_TYPE_DIRECT" + }, + { + "packageName": "main", + "capabilityName": "MODIFY_SYSTEM_STATE/LOGGING", + "capability": "CAPABILITY_MODIFY_SYSTEM_STATE", + "depPath": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-encoder.main log.SetFlags", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-encoder.main", + "package": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-encoder" + }, + { + "name": "log.SetFlags", + "site": { + "filename": "main.go", + "line": "14", + "column": "14" + }, + "package": "log" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-encoder", + "capabilityType": "CAPABILITY_TYPE_DIRECT" + }, + { + "packageName": "toml", + "capabilityName": "UNANALYZED", + "capability": "CAPABILITY_UNANALYZED", + "depPath": "github.com/pelletier/go-toml/v2.Unmarshal (*github.com/pelletier/go-toml/v2.decoder).FromParser errors.As", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2.Unmarshal", + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.decoder).FromParser", + "site": { + "filename": "unmarshaler.go", + "line": "25", + "column": "21" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "errors.As", + "site": { + "filename": "unmarshaler.go", + "line": "249", + "column": "14" + }, + "package": "errors" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2", + "capabilityType": "CAPABILITY_TYPE_DIRECT" + }, + { + "packageName": "main", + "capabilityName": "UNANALYZED", + "capability": "CAPABILITY_UNANALYZED", + "depPath": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-decoder.main log.Fatal (*log.Logger).Output", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-decoder.main", + "package": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-decoder" + }, + { + "name": "log.Fatal", + "site": { + "filename": "main.go", + "line": "23", + "column": "12" + }, + "package": "log" + }, + { + "name": "(*log.Logger).Output", + "site": { + "filename": "log.go", + "line": "412", + "column": "12" + }, + "package": "log" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-decoder", + "capabilityType": "CAPABILITY_TYPE_DIRECT" + }, + { + "packageName": "main", + "capabilityName": "UNANALYZED", + "capability": "CAPABILITY_UNANALYZED", + "depPath": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-encoder.main log.Fatal (*log.Logger).Output", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-encoder.main", + "package": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-encoder" + }, + { + "name": "log.Fatal", + "site": { + "filename": "main.go", + "line": "23", + "column": "12" + }, + "package": "log" + }, + { + "name": "(*log.Logger).Output", + "site": { + "filename": "log.go", + "line": "412", + "column": "12" + }, + "package": "log" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-encoder", + "capabilityType": "CAPABILITY_TYPE_DIRECT" + }, + { + "packageName": "main", + "capabilityName": "UNANALYZED", + "capability": "CAPABILITY_UNANALYZED", + "depPath": "github.com/pelletier/go-toml/v2/cmd/jsontoml.main (*github.com/pelletier/go-toml/v2/internal/cli.Program).Execute (*github.com/pelletier/go-toml/v2/internal/cli.Program).main errors.As", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/jsontoml.main", + "package": "github.com/pelletier/go-toml/v2/cmd/jsontoml" + }, + { + "name": "(*github.com/pelletier/go-toml/v2/internal/cli.Program).Execute", + "site": { + "filename": "main.go", + "line": "46", + "column": "11" + }, + "package": "github.com/pelletier/go-toml/v2/internal/cli" + }, + { + "name": "(*github.com/pelletier/go-toml/v2/internal/cli.Program).main", + "site": { + "filename": "cli.go", + "line": "28", + "column": "16" + }, + "package": "github.com/pelletier/go-toml/v2/internal/cli" + }, + { + "name": "errors.As", + "site": { + "filename": "cli.go", + "line": "35", + "column": "15" + }, + "package": "errors" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/jsontoml", + "capabilityType": "CAPABILITY_TYPE_TRANSITIVE" + }, + { + "packageName": "main", + "capabilityName": "UNANALYZED", + "capability": "CAPABILITY_UNANALYZED", + "depPath": "github.com/pelletier/go-toml/v2/cmd/tomljson.convert errors.As", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/tomljson.convert", + "package": "github.com/pelletier/go-toml/v2/cmd/tomljson" + }, + { + "name": "errors.As", + "site": { + "filename": "main.go", + "line": "53", + "column": "15" + }, + "package": "errors" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/tomljson", + "capabilityType": "CAPABILITY_TYPE_DIRECT" + }, + { + "packageName": "main", + "capabilityName": "UNANALYZED", + "capability": "CAPABILITY_UNANALYZED", + "depPath": "github.com/pelletier/go-toml/v2/cmd/tomll.convert (*github.com/pelletier/go-toml/v2.Decoder).Decode io.ReadAll", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/tomll.convert", + "package": "github.com/pelletier/go-toml/v2/cmd/tomll" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Decoder).Decode", + "site": { + "filename": "main.go", + "line": "51", + "column": "17" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "io.ReadAll", + "site": { + "filename": "unmarshaler.go", + "line": "122", + "column": "22" + }, + "package": "io" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/tomll", + "capabilityType": "CAPABILITY_TYPE_TRANSITIVE" + }, + { + "packageName": "main", + "capabilityName": "UNANALYZED", + "capability": "CAPABILITY_UNANALYZED", + "depPath": "github.com/pelletier/go-toml/v2/cmd/tomltestgen.main go/format.Source go/format.parse go/parser.ParseFile go/parser.readSource io.ReadAll", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/tomltestgen.main", + "package": "github.com/pelletier/go-toml/v2/cmd/tomltestgen" + }, + { + "name": "go/format.Source", + "site": { + "filename": "main.go", + "line": "169", + "column": "35" + }, + "package": "go/format" + }, + { + "name": "go/format.parse", + "site": { + "filename": "format.go", + "line": "103", + "column": "42" + }, + "package": "go/format" + }, + { + "name": "go/parser.ParseFile", + "site": { + "filename": "internal.go", + "line": "30", + "column": "30" + }, + "package": "go/parser" + }, + { + "name": "go/parser.readSource", + "site": { + "filename": "interface.go", + "line": "90", + "column": "25" + }, + "package": "go/parser" + }, + { + "name": "io.ReadAll", + "site": { + "filename": "interface.go", + "line": "37", + "column": "21" + }, + "package": "io" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/tomltestgen", + "capabilityType": "CAPABILITY_TYPE_DIRECT" + }, + { + "packageName": "cli", + "capabilityName": "UNANALYZED", + "capability": "CAPABILITY_UNANALYZED", + "depPath": "(*github.com/pelletier/go-toml/v2/internal/cli.Program).Execute (*github.com/pelletier/go-toml/v2/internal/cli.Program).main errors.As", + "path": [ + { + "name": "(*github.com/pelletier/go-toml/v2/internal/cli.Program).Execute", + "package": "github.com/pelletier/go-toml/v2/internal/cli" + }, + { + "name": "(*github.com/pelletier/go-toml/v2/internal/cli.Program).main", + "site": { + "filename": "cli.go", + "line": "28", + "column": "16" + }, + "package": "github.com/pelletier/go-toml/v2/internal/cli" + }, + { + "name": "errors.As", + "site": { + "filename": "cli.go", + "line": "35", + "column": "15" + }, + "package": "errors" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/internal/cli", + "capabilityType": "CAPABILITY_TYPE_DIRECT" + }, + { + "packageName": "testsuite", + "capabilityName": "UNANALYZED", + "capability": "CAPABILITY_UNANALYZED", + "depPath": "github.com/pelletier/go-toml/v2/internal/testsuite.DecodeStdin (*github.com/pelletier/go-toml/v2.Decoder).Decode io.ReadAll", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/internal/testsuite.DecodeStdin", + "package": "github.com/pelletier/go-toml/v2/internal/testsuite" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Decoder).Decode", + "site": { + "filename": "testsuite.go", + "line": "39", + "column": "44" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "io.ReadAll", + "site": { + "filename": "unmarshaler.go", + "line": "122", + "column": "22" + }, + "package": "io" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/internal/testsuite", + "capabilityType": "CAPABILITY_TYPE_TRANSITIVE" + }, + { + "packageName": "tracker", + "capabilityName": "UNANALYZED", + "capability": "CAPABILITY_UNANALYZED", + "depPath": "(*github.com/pelletier/go-toml/v2/internal/tracker.SeenTracker).CheckExpression (*github.com/pelletier/go-toml/v2/internal/tracker.SeenTracker).checkKeyValue (*github.com/pelletier/go-toml/v2/internal/tracker.SeenTracker).checkInlineTable (*sync.Pool).Get", + "path": [ + { + "name": "(*github.com/pelletier/go-toml/v2/internal/tracker.SeenTracker).CheckExpression", + "package": "github.com/pelletier/go-toml/v2/internal/tracker" + }, + { + "name": "(*github.com/pelletier/go-toml/v2/internal/tracker.SeenTracker).checkKeyValue", + "site": { + "filename": "seen.go", + "line": "164", + "column": "25" + }, + "package": "github.com/pelletier/go-toml/v2/internal/tracker" + }, + { + "name": "(*github.com/pelletier/go-toml/v2/internal/tracker.SeenTracker).checkInlineTable", + "site": { + "filename": "seen.go", + "line": "310", + "column": "28" + }, + "package": "github.com/pelletier/go-toml/v2/internal/tracker" + }, + { + "name": "(*sync.Pool).Get", + "site": { + "filename": "seen.go", + "line": "339", + "column": "14" + }, + "package": "sync" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/internal/tracker", + "capabilityType": "CAPABILITY_TYPE_DIRECT" + }, + { + "packageName": "ossfuzz", + "capabilityName": "UNANALYZED", + "capability": "CAPABILITY_UNANALYZED", + "depPath": "github.com/pelletier/go-toml/v2/ossfuzz.FuzzToml github.com/pelletier/go-toml/v2.Unmarshal (*github.com/pelletier/go-toml/v2.decoder).FromParser errors.As", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/ossfuzz.FuzzToml", + "package": "github.com/pelletier/go-toml/v2/ossfuzz" + }, + { + "name": "github.com/pelletier/go-toml/v2.Unmarshal", + "site": { + "filename": "fuzz.go", + "line": "23", + "column": "23" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.decoder).FromParser", + "site": { + "filename": "unmarshaler.go", + "line": "25", + "column": "21" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "errors.As", + "site": { + "filename": "unmarshaler.go", + "line": "249", + "column": "14" + }, + "package": "errors" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/ossfuzz", + "capabilityType": "CAPABILITY_TYPE_TRANSITIVE" + }, + { + "packageName": "toml", + "capabilityName": "REFLECT", + "capability": "CAPABILITY_REFLECT", + "depPath": "github.com/pelletier/go-toml/v2.Marshal (*github.com/pelletier/go-toml/v2.Encoder).Encode (*github.com/pelletier/go-toml/v2.Encoder).encode reflect.Zero", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2.Marshal", + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Encoder).Encode", + "site": { + "filename": "marshaler.go", + "line": "28", + "column": "19" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Encoder).encode", + "site": { + "filename": "marshaler.go", + "line": "186", + "column": "22" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "reflect.Zero", + "site": { + "filename": "marshaler.go", + "line": "321", + "column": "42" + }, + "package": "reflect" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2", + "capabilityType": "CAPABILITY_TYPE_DIRECT" + }, + { + "packageName": "main", + "capabilityName": "REFLECT", + "capability": "CAPABILITY_REFLECT", + "depPath": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-decoder.main github.com/pelletier/go-toml/v2/internal/testsuite.DecodeStdin (*github.com/pelletier/go-toml/v2.Decoder).Decode (*github.com/pelletier/go-toml/v2.decoder).FromParser (reflect.Value).Set", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-decoder.main", + "package": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-decoder" + }, + { + "name": "github.com/pelletier/go-toml/v2/internal/testsuite.DecodeStdin", + "site": { + "filename": "main.go", + "line": "21", + "column": "30" + }, + "package": "github.com/pelletier/go-toml/v2/internal/testsuite" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Decoder).Decode", + "site": { + "filename": "testsuite.go", + "line": "39", + "column": "44" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.decoder).FromParser", + "site": { + "filename": "unmarshaler.go", + "line": "136", + "column": "23" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(reflect.Value).Set", + "site": { + "filename": "unmarshaler.go", + "line": "240", + "column": "8" + }, + "package": "reflect" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-decoder", + "capabilityType": "CAPABILITY_TYPE_TRANSITIVE" + }, + { + "packageName": "main", + "capabilityName": "REFLECT", + "capability": "CAPABILITY_REFLECT", + "depPath": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-encoder.main github.com/pelletier/go-toml/v2/internal/testsuite.EncodeStdin (*github.com/pelletier/go-toml/v2.Encoder).Encode (*github.com/pelletier/go-toml/v2.Encoder).encode reflect.Zero", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-encoder.main", + "package": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-encoder" + }, + { + "name": "github.com/pelletier/go-toml/v2/internal/testsuite.EncodeStdin", + "site": { + "filename": "main.go", + "line": "21", + "column": "30" + }, + "package": "github.com/pelletier/go-toml/v2/internal/testsuite" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Encoder).Encode", + "site": { + "filename": "testsuite.go", + "line": "67", + "column": "42" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Encoder).encode", + "site": { + "filename": "marshaler.go", + "line": "186", + "column": "22" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "reflect.Zero", + "site": { + "filename": "marshaler.go", + "line": "321", + "column": "42" + }, + "package": "reflect" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-encoder", + "capabilityType": "CAPABILITY_TYPE_TRANSITIVE" + }, + { + "packageName": "main", + "capabilityName": "REFLECT", + "capability": "CAPABILITY_REFLECT", + "depPath": "github.com/pelletier/go-toml/v2/cmd/jsontoml.convert (*github.com/pelletier/go-toml/v2.Encoder).Encode (*github.com/pelletier/go-toml/v2.Encoder).encode reflect.Zero", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/jsontoml.convert", + "package": "github.com/pelletier/go-toml/v2/cmd/jsontoml" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Encoder).Encode", + "site": { + "filename": "main.go", + "line": "65", + "column": "17" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Encoder).encode", + "site": { + "filename": "marshaler.go", + "line": "186", + "column": "22" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "reflect.Zero", + "site": { + "filename": "marshaler.go", + "line": "321", + "column": "42" + }, + "package": "reflect" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/jsontoml", + "capabilityType": "CAPABILITY_TYPE_TRANSITIVE" + }, + { + "packageName": "main", + "capabilityName": "REFLECT", + "capability": "CAPABILITY_REFLECT", + "depPath": "github.com/pelletier/go-toml/v2/cmd/tomljson.convert (*github.com/pelletier/go-toml/v2.Decoder).Decode (*github.com/pelletier/go-toml/v2.decoder).FromParser (reflect.Value).Set", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/tomljson.convert", + "package": "github.com/pelletier/go-toml/v2/cmd/tomljson" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Decoder).Decode", + "site": { + "filename": "main.go", + "line": "50", + "column": "17" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.decoder).FromParser", + "site": { + "filename": "unmarshaler.go", + "line": "136", + "column": "23" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(reflect.Value).Set", + "site": { + "filename": "unmarshaler.go", + "line": "240", + "column": "8" + }, + "package": "reflect" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/tomljson", + "capabilityType": "CAPABILITY_TYPE_TRANSITIVE" + }, + { + "packageName": "main", + "capabilityName": "REFLECT", + "capability": "CAPABILITY_REFLECT", + "depPath": "github.com/pelletier/go-toml/v2/cmd/tomll.convert (*github.com/pelletier/go-toml/v2.Encoder).Encode (*github.com/pelletier/go-toml/v2.Encoder).encode reflect.Zero", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/tomll.convert", + "package": "github.com/pelletier/go-toml/v2/cmd/tomll" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Encoder).Encode", + "site": { + "filename": "main.go", + "line": "57", + "column": "17" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Encoder).encode", + "site": { + "filename": "marshaler.go", + "line": "186", + "column": "22" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "reflect.Zero", + "site": { + "filename": "marshaler.go", + "line": "321", + "column": "42" + }, + "package": "reflect" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/tomll", + "capabilityType": "CAPABILITY_TYPE_TRANSITIVE" + }, + { + "packageName": "main", + "capabilityName": "REFLECT", + "capability": "CAPABILITY_REFLECT", + "depPath": "github.com/pelletier/go-toml/v2/cmd/tomltestgen.main (*text/template.Template).Execute (*text/template.Template).execute", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/cmd/tomltestgen.main", + "package": "github.com/pelletier/go-toml/v2/cmd/tomltestgen" + }, + { + "name": "(*text/template.Template).Execute", + "site": { + "filename": "main.go", + "line": "165", + "column": "18" + }, + "package": "text/template" + }, + { + "name": "(*text/template.Template).execute", + "site": { + "filename": "exec.go", + "line": "207", + "column": "18" + }, + "package": "text/template" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/cmd/tomltestgen", + "capabilityType": "CAPABILITY_TYPE_DIRECT" + }, + { + "packageName": "cli", + "capabilityName": "REFLECT", + "capability": "CAPABILITY_REFLECT", + "depPath": "(*github.com/pelletier/go-toml/v2/internal/cli.Program).Execute (*github.com/pelletier/go-toml/v2/internal/cli.Program).main (*github.com/pelletier/go-toml/v2/internal/cli.Program).run github.com/pelletier/go-toml/v2/cmd/jsontoml.convert (*github.com/pelletier/go-toml/v2.Encoder).Encode (*github.com/pelletier/go-toml/v2.Encoder).encode reflect.Zero", + "path": [ + { + "name": "(*github.com/pelletier/go-toml/v2/internal/cli.Program).Execute", + "package": "github.com/pelletier/go-toml/v2/internal/cli" + }, + { + "name": "(*github.com/pelletier/go-toml/v2/internal/cli.Program).main", + "site": { + "filename": "cli.go", + "line": "28", + "column": "16" + }, + "package": "github.com/pelletier/go-toml/v2/internal/cli" + }, + { + "name": "(*github.com/pelletier/go-toml/v2/internal/cli.Program).run", + "site": { + "filename": "cli.go", + "line": "32", + "column": "14" + }, + "package": "github.com/pelletier/go-toml/v2/internal/cli" + }, + { + "name": "github.com/pelletier/go-toml/v2/cmd/jsontoml.convert", + "site": { + "filename": "cli.go", + "line": "60", + "column": "13" + }, + "package": "github.com/pelletier/go-toml/v2/cmd/jsontoml" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Encoder).Encode", + "site": { + "filename": "main.go", + "line": "65", + "column": "17" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Encoder).encode", + "site": { + "filename": "marshaler.go", + "line": "186", + "column": "22" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "reflect.Zero", + "site": { + "filename": "marshaler.go", + "line": "321", + "column": "42" + }, + "package": "reflect" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/internal/cli", + "capabilityType": "CAPABILITY_TYPE_TRANSITIVE" + }, + { + "packageName": "testsuite", + "capabilityName": "REFLECT", + "capability": "CAPABILITY_REFLECT", + "depPath": "github.com/pelletier/go-toml/v2/internal/testsuite.DecodeStdin (*github.com/pelletier/go-toml/v2.Decoder).Decode (*github.com/pelletier/go-toml/v2.decoder).FromParser (reflect.Value).Set", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/internal/testsuite.DecodeStdin", + "package": "github.com/pelletier/go-toml/v2/internal/testsuite" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.Decoder).Decode", + "site": { + "filename": "testsuite.go", + "line": "39", + "column": "44" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.decoder).FromParser", + "site": { + "filename": "unmarshaler.go", + "line": "136", + "column": "23" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(reflect.Value).Set", + "site": { + "filename": "unmarshaler.go", + "line": "240", + "column": "8" + }, + "package": "reflect" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/internal/testsuite", + "capabilityType": "CAPABILITY_TYPE_TRANSITIVE" + }, + { + "packageName": "ossfuzz", + "capabilityName": "REFLECT", + "capability": "CAPABILITY_REFLECT", + "depPath": "github.com/pelletier/go-toml/v2/ossfuzz.FuzzToml github.com/pelletier/go-toml/v2.Unmarshal (*github.com/pelletier/go-toml/v2.decoder).FromParser (reflect.Value).Set", + "path": [ + { + "name": "github.com/pelletier/go-toml/v2/ossfuzz.FuzzToml", + "package": "github.com/pelletier/go-toml/v2/ossfuzz" + }, + { + "name": "github.com/pelletier/go-toml/v2.Unmarshal", + "site": { + "filename": "fuzz.go", + "line": "23", + "column": "23" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(*github.com/pelletier/go-toml/v2.decoder).FromParser", + "site": { + "filename": "unmarshaler.go", + "line": "25", + "column": "21" + }, + "package": "github.com/pelletier/go-toml/v2" + }, + { + "name": "(reflect.Value).Set", + "site": { + "filename": "unmarshaler.go", + "line": "240", + "column": "8" + }, + "package": "reflect" + } + ], + "packageDir": "github.com/pelletier/go-toml/v2/ossfuzz", + "capabilityType": "CAPABILITY_TYPE_TRANSITIVE" + } + ], + "packageInfo": [ + { + "path": "github.com/pelletier/go-toml/v2" + }, + { + "path": "github.com/pelletier/go-toml/v2/benchmark" + }, + { + "path": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-decoder" + }, + { + "path": "github.com/pelletier/go-toml/v2/cmd/gotoml-test-encoder" + }, + { + "path": "github.com/pelletier/go-toml/v2/cmd/jsontoml" + }, + { + "path": "github.com/pelletier/go-toml/v2/cmd/tomljson" + }, + { + "path": "github.com/pelletier/go-toml/v2/cmd/tomll" + }, + { + "path": "github.com/pelletier/go-toml/v2/cmd/tomltestgen" + }, + { + "path": "github.com/pelletier/go-toml/v2/internal/assert" + }, + { + "path": "github.com/pelletier/go-toml/v2/internal/characters" + }, + { + "path": "github.com/pelletier/go-toml/v2/internal/cli" + }, + { + "path": "github.com/pelletier/go-toml/v2/internal/imported_tests" + }, + { + "path": "github.com/pelletier/go-toml/v2/internal/testsuite" + }, + { + "path": "github.com/pelletier/go-toml/v2/internal/tracker" + }, + { + "path": "github.com/pelletier/go-toml/v2/ossfuzz" + }, + { + "path": "github.com/pelletier/go-toml/v2/unstable" + } + ] +}