Skip to content

Commit 70fd025

Browse files
fredbiclaude
andauthored
feat: inject a confined document loader into flatten and schema analysis (#220)
Flattening and schema analysis resolve remote and relative $ref through the spec package loader, which by default is unsandboxed. A caller processing an untrusted specification had no way to confine that loading, exposing arbitrary file read and SSRF (the same class of issue addressed in go-openapi/spec). Add an injectable, option-aware loader to the two paths that actually load documents: - FlattenOpts.PathLoaderWithOptions, forwarded through ExpandOpts. This covers the whole flatten feature, since ExpandSpec, ResolveRefWithBase and DeepestRef all go through ExpandOpts. - SchemaOpts.PathLoaderWithOptions, threaded through AnalyzedSchema and the recursive Schema() calls; inferFromRef now uses spec.ExpandSchemaWithOptions (new in spec v0.22.8) instead of the default-settings ExpandSchema. Flatten's Schema() call sites propagate the loader too. Set either to a confined loader (e.g. built with loading.WithRoot / loading.WithHTTPClient, or a restricted loader from go-openapi/loads) to safely process untrusted specs. Left nil, behavior is unchanged. The New() analyzer and the diff package were audited and do not load external documents (in-memory cataloguing and definition-map lookups only), so they need no loader. Bumps spec to v0.22.8 (for ExpandSchemaWithOptions) and aligns swag to v0.27.3; the testintegration module moves to spec v0.22.8 and loads v0.24.1. Signed-off-by: Frederic BIDON <fredbi@yahoo.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent dfeb1a3 commit 70fd025

8 files changed

Lines changed: 154 additions & 97 deletions

File tree

‎flatten.go‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ func nameInlinedSchemas(opts *FlattenOpts) error {
243243
continue
244244
}
245245

246-
asch, err := Schema(SchemaOpts{Schema: sch.Schema, Root: opts.Swagger(), BasePath: opts.BasePath})
246+
asch, err := Schema(SchemaOpts{Schema: sch.Schema, Root: opts.Swagger(), BasePath: opts.BasePath, PathLoaderWithOptions: opts.PathLoaderWithOptions})
247247
if err != nil {
248248
return ErrAtKey(key, err)
249249
}
@@ -657,7 +657,7 @@ func stripOAIGenForRef(opts *FlattenOpts, k string, r *newRef) (bool, error) {
657657

658658
// determine if the previous substitution did inline a complex schema
659659
if r.schema != nil && r.schema.Ref.String() == "" { // inline schema
660-
asch, err := Schema(SchemaOpts{Schema: r.schema, Root: opts.Swagger(), BasePath: opts.BasePath})
660+
asch, err := Schema(SchemaOpts{Schema: r.schema, Root: opts.Swagger(), BasePath: opts.BasePath, PathLoaderWithOptions: opts.PathLoaderWithOptions})
661661
if err != nil {
662662
return false, err
663663
}
@@ -761,7 +761,7 @@ func flattenAnonPointer(key string, v SchemaRef, refsToReplace map[string]Schema
761761
debugLog("namePointers at %s for %s", key, v.Ref.String())
762762

763763
// qualify the expanded schema
764-
asch, ers := Schema(SchemaOpts{Schema: v.Schema, Root: opts.Swagger(), BasePath: opts.BasePath})
764+
asch, ers := Schema(SchemaOpts{Schema: v.Schema, Root: opts.Swagger(), BasePath: opts.BasePath, PathLoaderWithOptions: opts.PathLoaderWithOptions})
765765
if ers != nil {
766766
return ErrAtKey(key, ers)
767767
}

‎flatten_options.go‎

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44
package analysis
55

66
import (
7+
"encoding/json"
78
"log"
89

910
"github.com/go-openapi/spec"
11+
"github.com/go-openapi/swag/loading"
1012
"github.com/go-openapi/swag/mangling"
1113
)
1214

@@ -33,16 +35,27 @@ type FlattenOpts struct {
3335
KeepNames bool // Do not attempt to jsonify names from references when flattening
3436
ManglerOpts []mangling.Option // Options for the name mangler used to jsonify names
3537

38+
// PathLoaderWithOptions injects the document loader used to resolve remote and relative $ref
39+
// while flattening or expanding the specification. It matches the option-aware loader signature
40+
// of github.com/go-openapi/swag/loading (and go-openapi/loads).
41+
//
42+
// Security: when flattening a specification obtained from an untrusted source, set this to a
43+
// confined loader — for example one built with loading.WithRoot (to confine local reads) and
44+
// loading.WithHTTPClient (to restrict remote fetches), or a restricted loader from
45+
// go-openapi/loads. Left nil, the spec package default (unsandboxed) loader is used.
46+
PathLoaderWithOptions func(string, ...loading.Option) (json.RawMessage, error)
47+
3648
/* Extra keys */
3749
_ struct{} // require keys
3850
}
3951

4052
// ExpandOpts creates a spec.[spec.ExpandOptions] to configure expanding a specification document.
4153
func (f *FlattenOpts) ExpandOpts(skipSchemas bool) *spec.ExpandOptions {
4254
return &spec.ExpandOptions{
43-
RelativeBase: f.BasePath,
44-
SkipSchemas: skipSchemas,
45-
ContinueOnError: f.ContinueOnError,
55+
RelativeBase: f.BasePath,
56+
SkipSchemas: skipSchemas,
57+
ContinueOnError: f.ContinueOnError,
58+
PathLoaderWithOptions: f.PathLoaderWithOptions,
4659
}
4760
}
4861

‎go.mod‎

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,23 @@ module github.com/go-openapi/analysis
22

33
require (
44
github.com/go-openapi/jsonpointer v1.0.0
5-
github.com/go-openapi/spec v0.22.6
5+
github.com/go-openapi/spec v0.22.8
66
github.com/go-openapi/strfmt v0.27.0
7-
github.com/go-openapi/swag/jsonutils v0.27.0
8-
github.com/go-openapi/swag/loading v0.27.0
9-
github.com/go-openapi/swag/mangling v0.27.0
7+
github.com/go-openapi/swag/jsonutils v0.27.3
8+
github.com/go-openapi/swag/loading v0.27.3
9+
github.com/go-openapi/swag/mangling v0.27.3
1010
github.com/go-openapi/testify/v2 v2.6.0
1111
golang.org/x/text v0.40.0
1212
)
1313

1414
require (
1515
github.com/go-openapi/errors v0.22.8 // indirect
16-
github.com/go-openapi/jsonreference v0.21.6 // indirect
17-
github.com/go-openapi/swag/conv v0.27.0 // indirect
18-
github.com/go-openapi/swag/jsonname v0.26.1 // indirect
19-
github.com/go-openapi/swag/stringutils v0.26.1 // indirect
20-
github.com/go-openapi/swag/typeutils v0.27.0 // indirect
21-
github.com/go-openapi/swag/yamlutils v0.27.0 // indirect
16+
github.com/go-openapi/jsonreference v1.0.0 // indirect
17+
github.com/go-openapi/swag/conv v0.27.3 // indirect
18+
github.com/go-openapi/swag/pools v0.27.3 // indirect
19+
github.com/go-openapi/swag/stringutils v0.27.3 // indirect
20+
github.com/go-openapi/swag/typeutils v0.27.3 // indirect
21+
github.com/go-openapi/swag/yamlutils v0.27.3 // indirect
2222
github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
2323
github.com/google/uuid v1.6.0 // indirect
2424
github.com/oklog/ulid/v2 v2.1.1 // indirect

‎go.sum‎

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,30 @@ github.com/go-openapi/errors v0.22.8 h1:oP7sW7TWc3wFFjrzzj0nI83H2qMBkNjNfSd+XRej
22
github.com/go-openapi/errors v0.22.8/go.mod h1:BuUoHcYrU6E7V9gfj1I5wLQqgtIHnup/alXZ8KdgQ0w=
33
github.com/go-openapi/jsonpointer v1.0.0 h1:kR9tHqY0CtZaOPVFm622dPVNhrvYpwr4uCxgL3h1H8s=
44
github.com/go-openapi/jsonpointer v1.0.0/go.mod h1:Z3rw7dWu1p9IgitXCFamSlA5lmDiklEB6vkaxcNZW5Y=
5-
github.com/go-openapi/jsonreference v0.21.6 h1:NZ5nGfnaM1n4I43Xjm1e5/M2GjOwQwndQz22uhxwD+Y=
6-
github.com/go-openapi/jsonreference v0.21.6/go.mod h1:xzbgtQ3ZbWxvET3AxdzCJlJt6vkovbf+IfSPJjD0tUY=
7-
github.com/go-openapi/spec v0.22.6 h1:Tyy1pLaNCM8GBCFLoGYLonjJi6zykqyLCjXLc19ZPic=
8-
github.com/go-openapi/spec v0.22.6/go.mod h1:HZvTHat+iH0PALQRWhrqIHtU/PEqxqd89fu0MxGlMeM=
5+
github.com/go-openapi/jsonreference v1.0.0 h1:jlmTr6torcd1YgDQvSfNmRtKzYDO4FGBkrAdlAVWnpY=
6+
github.com/go-openapi/jsonreference v1.0.0/go.mod h1:jtwdyGbJk0Xhe5Y+rwtglQP6Sb1WZST4rT32LWB+sv0=
7+
github.com/go-openapi/spec v0.22.8 h1:Nx5XYgR0nTjRLHdtTp+mpdw/QhVTiDXMNDRrhkUrgaI=
8+
github.com/go-openapi/spec v0.22.8/go.mod h1:b/mNUYIOQOyIiUzUzXEE8xzyZqf93KvM9hQGP91yfl0=
99
github.com/go-openapi/strfmt v0.27.0 h1:kbcTeaD9TXuXD0hhMXzuYa1sdTo6+dWGvwjW93E80IM=
1010
github.com/go-openapi/strfmt v0.27.0/go.mod h1:s/qhDqfY72irigXUGJmtgid2Rm+3tnz3k8hZaRmvWYc=
11-
github.com/go-openapi/swag/conv v0.27.0 h1:EKOH4feXrvdo8DbSsXSAqRT8fz1epEnS5O2IfXUOzE8=
12-
github.com/go-openapi/swag/conv v0.27.0/go.mod h1:pfiv0uKQTbaGApk8Zs/lZV3uSjmSpa2FO1y183YngN8=
13-
github.com/go-openapi/swag/jsonname v0.26.1 h1:VReupaV6WxlAsCn0e4DUfgV6bPmINnPpyJDLqSfNPcE=
14-
github.com/go-openapi/swag/jsonname v0.26.1/go.mod h1:OvdW6BoWoj33pTfi7x9vFrgmT+fk7aw0BRwvCE0YOuc=
15-
github.com/go-openapi/swag/jsonutils v0.27.0 h1:VYtd9jEQYeU4j8q5vdn5KWotF4vKywhGdMBrALtAsfE=
16-
github.com/go-openapi/swag/jsonutils v0.27.0/go.mod h1:U7pb8AGuwhok3RDicHeHwSG4L3PXSq6PAL98Aon632g=
17-
github.com/go-openapi/swag/jsonutils/fixtures_test v0.27.0 h1:+d7C7Ur/SsGg/UZ9G0JEovnfRqtMNZCJQGKc2h/ojoE=
18-
github.com/go-openapi/swag/jsonutils/fixtures_test v0.27.0/go.mod h1:mofwUWx70wvskwESqRJ//k/9kURmCgyJl5m5Ppoh5kY=
19-
github.com/go-openapi/swag/loading v0.27.0 h1:s8DA9aPEdFH6OluHUYUn3DnIuoTdyWs9RwffXBUfyeI=
20-
github.com/go-openapi/swag/loading v0.27.0/go.mod h1:VOz+Jg6UGGywcmRvYsI4fvtp+bd7NfioseGEPleYdA4=
21-
github.com/go-openapi/swag/mangling v0.27.0 h1:rpPJuqQHa6z2pDiP3iIpXOyNXlSs9cQCxnJSAxzdfOc=
22-
github.com/go-openapi/swag/mangling v0.27.0/go.mod h1:jtBE2+V+3pILxOR7Vgce+Cwp6A2PgZbvVqfNntbVs0w=
23-
github.com/go-openapi/swag/stringutils v0.26.1 h1:f88uYyTso7TnHrKM/bUBsQ5e2wKf37cpgo6pvbzd9yU=
24-
github.com/go-openapi/swag/stringutils v0.26.1/go.mod h1:Sc6d3bU8fgk5AyZR8/8jEQ+Is/Ald+TD/IIggPN8UJk=
25-
github.com/go-openapi/swag/typeutils v0.27.0 h1:aCf4MSGo8NLwZP8Q6t32DWLJSvl/WwNqgmEG+xJ6v2o=
26-
github.com/go-openapi/swag/typeutils v0.27.0/go.mod h1:Srm0xFNRZ1Y+vCxJclo5qzx8aj+1pAKda/YfFPrG0dQ=
27-
github.com/go-openapi/swag/yamlutils v0.27.0 h1:bQ6eAMil5X9tdcf7dMn4t15alzG6jddnrKPuKa/zxKM=
28-
github.com/go-openapi/swag/yamlutils v0.27.0/go.mod h1:yRfIo7qqVkmJRQjX8exjA3AfcI8rH1KDNPsTparoCv4=
11+
github.com/go-openapi/swag/conv v0.27.3 h1:iqJFmGEjmX3AY0lSszABFqRVqOSt99XS0LzNIMJYuhU=
12+
github.com/go-openapi/swag/conv v0.27.3/go.mod h1:nPRmN6jgNme99hpf+nM0auDZGALWIqlwhisKPK/bQhQ=
13+
github.com/go-openapi/swag/jsonutils v0.27.3 h1:1DEz+O82frtSMBcos/7XIn1GnpNTbsD4Bru4Dc/uhRc=
14+
github.com/go-openapi/swag/jsonutils v0.27.3/go.mod h1:qiDCoQvzkMxrV3G8FLEdIU5L+EFYc0zcDOHWT3Yofvo=
15+
github.com/go-openapi/swag/jsonutils/fixtures_test v0.27.3 h1:h/eT9kmGCDdFLJF29lOhzLtF0FmP1AX2MhLJWVebsb8=
16+
github.com/go-openapi/swag/jsonutils/fixtures_test v0.27.3/go.mod h1:mofwUWx70wvskwESqRJ//k/9kURmCgyJl5m5Ppoh5kY=
17+
github.com/go-openapi/swag/loading v0.27.3 h1:L9nQkEgzU7QgFQL+pLEMfGUKxeM4pWwGwbET9Z3weW0=
18+
github.com/go-openapi/swag/loading v0.27.3/go.mod h1:rJ0NeaKsF4CVPnMGjPQl7JlSHzvD0bc2DKXLss1hiuE=
19+
github.com/go-openapi/swag/mangling v0.27.3 h1:gRzzD1PAUoLTtGMgI3KpBmCSOlTuLTFWnviLxLcTnyg=
20+
github.com/go-openapi/swag/mangling v0.27.3/go.mod h1:jtBE2+V+3pILxOR7Vgce+Cwp6A2PgZbvVqfNntbVs0w=
21+
github.com/go-openapi/swag/pools v0.27.3 h1:gXjImP3F6/56wRRcFgEPld084Y6u2gs21ikPBt8NKBk=
22+
github.com/go-openapi/swag/pools v0.27.3/go.mod h1:kVQefhSK5RWuRe7BXsL8htgBPAMpN7HDGpGEknqugeE=
23+
github.com/go-openapi/swag/stringutils v0.27.3 h1:Ru28hnbAvN5wycALQYy8IobHvASq+FUFMlp1QzLM0JI=
24+
github.com/go-openapi/swag/stringutils v0.27.3/go.mod h1:lzRN95CxXmA03XcDWHLOb6nOMcxCqR5rGY0lOgsfRoM=
25+
github.com/go-openapi/swag/typeutils v0.27.3 h1:l6SSrx5eR5/WVwrGNzN6bQ9WqL04mrxNBl9YgQ3rcJ4=
26+
github.com/go-openapi/swag/typeutils v0.27.3/go.mod h1:Srm0xFNRZ1Y+vCxJclo5qzx8aj+1pAKda/YfFPrG0dQ=
27+
github.com/go-openapi/swag/yamlutils v0.27.3 h1:cRFCAoYtslYn9L9T0xWryHy1t7c1MACC+DMj3CLvwvs=
28+
github.com/go-openapi/swag/yamlutils v0.27.3/go.mod h1:6JYBGj8sw/NawMllyZY+cTA8Mzk2etS3ZBASdcyPsiU=
2929
github.com/go-openapi/testify/enable/yaml/v2 v2.6.0 h1:gGHwAJ0R/5jU8BEGDbfRNR3hL68dAVi84WuOApp29B0=
3030
github.com/go-openapi/testify/enable/yaml/v2 v2.6.0/go.mod h1:tY+St1SGq4NFl0QIqdTY4aEdbChAHxhyB77XQi9iJCo=
3131
github.com/go-openapi/testify/v2 v2.6.0 h1:5PKH2HE7YJ/LuRPQGvSxBRlFXNQhSetBLlGAgUEu3ug=

‎internal/testintegration/go.mod‎

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,25 @@ module github.com/go-openapi/analysis/internal/testintegration
33
go 1.25.0
44

55
require (
6-
github.com/go-openapi/analysis v0.25.2
7-
github.com/go-openapi/loads v0.24.0
8-
github.com/go-openapi/spec v0.22.6
9-
github.com/go-openapi/swag/loading v0.27.0
6+
github.com/go-openapi/analysis v0.25.3
7+
github.com/go-openapi/loads v0.24.1
8+
github.com/go-openapi/spec v0.22.8
9+
github.com/go-openapi/swag/loading v0.27.3
1010
github.com/go-openapi/testify/v2 v2.6.0
1111
)
1212

1313
require (
1414
github.com/go-openapi/errors v0.22.8 // indirect
1515
github.com/go-openapi/jsonpointer v1.0.0 // indirect
16-
github.com/go-openapi/jsonreference v0.21.6 // indirect
16+
github.com/go-openapi/jsonreference v1.0.0 // indirect
1717
github.com/go-openapi/strfmt v0.27.0 // indirect
18-
github.com/go-openapi/swag/conv v0.27.0 // indirect
19-
github.com/go-openapi/swag/jsonname v0.26.1 // indirect
20-
github.com/go-openapi/swag/jsonutils v0.27.0 // indirect
21-
github.com/go-openapi/swag/mangling v0.27.0 // indirect
22-
github.com/go-openapi/swag/stringutils v0.26.1 // indirect
23-
github.com/go-openapi/swag/typeutils v0.27.0 // indirect
24-
github.com/go-openapi/swag/yamlutils v0.27.0 // indirect
18+
github.com/go-openapi/swag/conv v0.27.3 // indirect
19+
github.com/go-openapi/swag/jsonutils v0.27.3 // indirect
20+
github.com/go-openapi/swag/mangling v0.27.3 // indirect
21+
github.com/go-openapi/swag/pools v0.27.3 // indirect
22+
github.com/go-openapi/swag/stringutils v0.27.3 // indirect
23+
github.com/go-openapi/swag/typeutils v0.27.3 // indirect
24+
github.com/go-openapi/swag/yamlutils v0.27.3 // indirect
2525
github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
2626
github.com/google/uuid v1.6.0 // indirect
2727
github.com/oklog/ulid/v2 v2.1.1 // indirect

‎internal/testintegration/go.sum‎

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,32 @@ github.com/go-openapi/errors v0.22.8 h1:oP7sW7TWc3wFFjrzzj0nI83H2qMBkNjNfSd+XRej
22
github.com/go-openapi/errors v0.22.8/go.mod h1:BuUoHcYrU6E7V9gfj1I5wLQqgtIHnup/alXZ8KdgQ0w=
33
github.com/go-openapi/jsonpointer v1.0.0 h1:kR9tHqY0CtZaOPVFm622dPVNhrvYpwr4uCxgL3h1H8s=
44
github.com/go-openapi/jsonpointer v1.0.0/go.mod h1:Z3rw7dWu1p9IgitXCFamSlA5lmDiklEB6vkaxcNZW5Y=
5-
github.com/go-openapi/jsonreference v0.21.6 h1:NZ5nGfnaM1n4I43Xjm1e5/M2GjOwQwndQz22uhxwD+Y=
6-
github.com/go-openapi/jsonreference v0.21.6/go.mod h1:xzbgtQ3ZbWxvET3AxdzCJlJt6vkovbf+IfSPJjD0tUY=
7-
github.com/go-openapi/loads v0.24.0 h1:4LLorXRPTzIN9V6ngMUZbAscsBOUBk3Oa8cClu/bFrQ=
8-
github.com/go-openapi/loads v0.24.0/go.mod h1:xQMgX+hw5xRAhGrcDXxeMw78IFqUpIzhleu3HqPhyF4=
9-
github.com/go-openapi/spec v0.22.6 h1:Tyy1pLaNCM8GBCFLoGYLonjJi6zykqyLCjXLc19ZPic=
10-
github.com/go-openapi/spec v0.22.6/go.mod h1:HZvTHat+iH0PALQRWhrqIHtU/PEqxqd89fu0MxGlMeM=
5+
github.com/go-openapi/jsonreference v1.0.0 h1:jlmTr6torcd1YgDQvSfNmRtKzYDO4FGBkrAdlAVWnpY=
6+
github.com/go-openapi/jsonreference v1.0.0/go.mod h1:jtwdyGbJk0Xhe5Y+rwtglQP6Sb1WZST4rT32LWB+sv0=
7+
github.com/go-openapi/loads v0.24.1 h1:oeiIolegnV9MtqfKHQwOeZ96vEwTFY5YxGMj3QpDeJw=
8+
github.com/go-openapi/loads v0.24.1/go.mod h1:Ijkjm2ljm+20aoIwp9smqNyFsTJoighhNcLvcZVxrwc=
9+
github.com/go-openapi/spec v0.22.8 h1:Nx5XYgR0nTjRLHdtTp+mpdw/QhVTiDXMNDRrhkUrgaI=
10+
github.com/go-openapi/spec v0.22.8/go.mod h1:b/mNUYIOQOyIiUzUzXEE8xzyZqf93KvM9hQGP91yfl0=
1111
github.com/go-openapi/strfmt v0.27.0 h1:kbcTeaD9TXuXD0hhMXzuYa1sdTo6+dWGvwjW93E80IM=
1212
github.com/go-openapi/strfmt v0.27.0/go.mod h1:s/qhDqfY72irigXUGJmtgid2Rm+3tnz3k8hZaRmvWYc=
13-
github.com/go-openapi/swag/conv v0.27.0 h1:EKOH4feXrvdo8DbSsXSAqRT8fz1epEnS5O2IfXUOzE8=
14-
github.com/go-openapi/swag/conv v0.27.0/go.mod h1:pfiv0uKQTbaGApk8Zs/lZV3uSjmSpa2FO1y183YngN8=
15-
github.com/go-openapi/swag/jsonname v0.26.1 h1:VReupaV6WxlAsCn0e4DUfgV6bPmINnPpyJDLqSfNPcE=
16-
github.com/go-openapi/swag/jsonname v0.26.1/go.mod h1:OvdW6BoWoj33pTfi7x9vFrgmT+fk7aw0BRwvCE0YOuc=
17-
github.com/go-openapi/swag/jsonutils v0.27.0 h1:VYtd9jEQYeU4j8q5vdn5KWotF4vKywhGdMBrALtAsfE=
18-
github.com/go-openapi/swag/jsonutils v0.27.0/go.mod h1:U7pb8AGuwhok3RDicHeHwSG4L3PXSq6PAL98Aon632g=
19-
github.com/go-openapi/swag/jsonutils/fixtures_test v0.27.0 h1:+d7C7Ur/SsGg/UZ9G0JEovnfRqtMNZCJQGKc2h/ojoE=
20-
github.com/go-openapi/swag/jsonutils/fixtures_test v0.27.0/go.mod h1:mofwUWx70wvskwESqRJ//k/9kURmCgyJl5m5Ppoh5kY=
21-
github.com/go-openapi/swag/loading v0.27.0 h1:s8DA9aPEdFH6OluHUYUn3DnIuoTdyWs9RwffXBUfyeI=
22-
github.com/go-openapi/swag/loading v0.27.0/go.mod h1:VOz+Jg6UGGywcmRvYsI4fvtp+bd7NfioseGEPleYdA4=
23-
github.com/go-openapi/swag/mangling v0.27.0 h1:rpPJuqQHa6z2pDiP3iIpXOyNXlSs9cQCxnJSAxzdfOc=
24-
github.com/go-openapi/swag/mangling v0.27.0/go.mod h1:jtBE2+V+3pILxOR7Vgce+Cwp6A2PgZbvVqfNntbVs0w=
25-
github.com/go-openapi/swag/stringutils v0.26.1 h1:f88uYyTso7TnHrKM/bUBsQ5e2wKf37cpgo6pvbzd9yU=
26-
github.com/go-openapi/swag/stringutils v0.26.1/go.mod h1:Sc6d3bU8fgk5AyZR8/8jEQ+Is/Ald+TD/IIggPN8UJk=
27-
github.com/go-openapi/swag/typeutils v0.27.0 h1:aCf4MSGo8NLwZP8Q6t32DWLJSvl/WwNqgmEG+xJ6v2o=
28-
github.com/go-openapi/swag/typeutils v0.27.0/go.mod h1:Srm0xFNRZ1Y+vCxJclo5qzx8aj+1pAKda/YfFPrG0dQ=
29-
github.com/go-openapi/swag/yamlutils v0.27.0 h1:bQ6eAMil5X9tdcf7dMn4t15alzG6jddnrKPuKa/zxKM=
30-
github.com/go-openapi/swag/yamlutils v0.27.0/go.mod h1:yRfIo7qqVkmJRQjX8exjA3AfcI8rH1KDNPsTparoCv4=
13+
github.com/go-openapi/swag/conv v0.27.3 h1:iqJFmGEjmX3AY0lSszABFqRVqOSt99XS0LzNIMJYuhU=
14+
github.com/go-openapi/swag/conv v0.27.3/go.mod h1:nPRmN6jgNme99hpf+nM0auDZGALWIqlwhisKPK/bQhQ=
15+
github.com/go-openapi/swag/jsonutils v0.27.3 h1:1DEz+O82frtSMBcos/7XIn1GnpNTbsD4Bru4Dc/uhRc=
16+
github.com/go-openapi/swag/jsonutils v0.27.3/go.mod h1:qiDCoQvzkMxrV3G8FLEdIU5L+EFYc0zcDOHWT3Yofvo=
17+
github.com/go-openapi/swag/jsonutils/fixtures_test v0.27.3 h1:h/eT9kmGCDdFLJF29lOhzLtF0FmP1AX2MhLJWVebsb8=
18+
github.com/go-openapi/swag/jsonutils/fixtures_test v0.27.3/go.mod h1:mofwUWx70wvskwESqRJ//k/9kURmCgyJl5m5Ppoh5kY=
19+
github.com/go-openapi/swag/loading v0.27.3 h1:L9nQkEgzU7QgFQL+pLEMfGUKxeM4pWwGwbET9Z3weW0=
20+
github.com/go-openapi/swag/loading v0.27.3/go.mod h1:rJ0NeaKsF4CVPnMGjPQl7JlSHzvD0bc2DKXLss1hiuE=
21+
github.com/go-openapi/swag/mangling v0.27.3 h1:gRzzD1PAUoLTtGMgI3KpBmCSOlTuLTFWnviLxLcTnyg=
22+
github.com/go-openapi/swag/mangling v0.27.3/go.mod h1:jtBE2+V+3pILxOR7Vgce+Cwp6A2PgZbvVqfNntbVs0w=
23+
github.com/go-openapi/swag/pools v0.27.3 h1:gXjImP3F6/56wRRcFgEPld084Y6u2gs21ikPBt8NKBk=
24+
github.com/go-openapi/swag/pools v0.27.3/go.mod h1:kVQefhSK5RWuRe7BXsL8htgBPAMpN7HDGpGEknqugeE=
25+
github.com/go-openapi/swag/stringutils v0.27.3 h1:Ru28hnbAvN5wycALQYy8IobHvASq+FUFMlp1QzLM0JI=
26+
github.com/go-openapi/swag/stringutils v0.27.3/go.mod h1:lzRN95CxXmA03XcDWHLOb6nOMcxCqR5rGY0lOgsfRoM=
27+
github.com/go-openapi/swag/typeutils v0.27.3 h1:l6SSrx5eR5/WVwrGNzN6bQ9WqL04mrxNBl9YgQ3rcJ4=
28+
github.com/go-openapi/swag/typeutils v0.27.3/go.mod h1:Srm0xFNRZ1Y+vCxJclo5qzx8aj+1pAKda/YfFPrG0dQ=
29+
github.com/go-openapi/swag/yamlutils v0.27.3 h1:cRFCAoYtslYn9L9T0xWryHy1t7c1MACC+DMj3CLvwvs=
30+
github.com/go-openapi/swag/yamlutils v0.27.3/go.mod h1:6JYBGj8sw/NawMllyZY+cTA8Mzk2etS3ZBASdcyPsiU=
3131
github.com/go-openapi/testify/enable/yaml/v2 v2.6.0 h1:gGHwAJ0R/5jU8BEGDbfRNR3hL68dAVi84WuOApp29B0=
3232
github.com/go-openapi/testify/enable/yaml/v2 v2.6.0/go.mod h1:tY+St1SGq4NFl0QIqdTY4aEdbChAHxhyB77XQi9iJCo=
3333
github.com/go-openapi/testify/v2 v2.6.0 h1:5PKH2HE7YJ/LuRPQGvSxBRlFXNQhSetBLlGAgUEu3ug=

0 commit comments

Comments
 (0)