From d5d6e6859286ab9310e4a79082d50c816941f1ae Mon Sep 17 00:00:00 2001 From: umohnani8 Date: Sun, 29 Apr 2018 17:37:51 -0400 Subject: Make ':' a restricted character for file names file names for podman load, save, export, and import cannot contain ":" in them. It is a reserved character for parsing filenames. Signed-off-by: umohnani8 Closes: #694 Approved by: rhatdan --- cmd/podman/export.go | 3 +++ cmd/podman/import.go | 4 ++++ cmd/podman/load.go | 3 +++ cmd/podman/parse.go | 9 +++++++++ cmd/podman/save.go | 3 +++ 5 files changed, 22 insertions(+) (limited to 'cmd') diff --git a/cmd/podman/export.go b/cmd/podman/export.go index eaf1ab39f..16c1f5c9b 100644 --- a/cmd/podman/export.go +++ b/cmd/podman/export.go @@ -56,6 +56,9 @@ func exportCmd(c *cli.Context) error { return errors.Errorf("refusing to export to terminal. Use -o flag or redirect") } } + if err := validateFileName(output); err != nil { + return err + } ctr, err := runtime.LookupContainer(args[0]) if err != nil { diff --git a/cmd/podman/import.go b/cmd/podman/import.go index 5a4fa45d9..446516024 100644 --- a/cmd/podman/import.go +++ b/cmd/podman/import.go @@ -75,6 +75,10 @@ func importCmd(c *cli.Context) error { return errors.Errorf("too many arguments. Usage TARBALL [REFERENCE]") } + if err := validateFileName(source); err != nil { + return err + } + changes := v1.ImageConfig{} if c.IsSet("change") { changes, err = util.GetImageConfig(c.StringSlice("change")) diff --git a/cmd/podman/load.go b/cmd/podman/load.go index 8186f1cc2..2f66df7c8 100644 --- a/cmd/podman/load.go +++ b/cmd/podman/load.go @@ -93,6 +93,9 @@ func loadCmd(c *cli.Context) error { input = outFile.Name() } } + if err := validateFileName(input); err != nil { + return err + } var writer io.Writer if !c.Bool("quiet") { diff --git a/cmd/podman/parse.go b/cmd/podman/parse.go index b70e0caf7..484b9723f 100644 --- a/cmd/podman/parse.go +++ b/cmd/podman/parse.go @@ -816,3 +816,12 @@ func getLoggingPath(opts []string) string { } return "" } + +// validateFileName returns an error if filename contains ":" +// as it is currently not supported +func validateFileName(filename string) error { + if strings.Contains(filename, ":") { + return errors.Errorf("invalid filename (should not contain ':') %q", filename) + } + return nil +} diff --git a/cmd/podman/save.go b/cmd/podman/save.go index e41e95f69..ce82b588a 100644 --- a/cmd/podman/save.go +++ b/cmd/podman/save.go @@ -87,6 +87,9 @@ func saveCmd(c *cli.Context) error { return errors.Errorf("refusing to save to terminal. Use -o flag or redirect") } } + if err := validateFileName(output); err != nil { + return err + } var dst, manifestType string switch c.String("format") { -- cgit v1.2.3-54-g00ecf