From 8f4243adfd077212788d62708182abe95714da17 Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Wed, 19 Jan 2022 19:17:13 +0800 Subject: [PATCH] fix: vpcagent nil pointer panic --- pkg/vpcagent/models/models.go | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/pkg/vpcagent/models/models.go b/pkg/vpcagent/models/models.go index 3deac3a824..3084e8b3ba 100644 --- a/pkg/vpcagent/models/models.go +++ b/pkg/vpcagent/models/models.go @@ -17,6 +17,8 @@ package models import ( "fmt" + "yunion.io/x/log" + compute_models "yunion.io/x/onecloud/pkg/compute/models" ) @@ -236,9 +238,21 @@ func (el *Groupnetwork) Copy() *Groupnetwork { func (el *Groupnetwork) GetGuestNetworks() []*Guestnetwork { ret := make([]*Guestnetwork, 0) - for _, gg := range el.Group.Groupguests { - for _, gn := range gg.Guest.Guestnetworks { - ret = append(ret, gn) + if el.Group == nil { + log.Errorf("Nil group for groupnetwork %s %s", el.GroupId, el.NetworkId) + } else if el.Group.Groupguests == nil { + log.Errorf("Nil groupguests for group %s", el.GroupId) + } else { + for _, gg := range el.Group.Groupguests { + if gg.Guest == nil { + log.Errorf("Nil guest for groupguest %s %s", gg.GroupId, gg.GuestId) + } else if gg.Guest.Guestnetworks == nil { + log.Errorf("Nil guestnetworks for guest %s", gg.GuestId) + } else { + for _, gn := range gg.Guest.Guestnetworks { + ret = append(ret, gn) + } + } } } return ret