diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-08-12 10:29:17 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-12 10:29:17 -0400 |
commit | ac96112d706ac7be682a6a3e218b10affd2ece20 (patch) | |
tree | 3d8cbe927cc6cdc0eaa7412df8edf725b911bc71 | |
parent | 8eaacec150df782c291e9c6046bb0db010dd2f08 (diff) | |
parent | d45bd6e29ab16b9811dfb2e520a49ed7baebda98 (diff) | |
download | podman-ac96112d706ac7be682a6a3e218b10affd2ece20.tar.gz podman-ac96112d706ac7be682a6a3e218b10affd2ece20.tar.bz2 podman-ac96112d706ac7be682a6a3e218b10affd2ece20.zip |
Merge pull request #7267 from zhangguanzhang/check-invalid-network-create
Add parameter verification for api creation network
-rw-r--r-- | pkg/network/network.go | 9 | ||||
-rw-r--r-- | test/apiv2/35-networks.at | 28 |
2 files changed, 36 insertions, 1 deletions
diff --git a/pkg/network/network.go b/pkg/network/network.go index b24c72f5f..db625da56 100644 --- a/pkg/network/network.go +++ b/pkg/network/network.go @@ -137,6 +137,15 @@ func networkIntersect(n1, n2 *net.IPNet) bool { // ValidateUserNetworkIsAvailable returns via an error if a network is available // to be used func ValidateUserNetworkIsAvailable(config *config.Config, userNet *net.IPNet) error { + if len(userNet.IP) == 0 || len(userNet.Mask) == 0 { + return errors.Errorf("network %s's ip or mask cannot be empty", userNet.String()) + } + + ones, bit := userNet.Mask.Size() + if ones == 0 || bit == 0 { + return errors.Errorf("network %s's mask is invalid", userNet.String()) + } + networks, err := GetNetworksFromFilesystem(config) if err != nil { return err diff --git a/test/apiv2/35-networks.at b/test/apiv2/35-networks.at index fff3f3b1f..4c032c072 100644 --- a/test/apiv2/35-networks.at +++ b/test/apiv2/35-networks.at @@ -3,6 +3,32 @@ # network-related tests # -t GET /networks/non-existing-network 404 +t GET networks/non-existing-network 404 \ + .cause='network not found' + +if root; then + t POST libpod/networks/create?name=network1 '' 200 \ + .Filename~.*/network1\\.conflist + + # --data '{"Subnet":{"IP":"10.10.254.0","Mask":[255,255,255,0]}}' + t POST libpod/networks/create?name=network2 '"Subnet":{"IP":"10.10.254.0","Mask":[255,255,255,0]}' 200 \ + .Filename~.*/network2\\.conflist + + # test for empty mask + t POST libpod/networks/create '"Subnet":{"IP":"10.10.1.0","Mask":[]}' 500 \ + .cause~'.*cannot be empty' + # test for invalid mask + t POST libpod/networks/create '"Subnet":{"IP":"10.10.1.0","Mask":[0,255,255,0]}' 500 \ + .cause~'.*mask is invalid' + + # clean the network + t DELETE libpod/networks/network1 200 \ + .[0].Name~network1 \ + .[0].Err=null + t DELETE libpod/networks/network2 200 \ + .[0].Name~network2 \ + .[0].Err=null + +fi # vim: filetype=sh |