Skip to content

Commit b0e8214

Browse files
authored
Merge pull request #494 from q384566678/runtimetest-nil-fix
fix nil deference
2 parents e2707b1 + 19b061c commit b0e8214

File tree

2 files changed

+42
-33
lines changed

2 files changed

+42
-33
lines changed

cmd/runtimetest/main.go

+34-16
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,10 @@ func validateGeneralProcess(spec *rspec.Spec) error {
105105
}
106106

107107
func validateLinuxProcess(spec *rspec.Spec) error {
108+
if spec.Process == nil {
109+
return nil
110+
}
111+
108112
validateGeneralProcess(spec)
109113

110114
uid := os.Getuid()
@@ -162,6 +166,10 @@ func validateLinuxProcess(spec *rspec.Spec) error {
162166
}
163167

164168
func validateCapabilities(spec *rspec.Spec) error {
169+
if spec.Process == nil || spec.Process.Capabilities == nil {
170+
return nil
171+
}
172+
165173
last := capability.CAP_LAST_CAP
166174
// workaround for RHEL6 which has no /proc/sys/kernel/cap_last_cap
167175
if last == capability.Cap(63) {
@@ -178,22 +186,20 @@ func validateCapabilities(spec *rspec.Spec) error {
178186
expectedCaps3 := make(map[string]bool)
179187
expectedCaps4 := make(map[string]bool)
180188
expectedCaps5 := make(map[string]bool)
181-
if spec.Process.Capabilities != nil {
182-
for _, ec := range spec.Process.Capabilities.Bounding {
183-
expectedCaps1[ec] = true
184-
}
185-
for _, ec := range spec.Process.Capabilities.Effective {
186-
expectedCaps2[ec] = true
187-
}
188-
for _, ec := range spec.Process.Capabilities.Inheritable {
189-
expectedCaps3[ec] = true
190-
}
191-
for _, ec := range spec.Process.Capabilities.Permitted {
192-
expectedCaps4[ec] = true
193-
}
194-
for _, ec := range spec.Process.Capabilities.Ambient {
195-
expectedCaps5[ec] = true
196-
}
189+
for _, ec := range spec.Process.Capabilities.Bounding {
190+
expectedCaps1[ec] = true
191+
}
192+
for _, ec := range spec.Process.Capabilities.Effective {
193+
expectedCaps2[ec] = true
194+
}
195+
for _, ec := range spec.Process.Capabilities.Inheritable {
196+
expectedCaps3[ec] = true
197+
}
198+
for _, ec := range spec.Process.Capabilities.Permitted {
199+
expectedCaps4[ec] = true
200+
}
201+
for _, ec := range spec.Process.Capabilities.Ambient {
202+
expectedCaps5[ec] = true
197203
}
198204

199205
for _, cap := range capability.List() {
@@ -259,6 +265,10 @@ func validateHostname(spec *rspec.Spec) error {
259265
}
260266

261267
func validateRlimits(spec *rspec.Spec) error {
268+
if spec.Process == nil {
269+
return nil
270+
}
271+
262272
for _, r := range spec.Process.Rlimits {
263273
rl, err := strToRlimit(r.Type)
264274
if err != nil {
@@ -311,6 +321,10 @@ func testWriteAccess(path string) error {
311321
}
312322

313323
func validateRootFS(spec *rspec.Spec) error {
324+
if spec.Root == nil {
325+
return nil
326+
}
327+
314328
if spec.Root.Readonly {
315329
err := testWriteAccess("/")
316330
if err == nil {
@@ -422,6 +436,10 @@ func validateDefaultSymlinks(spec *rspec.Spec) error {
422436
}
423437

424438
func validateDefaultDevices(spec *rspec.Spec) error {
439+
if spec.Process == nil {
440+
return nil
441+
}
442+
425443
if spec.Process.Terminal {
426444
defaultDevices = append(defaultDevices, "/dev/console")
427445
}

generate/generate.go

+8-17
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ func (g *Generator) SetProcessArgs(args []string) {
398398

399399
// ClearProcessEnv clears g.spec.Process.Env.
400400
func (g *Generator) ClearProcessEnv() {
401-
if g.spec == nil {
401+
if g.spec == nil || g.spec.Process == nil {
402402
return
403403
}
404404
g.spec.Process.Env = []string{}
@@ -440,7 +440,7 @@ func (g *Generator) AddProcessRlimits(rType string, rHard uint64, rSoft uint64)
440440

441441
// RemoveProcessRlimits removes a rlimit from g.spec.Process.Rlimits.
442442
func (g *Generator) RemoveProcessRlimits(rType string) error {
443-
if g.spec == nil {
443+
if g.spec == nil || g.spec.Process == nil {
444444
return nil
445445
}
446446
for i, rlimit := range g.spec.Process.Rlimits {
@@ -454,15 +454,15 @@ func (g *Generator) RemoveProcessRlimits(rType string) error {
454454

455455
// ClearProcessRlimits clear g.spec.Process.Rlimits.
456456
func (g *Generator) ClearProcessRlimits() {
457-
if g.spec == nil {
457+
if g.spec == nil || g.spec.Process == nil {
458458
return
459459
}
460460
g.spec.Process.Rlimits = []rspec.POSIXRlimit{}
461461
}
462462

463463
// ClearProcessAdditionalGids clear g.spec.Process.AdditionalGids.
464464
func (g *Generator) ClearProcessAdditionalGids() {
465-
if g.spec == nil {
465+
if g.spec == nil || g.spec.Process == nil {
466466
return
467467
}
468468
g.spec.Process.User.AdditionalGids = []uint32{}
@@ -737,10 +737,7 @@ func (g *Generator) SetLinuxRootPropagation(rp string) error {
737737

738738
// ClearPreStartHooks clear g.spec.Hooks.Prestart.
739739
func (g *Generator) ClearPreStartHooks() {
740-
if g.spec == nil {
741-
return
742-
}
743-
if g.spec.Hooks == nil {
740+
if g.spec == nil || g.spec.Hooks == nil {
744741
return
745742
}
746743
g.spec.Hooks.Prestart = []rspec.Hook{}
@@ -787,10 +784,7 @@ func (g *Generator) AddPreStartHookTimeout(path string, timeout int) {
787784

788785
// ClearPostStopHooks clear g.spec.Hooks.Poststop.
789786
func (g *Generator) ClearPostStopHooks() {
790-
if g.spec == nil {
791-
return
792-
}
793-
if g.spec.Hooks == nil {
787+
if g.spec == nil || g.spec.Hooks == nil {
794788
return
795789
}
796790
g.spec.Hooks.Poststop = []rspec.Hook{}
@@ -837,10 +831,7 @@ func (g *Generator) AddPostStopHookTimeout(path string, timeout int) {
837831

838832
// ClearPostStartHooks clear g.spec.Hooks.Poststart.
839833
func (g *Generator) ClearPostStartHooks() {
840-
if g.spec == nil {
841-
return
842-
}
843-
if g.spec.Hooks == nil {
834+
if g.spec == nil || g.spec.Hooks == nil {
844835
return
845836
}
846837
g.spec.Hooks.Poststart = []rspec.Hook{}
@@ -976,7 +967,7 @@ func (g *Generator) SetupPrivileged(privileged bool) {
976967

977968
// ClearProcessCapabilities clear g.spec.Process.Capabilities.
978969
func (g *Generator) ClearProcessCapabilities() {
979-
if g.spec == nil {
970+
if g.spec == nil || g.spec.Process == nil || g.spec.Process.Capabilities == nil {
980971
return
981972
}
982973
g.spec.Process.Capabilities.Bounding = []string{}

0 commit comments

Comments
 (0)