Open filipebreda opened 2 months ago
restish --version dev-2024-04-21-17:50
When hash := items.GoLow().Hash() is called, libopenapi considers !s.Default.IsEmpty() to be true, I assume bcause it is defined in the openapi file, proceeding to pass a nil value low.GenerateHashString(s.Default.Value).
hash := items.GoLow().Hash()
!s.Default.IsEmpty()
low.GenerateHashString(s.Default.Value)
--- FAIL: TestLoader (0.01s) --- FAIL: TestLoader/petstore (0.00s) panic: runtime error: invalid memory address or nil pointer dereference [recovered] panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x98 pc=0x6f4623] goroutine 80 [running]: testing.tRunner.func1.2({0xc324a0, 0x13915b0}) /usr/local/go/src/testing/testing.go:1545 +0x238 testing.tRunner.func1() /usr/local/go/src/testing/testing.go:1548 +0x397 panic({0xc324a0?, 0x13915b0?}) /usr/local/go/src/runtime/panic.go:914 +0x21f github.com/pb33f/libopenapi/datamodel/low.GenerateHashString({0x0, 0x0}) /home/filipe/go/pkg/mod/github.com/pb33f/libopenapi@v0.9.7/datamodel/low/extraction_functions.go:707 +0x83 github.com/pb33f/libopenapi/datamodel/low/base.(*Schema).Hash(0xc0001b0000) /home/filipe/go/pkg/mod/github.com/pb33f/libopenapi@v0.9.7/datamodel/low/base/schema.go:249 +0x18fb github.com/pb33f/libopenapi/datamodel/low/base.(*SchemaProxy).Hash(0xc000168b40) /home/filipe/go/pkg/mod/github.com/pb33f/libopenapi@v0.9.7/datamodel/low/base/schema_proxy.go:146 +0x105 github.com/pb33f/libopenapi/datamodel/low.GenerateHashString({0xc8bc80, 0xc000168b40}) /home/filipe/go/pkg/mod/github.com/pb33f/libopenapi@v0.9.7/datamodel/low/extraction_functions.go:703 +0x1e2 github.com/pb33f/libopenapi/datamodel/low/base.(*Schema).Hash(0xc000436800) /home/filipe/go/pkg/mod/github.com/pb33f/libopenapi@v0.9.7/datamodel/low/base/schema.go:312 +0x2cdc github.com/danielgtaylor/restish/openapi.renderSchemaInternal(0xc0003d2a00, {0x0, 0x0}, 0x0, 0xc069e0?) /home/filipe/Projects/restish/openapi/schema.go:170 +0x138d github.com/danielgtaylor/restish/openapi.renderSchema(...) /home/filipe/Projects/restish/openapi/schema.go:56 github.com/danielgtaylor/restish/openapi.openapiOperation(_, {_, _}, _, _, _) /home/filipe/Projects/restish/openapi/openapi.go:516 +0x2af3 github.com/danielgtaylor/restish/openapi.loadOpenAPI3({0xee1080, 0xc0002309d0}, 0x58d629?, 0xc000618510, 0xd354ea?) /home/filipe/Projects/restish/openapi/openapi.go:618 +0x16a5 github.com/danielgtaylor/restish/openapi.(*loader).Load(_, {{0xd2089b, 0x4}, {0x0, 0x0}, 0x0, {0xd208a2, 0xf}, {0x0, 0x0}, ...}, ...) /home/filipe/Projects/restish/openapi/openapi.go:803 +0x19c github.com/danielgtaylor/restish/openapi.TestLoader.func1(0xc0005429c0?) /home/filipe/Projects/restish/openapi/openapi_test.go:233 +0x466 testing.tRunner(0xc0005429c0, 0xc000230490) /usr/local/go/src/testing/testing.go:1595 +0xff created by testing.(*T).Run in goroutine 613 /usr/local/go/src/testing/testing.go:1648 +0x3ad exit status 2 FAIL github.com/danielgtaylor/restish/openapi 0.026s
It's reproducible by adjusting openapi/testdata and running go test.
openapi/testdata
go test
diff --git a/openapi/testdata/petstore/openapi.yaml b/openapi/testdata/petstore/openapi.yaml index e0f4553..763a238 100644 --- a/openapi/testdata/petstore/openapi.yaml +++ b/openapi/testdata/petstore/openapi.yaml @@ -86,6 +86,8 @@ components: type: integer format: int64 name: + nullable: true + default: null type: string tag: type: string
I checked the libopenapi repository and the code which is causing this issue has been changed, meaning a dependency upgrade might be in order.
Cheers.
When
hash := items.GoLow().Hash()
is called, libopenapi considers!s.Default.IsEmpty()
to be true, I assume bcause it is defined in the openapi file, proceeding to pass a nil valuelow.GenerateHashString(s.Default.Value)
.It's reproducible by adjusting
openapi/testdata
and runninggo test
.I checked the libopenapi repository and the code which is causing this issue has been changed, meaning a dependency upgrade might be in order.
Cheers.