@@ -273,46 +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 )
279+ if v .spec .Platform .OS == "linux" {
280+
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+ }
287+ }
292288 }
293289
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 ))
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 )
306+ }
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 ))
317+ }
297318 }
319+ } else {
320+ logrus .Warnf ("process.capabilities validation not yet implemented for OS %q" , v .spec .Platform .OS )
298321 }
299322
323+ return
324+ }
325+
326+ func (v * Validator ) CheckRlimits () (msgs []string ) {
327+ process := v .spec .Process
300328 for index , rlimit := range process .Rlimits {
301- if err := rlimitValid (rlimit ); err != nil {
302- msgs = append (msgs , err .Error ())
303- }
304329 for i := index + 1 ; i < len (process .Rlimits ); i ++ {
305330 if process .Rlimits [index ].Type == process .Rlimits [i ].Type {
306331 msgs = append (msgs , fmt .Sprintf ("rlimit can not contain the same type %q." , process .Rlimits [index ].Type ))
307332 }
308333 }
309- }
310334
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 ())
335+ if v .spec .Platform .OS == "linux" {
336+ if err := rlimitValid (rlimit ); err != nil {
337+ msgs = append (msgs , err .Error ())
338+ }
339+ } else {
340+ logrus .Warnf ("process.rlimits validation not yet implemented for OS %q" , v .spec .Platform .OS )
316341 }
317342 }
318343
0 commit comments