mirror of
https://github.com/moby/moby.git
synced 2026-01-11 18:51:37 +00:00
daemon: buildCreateEndpointOptions: fix panic with "publish all"
This code was added in85b260fba8, but didn't account for maps.Clone returning a `nil` map if the map cloned was `nil`. This could lead to a panic, similar to the panic that was fixed in 7517464283d29969c4d3615397b369abd99ce395; panic: assignment to entry in nil map goroutine 498 [running]: github.com/moby/moby/v2/daemon.buildPortsRelatedCreateEndpointOptions(0x400042f348, 0xaaaabcc8f458?, 0x40006feb40) /root/build-deb/engine/daemon/network.go:1047 +0x844 github.com/moby/moby/v2/daemon.buildCreateEndpointOptions(0x400042f348, 0x4001015040, 0x400027d320, 0x40006feb40, {0x0, 0x0, 0x4001506cb8?}) /root/build-deb/engine/daemon/network.go:988 +0x20c github.com/moby/moby/v2/daemon.(*Daemon).connectToNetwork(0x4000898008, {0xaaaabe21d9f8, 0x4000f12b10}, 0x400089a008, 0x400042f348, {0x400077a9f0, 0x6}, 0x400027d320) /root/build-deb/engine/daemon/container_operations.go:738 +0x66c github.com/moby/moby/v2/daemon.(*Daemon).allocateNetwork(0x4000898008, {0xaaaabe21d9f8, 0x4000f12b10}, 0x400089a008, 0x400042f348) /root/build-deb/engine/daemon/container_operations.go:421 +0x298 github.com/moby/moby/v2/daemon.(*Daemon).initializeCreatedTask(0x4000898008, {0xaaaabe21d9f8, 0x4000f12b10}, 0x400089a008, {0xaaaabe23dc60, 0x4000eb21c8}, 0x400042f348, 0xaaaabd4db3df?) /root/build-deb/engine/daemon/start_linux.go:37 +0x260 github.com/moby/moby/v2/daemon.(*Daemon).containerStart(0x4000898008, {0xaaaabe21d9c0, 0xaaaabfa05300}, 0x400089a008, 0x400042f348, {0x0, 0x0}, {0x0, 0x0}, 0x1) /root/build-deb/engine/daemon/start.go:242 +0xba8 github.com/moby/moby/v2/daemon.(*Daemon).restore.func4(0x400042f348, 0x400117f1f0) /root/build-deb/engine/daemon/daemon.go:633 +0x308 created by github.com/moby/moby/v2/daemon.(*Daemon).restore in goroutine 1 /root/build-deb/engine/daemon/daemon.go:607 +0x5ec Signed-off-by: Sebastiaan van Stijn <github@gone.nl> (cherry picked from commit695010ba2e) Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
This commit is contained in:
committed by
Paweł Gronowski
parent
05a5be917d
commit
5898ee60f4
@@ -1038,10 +1038,13 @@ func buildPortsRelatedCreateEndpointOptions(c *container.Container, n *libnetwor
|
||||
)
|
||||
|
||||
ports := c.HostConfig.PortBindings
|
||||
if c.HostConfig.PublishAllPorts {
|
||||
if c.HostConfig.PublishAllPorts && len(c.Config.ExposedPorts) > 0 {
|
||||
// Add exposed ports to a copy of the map to make sure a "publishedPorts" entry is created
|
||||
// for each exposed port, even if there's no specific binding.
|
||||
ports = maps.Clone(c.HostConfig.PortBindings)
|
||||
if ports == nil {
|
||||
ports = networktypes.PortMap{}
|
||||
}
|
||||
for p := range c.Config.ExposedPorts {
|
||||
if _, exists := ports[p]; !exists {
|
||||
ports[p] = nil
|
||||
|
||||
Reference in New Issue
Block a user