diff --git a/image/image.go b/image/image.go index 1551c1c..5048cbe 100644 --- a/image/image.go +++ b/image/image.go @@ -66,6 +66,12 @@ func validate(w walker, refs []string, out *log.Logger) error { } } + for _, refName := range refs { + if err = refsNameRegexpCheck(refName); err != nil { + return err + } + } + for _, ref := range refs { d, ok := ds[ref] if !ok { @@ -115,6 +121,10 @@ func Unpack(tarFile, dest, ref string) error { } func unpack(w walker, dest, refName string) error { + if err := refsNameRegexpCheck(refName); err != nil { + return err + } + ref, err := findDescriptor(w, refName) if err != nil { return err @@ -157,6 +167,10 @@ func CreateRuntimeBundle(tarFile, dest, ref, root string) error { } func createRuntimeBundle(w walker, dest, refName, rootfs string) error { + if err := refsNameRegexpCheck(refName); err != nil { + return err + } + ref, err := findDescriptor(w, refName) if err != nil { return err @@ -198,3 +212,10 @@ func createRuntimeBundle(w walker, dest, refName, rootfs string) error { return json.NewEncoder(f).Encode(spec) } + +func refsNameRegexpCheck(refName string) error { + if boolRefsNameMatch := v1.RefsRegexp.MatchString(refName); !boolRefsNameMatch { + return fmt.Errorf("input parameter --ref (%s) is invalide", refName) + } + return nil +}