summaryrefslogtreecommitdiff
path: root/cmd/podman
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2021-07-24 05:53:16 -0400
committerGitHub <noreply@github.com>2021-07-24 05:53:16 -0400
commitc44c298ae7b5ce1da2aeff5b920de65767966007 (patch)
tree3c949238461e4d6bfc63a2dc49fb9628b44e9ace /cmd/podman
parent2f79497aba90229664c35fb738704d61e4528f44 (diff)
parentdcb5c92c0d94c81f0706cd282b55a2a9d1fde30f (diff)
downloadpodman-c44c298ae7b5ce1da2aeff5b920de65767966007.tar.gz
podman-c44c298ae7b5ce1da2aeff5b920de65767966007.tar.bz2
podman-c44c298ae7b5ce1da2aeff5b920de65767966007.zip
Merge pull request #11018 from vrothberg/fix-10994
import: write stdin to tmp file
Diffstat (limited to 'cmd/podman')
-rw-r--r--cmd/podman/images/import.go19
-rw-r--r--cmd/podman/parse/net.go7
2 files changed, 24 insertions, 2 deletions
diff --git a/cmd/podman/images/import.go b/cmd/podman/images/import.go
index bed2d4105..bc80417cc 100644
--- a/cmd/podman/images/import.go
+++ b/cmd/podman/images/import.go
@@ -3,6 +3,9 @@ package images
import (
"context"
"fmt"
+ "io"
+ "io/ioutil"
+ "os"
"strings"
"github.com/containers/common/pkg/completion"
@@ -97,6 +100,22 @@ func importCon(cmd *cobra.Command, args []string) error {
default:
return errors.Errorf("too many arguments. Usage TARBALL [REFERENCE]")
}
+
+ if source == "-" {
+ outFile, err := ioutil.TempFile("", "podman")
+ if err != nil {
+ return errors.Errorf("error creating file %v", err)
+ }
+ defer os.Remove(outFile.Name())
+ defer outFile.Close()
+
+ _, err = io.Copy(outFile, os.Stdin)
+ if err != nil {
+ return errors.Errorf("error copying file %v", err)
+ }
+ source = outFile.Name()
+ }
+
errFileName := parse.ValidateFileName(source)
errURL := parse.ValidURL(source)
if errURL == nil {
diff --git a/cmd/podman/parse/net.go b/cmd/podman/parse/net.go
index f93c4ab1e..870690db3 100644
--- a/cmd/podman/parse/net.go
+++ b/cmd/podman/parse/net.go
@@ -180,9 +180,12 @@ func ValidateFileName(filename string) error {
// ValidURL checks a string urlStr is a url or not
func ValidURL(urlStr string) error {
- _, err := url.ParseRequestURI(urlStr)
+ url, err := url.ParseRequestURI(urlStr)
if err != nil {
- return errors.Wrapf(err, "invalid url path: %q", urlStr)
+ return errors.Wrapf(err, "invalid url %q", urlStr)
+ }
+ if url.Scheme == "" {
+ return errors.Errorf("invalid url %q: missing scheme", urlStr)
}
return nil
}