From a20abe5f1b5b6c82027c825b1ab9b51887948aa9 Mon Sep 17 00:00:00 2001 From: Reuven Harrison Date: Tue, 30 May 2023 09:07:55 +0300 Subject: [PATCH] fix crash on load (#795) --- openapi3/issue794_test.go | 15 +++++++++++++++ openapi3/loader.go | 3 +++ openapi3/testdata/issue794.yml | 13 +++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 openapi3/issue794_test.go create mode 100644 openapi3/testdata/issue794.yml diff --git a/openapi3/issue794_test.go b/openapi3/issue794_test.go new file mode 100644 index 000000000..4958d29d7 --- /dev/null +++ b/openapi3/issue794_test.go @@ -0,0 +1,15 @@ +package openapi3 + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestCrashOnLoad(t *testing.T) { + loader := NewLoader() + doc, err := loader.LoadFromFile("testdata/issue794.yml") + require.NoError(t, err) + err = doc.Validate(loader.Context) + require.NoError(t, err) +} diff --git a/openapi3/loader.go b/openapi3/loader.go index 4a14f67f0..3b50a64e4 100644 --- a/openapi3/loader.go +++ b/openapi3/loader.go @@ -615,6 +615,9 @@ func (loader *Loader) resolveRequestBodyRef(doc *T, component *RequestBodyRef, d } for _, contentType := range value.Content { + if contentType == nil { + continue + } examples := make([]string, 0, len(contentType.Examples)) for name := range contentType.Examples { examples = append(examples, name) diff --git a/openapi3/testdata/issue794.yml b/openapi3/testdata/issue794.yml new file mode 100644 index 000000000..3cd4dc776 --- /dev/null +++ b/openapi3/testdata/issue794.yml @@ -0,0 +1,13 @@ +openapi: 3.0.1 +info: + title: Swagger API + version: v1 +paths: + /test: + post: + requestBody: + content: + application/json: + responses: + "200": + description: description