From 8c5f96a225122bb4c07792715929323d993a45cd Mon Sep 17 00:00:00 2001 From: Michael Zabka Date: Sat, 5 Nov 2022 21:34:57 +0000 Subject: [PATCH] Fix possible nil in extended docker-compose.yml configuration in practice, the missing service name in extended configuration means that nothing is extended current state was that the docker-compose command fails with following error: panic: interface conversion: interface {} is nil, not map[string]interface {} goroutine 1 [running]: github.com/compose-spec/compose-go/loader.loadServiceWithExtends({0xc0007c4230, 0x50}, {0xc000502880, 0x7}, 0xc0005fc720?, {0xc0007c4230, 0x40}, 0xc0004d22d0?, 0xc000480390, 0xc0007cb1f8) github.com/compose-spec/compose-go@v1.6.0/loader/loader.go:511 +0x6ab Signed-off-by: Michael Zabka --- loader/loader.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/loader/loader.go b/loader/loader.go index 64b691ba..7ac67613 100644 --- a/loader/loader.go +++ b/loader/loader.go @@ -515,6 +515,10 @@ func loadServiceWithExtends(filename, name string, servicesDict map[string]inter return nil, fmt.Errorf("cannot extend service %q in %s: service not found", name, filename) } + if target == nil { + target = map[string]interface{}{} + } + serviceConfig, err := LoadService(name, target.(map[string]interface{}), workingDir, lookupEnv, opts.ResolvePaths, opts.ConvertWindowsPaths) if err != nil { return nil, err