@@ -273,47 +273,71 @@ func (v *Validator) CheckProcess() (msgs []string) {
273273 }
274274 }
275275
276- var caps []string
276+ msgs = append (msgs , v .CheckCapablities ()... )
277+ msgs = append (msgs , v .CheckRlimits ()... )
277278
278- for _ , cap := range process .Capabilities .Bounding {
279- caps = append (caps , cap )
280- }
281- for _ , cap := range process .Capabilities .Effective {
282- caps = append (caps , cap )
283- }
284- for _ , cap := range process .Capabilities .Inheritable {
285- caps = append (caps , cap )
286- }
287- for _ , cap := range process .Capabilities .Permitted {
288- caps = append (caps , cap )
289- }
290- for _ , cap := range process .Capabilities .Ambient {
291- caps = append (caps , cap )
292- }
279+ if v .spec .Platform .OS == "linux" {
293280
294- for _ , capability := range caps {
295- if err := CapValid (capability , v .HostSpecific ); err != nil {
296- msgs = append (msgs , fmt .Sprintf ("capability %q is not valid, man capabilities(7)" , capability ))
281+ if len (process .ApparmorProfile ) > 0 {
282+ profilePath := filepath .Join (v .bundlePath , v .spec .Root .Path , "/etc/apparmor.d" , process .ApparmorProfile )
283+ _ , err := os .Stat (profilePath )
284+ if err != nil {
285+ msgs = append (msgs , err .Error ())
286+ }
297287 }
298288 }
299289
300- for index , rlimit := range process .Rlimits {
301- if err := rlimitValid (rlimit ); err != nil {
302- msgs = append (msgs , err .Error ())
290+ return
291+ }
292+
293+ func (v * Validator ) CheckCapablities () (msgs []string ) {
294+ process := v .spec .Process
295+ if v .spec .Platform .OS == "linux" {
296+ var caps []string
297+
298+ for _ , cap := range process .Capabilities .Bounding {
299+ caps = append (caps , cap )
300+ }
301+ for _ , cap := range process .Capabilities .Effective {
302+ caps = append (caps , cap )
303+ }
304+ for _ , cap := range process .Capabilities .Inheritable {
305+ caps = append (caps , cap )
303306 }
304- for i := index + 1 ; i < len (process .Rlimits ); i ++ {
305- if process .Rlimits [index ].Type == process .Rlimits [i ].Type {
306- msgs = append (msgs , fmt .Sprintf ("rlimit can not contain the same type %q." , process .Rlimits [index ].Type ))
307+ for _ , cap := range process .Capabilities .Permitted {
308+ caps = append (caps , cap )
309+ }
310+ for _ , cap := range process .Capabilities .Ambient {
311+ caps = append (caps , cap )
312+ }
313+
314+ for _ , capability := range caps {
315+ if err := CapValid (capability , v .HostSpecific ); err != nil {
316+ msgs = append (msgs , fmt .Sprintf ("capability %q is not valid, man capabilities(7)" , capability ))
307317 }
308318 }
319+ } else {
320+ logrus .Warnf ("process.capabilities validation not yet implemented for OS %q" , v .spec .Platform .OS )
309321 }
310322
311- if len (process .ApparmorProfile ) > 0 {
312- profilePath := filepath .Join (v .bundlePath , v .spec .Root .Path , "/etc/apparmor.d" , process .ApparmorProfile )
313- _ , err := os .Stat (profilePath )
314- if err != nil {
315- msgs = append (msgs , err .Error ())
323+ return
324+ }
325+
326+ func (v * Validator ) CheckRlimits () (msgs []string ) {
327+ process := v .spec .Process
328+ if v .spec .Platform .OS == "linux" {
329+ for index , rlimit := range process .Rlimits {
330+ if err := rlimitValid (rlimit ); err != nil {
331+ msgs = append (msgs , err .Error ())
332+ }
333+ for i := index + 1 ; i < len (process .Rlimits ); i ++ {
334+ if process .Rlimits [index ].Type == process .Rlimits [i ].Type {
335+ msgs = append (msgs , fmt .Sprintf ("rlimit can not contain the same type %q." , process .Rlimits [index ].Type ))
336+ }
337+ }
316338 }
339+ } else {
340+ logrus .Warnf ("process.rlimits validation not yet implemented for OS %q" , v .spec .Platform .OS )
317341 }
318342
319343 return
0 commit comments