Merge pull request #2729 from Ace-Tang/master

runtime-v2: add validation for runtime name
This commit is contained in:
Phil Estes 2018-10-23 16:39:51 +01:00 committed by GitHub
commit 9fb7eedb5b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -49,6 +49,9 @@ func Command(ctx context.Context, runtime, containerdAddress, path string, cmdAr
} }
args = append(args, cmdArgs...) args = append(args, cmdArgs...)
name := BinaryName(runtime) name := BinaryName(runtime)
if name == "" {
return nil, fmt.Errorf("invalid runtime name %s, correct runtime name should format like io.containerd.runc.v1", runtime)
}
var cmdPath string var cmdPath string
var lerr error var lerr error
if cmdPath, lerr = exec.LookPath(name); lerr != nil { if cmdPath, lerr = exec.LookPath(name); lerr != nil {
@ -69,10 +72,15 @@ func Command(ctx context.Context, runtime, containerdAddress, path string, cmdAr
return cmd, nil return cmd, nil
} }
// BinaryName returns the shim binary name from the runtime name // BinaryName returns the shim binary name from the runtime name,
// empty string returns means runtime name is invalid
func BinaryName(runtime string) string { func BinaryName(runtime string) string {
// runtime name should format like $prefix.name.version
parts := strings.Split(runtime, ".") parts := strings.Split(runtime, ".")
// TODO: add validation for runtime if len(parts) < 2 {
return ""
}
return fmt.Sprintf(shimBinaryFormat, parts[len(parts)-2], parts[len(parts)-1]) return fmt.Sprintf(shimBinaryFormat, parts[len(parts)-2], parts[len(parts)-1])
} }