@@ -609,8 +609,8 @@ func (v *Validator) CheckLinux() (errs error) {
609609
610610 for index := 0 ; index < len (v .spec .Linux .Namespaces ); index ++ {
611611 ns := v .spec .Linux .Namespaces [index ]
612- if ! v . namespaceValid ( ns ) {
613- errs = multierror .Append (errs , fmt .Errorf ("namespace %v is invalid " , ns ))
612+ if ns . Path != "" && ! osFilepath . IsAbs ( v . platform , ns . Path ) {
613+ errs = multierror .Append (errs , specerror . NewError ( specerror . NSPathAbs , fmt .Errorf ("namespace.path %q is not an absolute path " , ns . Path ), rspec . Version ))
614614 }
615615
616616 tmpItem := nsTypeList [ns .Type ]
@@ -746,10 +746,6 @@ func (v *Validator) CheckLinux() (errs error) {
746746 errs = multierror .Append (errs , v .CheckLinuxResources ())
747747 }
748748
749- if v .spec .Linux .Seccomp != nil {
750- errs = multierror .Append (errs , v .CheckSeccomp ())
751- }
752-
753749 for _ , maskedPath := range v .spec .Linux .MaskedPaths {
754750 if ! strings .HasPrefix (maskedPath , "/" ) {
755751 errs = multierror .Append (errs ,
@@ -827,47 +823,6 @@ func (v *Validator) CheckLinuxResources() (errs error) {
827823 return
828824}
829825
830- // CheckSeccomp checkc v.spec.Linux.Seccomp
831- func (v * Validator ) CheckSeccomp () (errs error ) {
832- logrus .Debugf ("check linux seccomp" )
833-
834- s := v .spec .Linux .Seccomp
835- if ! seccompActionValid (s .DefaultAction ) {
836- errs = multierror .Append (errs , fmt .Errorf ("seccomp defaultAction %q is invalid" , s .DefaultAction ))
837- }
838- for index := 0 ; index < len (s .Syscalls ); index ++ {
839- if ! syscallValid (s .Syscalls [index ]) {
840- errs = multierror .Append (errs , fmt .Errorf ("syscall %v is invalid" , s .Syscalls [index ]))
841- }
842- }
843- for index := 0 ; index < len (s .Architectures ); index ++ {
844- switch s .Architectures [index ] {
845- case rspec .ArchX86 :
846- case rspec .ArchX86_64 :
847- case rspec .ArchX32 :
848- case rspec .ArchARM :
849- case rspec .ArchAARCH64 :
850- case rspec .ArchMIPS :
851- case rspec .ArchMIPS64 :
852- case rspec .ArchMIPS64N32 :
853- case rspec .ArchMIPSEL :
854- case rspec .ArchMIPSEL64 :
855- case rspec .ArchMIPSEL64N32 :
856- case rspec .ArchPPC :
857- case rspec .ArchPPC64 :
858- case rspec .ArchPPC64LE :
859- case rspec .ArchS390 :
860- case rspec .ArchS390X :
861- case rspec .ArchPARISC :
862- case rspec .ArchPARISC64 :
863- default :
864- errs = multierror .Append (errs , fmt .Errorf ("seccomp architecture %q is invalid" , s .Architectures [index ]))
865- }
866- }
867-
868- return
869- }
870-
871826// CapValid checks whether a capability is valid
872827func CapValid (c string , hostSpecific bool ) error {
873828 isValid := false
@@ -944,26 +899,6 @@ func (v *Validator) rlimitValid(rlimit rspec.POSIXRlimit) (errs error) {
944899 return
945900}
946901
947- func (v * Validator ) namespaceValid (ns rspec.LinuxNamespace ) bool {
948- switch ns .Type {
949- case rspec .PIDNamespace :
950- case rspec .NetworkNamespace :
951- case rspec .MountNamespace :
952- case rspec .IPCNamespace :
953- case rspec .UTSNamespace :
954- case rspec .UserNamespace :
955- case rspec .CgroupNamespace :
956- default :
957- return false
958- }
959-
960- if ns .Path != "" && ! osFilepath .IsAbs (v .platform , ns .Path ) {
961- return false
962- }
963-
964- return true
965- }
966-
967902func deviceValid (d rspec.LinuxDevice ) bool {
968903 switch d .Type {
969904 case "b" , "c" , "u" :
@@ -980,40 +915,6 @@ func deviceValid(d rspec.LinuxDevice) bool {
980915 return true
981916}
982917
983- func seccompActionValid (secc rspec.LinuxSeccompAction ) bool {
984- switch secc {
985- case rspec .ActKill :
986- case rspec .ActTrap :
987- case rspec .ActErrno :
988- case rspec .ActTrace :
989- case rspec .ActAllow :
990- default :
991- return false
992- }
993- return true
994- }
995-
996- func syscallValid (s rspec.LinuxSyscall ) bool {
997- if ! seccompActionValid (s .Action ) {
998- return false
999- }
1000- for index := 0 ; index < len (s .Args ); index ++ {
1001- arg := s .Args [index ]
1002- switch arg .Op {
1003- case rspec .OpNotEqual :
1004- case rspec .OpLessThan :
1005- case rspec .OpLessEqual :
1006- case rspec .OpEqualTo :
1007- case rspec .OpGreaterEqual :
1008- case rspec .OpGreaterThan :
1009- case rspec .OpMaskedEqual :
1010- default :
1011- return false
1012- }
1013- }
1014- return true
1015- }
1016-
1017918func isStruct (t reflect.Type ) bool {
1018919 return t .Kind () == reflect .Struct
1019920}
0 commit comments