Fixed nil pointer dereference while parsing memory limit

Signed-off-by: Shikachuu <zcmate@gmail.com>
This commit is contained in:
Shikachuu 2021-09-18 14:33:56 +02:00 committed by Alex Ellis
parent cbfefb6fa5
commit d5fcc7b2ab

View File

@ -93,7 +93,7 @@ func GetFunction(client *containerd.Client, name string, namespace string) (Func
spec, err := c.Spec(ctx)
if err != nil {
return Function{}, fmt.Errorf("unable to load function spec for reading secrets: %s, error %w", name, err)
return Function{}, fmt.Errorf("unable to load function spec for reading secrets and limits: %s, error %w", name, err)
}
info, err := c.Info(ctx)
@ -113,7 +113,7 @@ func GetFunction(client *containerd.Client, name string, namespace string) (Func
fn.envVars = envVars
fn.envProcess = envProcess
fn.createdAt = info.CreatedAt
fn.memoryLimit = *spec.Linux.Resources.Memory.Limit
fn.memoryLimit = readMemoryLimitFromSpec(spec)
replicas := 0
task, err := c.Task(ctx, nil)
@ -233,3 +233,19 @@ func findNamespace(target string, items []string) bool {
}
return false
}
func readMemoryLimitFromSpec(spec *specs.Spec) int64 {
if spec.Linux != nil {
return 0
}
if spec.Linux.Resources == nil {
return 0
}
if spec.Linux.Resources.Memory == nil {
return 0
}
if spec.Linux.Resources.Memory.Limit == nil {
return 0
}
return *spec.Linux.Resources.Memory.Limit
}