Browse Source

Merge pull request #36077 from yongtang/35752-verifyNetworking

Verify NetworkingConfig to make sure EndpointSettings is not nil
Yong Tang 7 years ago
parent
commit
914ce4fde7
2 changed files with 26 additions and 2 deletions
  1. 5 2
      daemon/create.go
  2. 21 0
      daemon/create_test.go

+ 5 - 2
daemon/create.go

@@ -322,8 +322,11 @@ func verifyNetworkingConfig(nwConfig *networktypes.NetworkingConfig) error {
 		return nil
 	}
 	if len(nwConfig.EndpointsConfig) == 1 {
-		for _, v := range nwConfig.EndpointsConfig {
-			if v != nil && v.IPAMConfig != nil {
+		for k, v := range nwConfig.EndpointsConfig {
+			if v == nil {
+				return errdefs.InvalidParameter(errors.Errorf("no EndpointSettings for %s", k))
+			}
+			if v.IPAMConfig != nil {
 				if v.IPAMConfig.IPv4Address != "" && net.ParseIP(v.IPAMConfig.IPv4Address).To4() == nil {
 					return errors.Errorf("invalid IPv4 address: %s", v.IPAMConfig.IPv4Address)
 				}

+ 21 - 0
daemon/create_test.go

@@ -0,0 +1,21 @@
+package daemon
+
+import (
+	"testing"
+
+	"github.com/docker/docker/api/types/network"
+	"github.com/docker/docker/errdefs"
+	"github.com/stretchr/testify/assert"
+)
+
+// Test case for 35752
+func TestVerifyNetworkingConfig(t *testing.T) {
+	name := "mynet"
+	endpoints := make(map[string]*network.EndpointSettings, 1)
+	endpoints[name] = nil
+	nwConfig := &network.NetworkingConfig{
+		EndpointsConfig: endpoints,
+	}
+	err := verifyNetworkingConfig(nwConfig)
+	assert.True(t, errdefs.IsInvalidParameter(err))
+}