diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2019-10-04 02:11:56 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-04 02:11:56 -0700 |
commit | 1fe955600979f54ada204afa6c357fd094d6f549 (patch) | |
tree | d22ee28ccf664986109f61c52a041aa803e2e505 | |
parent | 7af4074c6f96d0fabd2ab5dd6c5773053f80aa08 (diff) | |
parent | c5e26f8e40f3bc51ee7cdfce8eb4207105e4c4ba (diff) | |
download | podman-1fe955600979f54ada204afa6c357fd094d6f549.tar.gz podman-1fe955600979f54ada204afa6c357fd094d6f549.tar.bz2 podman-1fe955600979f54ada204afa6c357fd094d6f549.zip |
Merge pull request #4188 from Mrigank11/validate_network_name
podman network create: validate user input
-rw-r--r-- | cmd/podman/network_create.go | 6 | ||||
-rw-r--r-- | libpod/options.go | 20 | ||||
-rw-r--r-- | test/e2e/network_create_test.go | 6 |
3 files changed, 21 insertions, 11 deletions
diff --git a/cmd/podman/network_create.go b/cmd/podman/network_create.go index 378a92568..11f13faad 100644 --- a/cmd/podman/network_create.go +++ b/cmd/podman/network_create.go @@ -4,11 +4,12 @@ package main import ( "fmt" - "github.com/containers/libpod/pkg/network" "net" "github.com/containers/libpod/cmd/podman/cliconfig" + "github.com/containers/libpod/libpod" "github.com/containers/libpod/pkg/adapter" + "github.com/containers/libpod/pkg/network" "github.com/containers/libpod/pkg/rootless" "github.com/pkg/errors" "github.com/spf13/cobra" @@ -58,6 +59,9 @@ func networkcreateCmd(c *cliconfig.NetworkCreateValues) error { if len(c.InputArgs) > 1 { return errors.Errorf("only one network can be created at a time") } + if len(c.InputArgs) > 0 && !libpod.NameRegex.MatchString(c.InputArgs[0]) { + return libpod.RegexError + } runtime, err := adapter.GetRuntimeNoStore(getContext(), &c.PodmanCommand) if err != nil { return err diff --git a/libpod/options.go b/libpod/options.go index d28cb3d8c..22ab22a95 100644 --- a/libpod/options.go +++ b/libpod/options.go @@ -20,8 +20,8 @@ import ( ) var ( - nameRegex = regexp.MustCompile("^[a-zA-Z0-9][a-zA-Z0-9_.-]*$") - regexError = errors.Wrapf(define.ErrInvalidArg, "names must match [a-zA-Z0-9][a-zA-Z0-9_.-]*") + NameRegex = regexp.MustCompile("^[a-zA-Z0-9][a-zA-Z0-9_.-]*$") + RegexError = errors.Wrapf(define.ErrInvalidArg, "names must match [a-zA-Z0-9][a-zA-Z0-9_.-]*") ) // Runtime Creation Options @@ -648,8 +648,8 @@ func WithName(name string) CtrCreateOption { } // Check the name against a regex - if !nameRegex.MatchString(name) { - return regexError + if !NameRegex.MatchString(name) { + return RegexError } ctr.config.Name = name @@ -1426,8 +1426,8 @@ func WithVolumeName(name string) VolumeCreateOption { } // Check the name against a regex - if !nameRegex.MatchString(name) { - return regexError + if !NameRegex.MatchString(name) { + return RegexError } volume.config.Name = name @@ -1532,8 +1532,8 @@ func WithPodName(name string) PodCreateOption { } // Check the name against a regex - if !nameRegex.MatchString(name) { - return regexError + if !NameRegex.MatchString(name) { + return RegexError } pod.config.Name = name @@ -1550,8 +1550,8 @@ func WithPodHostname(hostname string) PodCreateOption { } // Check the hostname against a regex - if !nameRegex.MatchString(hostname) { - return regexError + if !NameRegex.MatchString(hostname) { + return RegexError } pod.config.Hostname = hostname diff --git a/test/e2e/network_create_test.go b/test/e2e/network_create_test.go index 410d0b97c..264219178 100644 --- a/test/e2e/network_create_test.go +++ b/test/e2e/network_create_test.go @@ -208,4 +208,10 @@ var _ = Describe("Podman network create", func() { Expect(ncFail.ExitCode()).ToNot(BeZero()) }) + It("podman network create with invalid network name", func() { + nc := podmanTest.Podman([]string{"network", "create", "foo "}) + nc.WaitWithDefaultTimeout() + Expect(nc.ExitCode()).ToNot(BeZero()) + }) + }) |