From 4db01a2655b6bf7c489cc3ac94dcdebe4c038d52 Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Mon, 2 Sep 2019 21:33:57 +0800 Subject: [PATCH] fix: bucket list access accessUrl nil pointer panic --- pkg/compute/models/buckets.go | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/pkg/compute/models/buckets.go b/pkg/compute/models/buckets.go index 72a43b81af..3891eedab3 100644 --- a/pkg/compute/models/buckets.go +++ b/pkg/compute/models/buckets.go @@ -501,23 +501,26 @@ func (bucket *SBucket) getMoreDetails(extra *jsonutils.JSONDict) *jsonutils.JSON s3gwUrl, _ := auth.GetServiceURL("s3gateway", options.Options.Region, "", "public") if len(s3gwUrl) > 0 { accessUrls := make([]cloudprovider.SBucketAccessUrl, 0) - err := bucket.AccessUrls.Unmarshal(&accessUrls) - if err == nil { - find := false - for i := range accessUrls { - if strings.HasPrefix(accessUrls[i].Url, s3gwUrl) { - find = true - break - } + if bucket.AccessUrls != nil { + err := bucket.AccessUrls.Unmarshal(&accessUrls) + if err != nil { + log.Errorf("bucket.AccessUrls.Unmarshal fail %s", err) } - if !find { - accessUrls = append(accessUrls, cloudprovider.SBucketAccessUrl{ - Url: joinPath(s3gwUrl, bucket.Name), - Description: "s3gateway", - }) - extra.Set("access_urls", jsonutils.Marshal(accessUrls)) + } + find := false + for i := range accessUrls { + if strings.HasPrefix(accessUrls[i].Url, s3gwUrl) { + find = true + break } } + if !find { + accessUrls = append(accessUrls, cloudprovider.SBucketAccessUrl{ + Url: joinPath(s3gwUrl, bucket.Name), + Description: "s3gateway", + }) + extra.Set("access_urls", jsonutils.Marshal(accessUrls)) + } } return extra