From f1586dbd7ae701c85c0e007e2ee19f7c10ccf933 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Fri, 2 Apr 2021 11:41:19 +0200 Subject: [PATCH] libcontainer/configs/validate: make Validate() less DRY Signed-off-by: Sebastiaan van Stijn --- libcontainer/configs/validate/rootless.go | 3 ++ libcontainer/configs/validate/validator.go | 39 ++++++++-------------- 2 files changed, 17 insertions(+), 25 deletions(-) diff --git a/libcontainer/configs/validate/rootless.go b/libcontainer/configs/validate/rootless.go index 717d0f00a..9a6e5eb32 100644 --- a/libcontainer/configs/validate/rootless.go +++ b/libcontainer/configs/validate/rootless.go @@ -11,6 +11,9 @@ import ( // rootlessEUID makes sure that the config can be applied when runc // is being executed as a non-root user (euid != 0) in the current user namespace. func (v *ConfigValidator) rootlessEUID(config *configs.Config) error { + if !config.RootlessEUID { + return nil + } if err := rootlessEUIDMappings(config); err != nil { return err } diff --git a/libcontainer/configs/validate/validator.go b/libcontainer/configs/validate/validator.go index 63abdb00c..79c07cadc 100644 --- a/libcontainer/configs/validate/validator.go +++ b/libcontainer/configs/validate/validator.go @@ -25,33 +25,22 @@ func New() Validator { type ConfigValidator struct { } +type check func(config *configs.Config) error + func (v *ConfigValidator) Validate(config *configs.Config) error { - if err := v.rootfs(config); err != nil { - return err + checks := []check{ + v.rootfs, + v.network, + v.hostname, + v.security, + v.usernamespace, + v.cgroupnamespace, + v.sysctl, + v.intelrdt, + v.rootlessEUID, } - if err := v.network(config); err != nil { - return err - } - if err := v.hostname(config); err != nil { - return err - } - if err := v.security(config); err != nil { - return err - } - if err := v.usernamespace(config); err != nil { - return err - } - if err := v.cgroupnamespace(config); err != nil { - return err - } - if err := v.sysctl(config); err != nil { - return err - } - if err := v.intelrdt(config); err != nil { - return err - } - if config.RootlessEUID { - if err := v.rootlessEUID(config); err != nil { + for _, c := range checks { + if err := c(config); err != nil { return err } }