diff --git a/db/db.go b/db/db.go index 491fa835..36fc107b 100644 --- a/db/db.go +++ b/db/db.go @@ -244,7 +244,7 @@ func match(specifiedURI string, cpeInNvd models.CpeBase) (bool, error) { } func matchCpe(uri string, cve *models.CveDetail) (nvdMatch, jvnMatch bool, err error) { - for _, nvd := range cve.Nvd { + for _, nvd := range cve.Nvds { for _, cpe := range nvd.Cpes { match, err := match(uri, cpe.CpeBase) if err != nil { @@ -271,12 +271,12 @@ func matchCpe(uri string, cve *models.CveDetail) (nvdMatch, jvnMatch bool, err e return false, false, nil } - for _, jvn := range cve.Jvn { + for _, jvn := range cve.Jvns { for _, jvnCpe := range jvn.Cpes { // If NVD has data of the same `part`, `vendor`, and `product`, NVD is used in priority. // Because NVD has version information, but JVN does not. found := false - for _, nvd := range cve.Nvd { + for _, nvd := range cve.Nvds { for _, nvdCpe := range nvd.Cpes { ok, err := isSamePartVendorProduct(nvdCpe.URI, jvnCpe.URI) if err != nil { @@ -354,13 +354,13 @@ func trimBSlash(s string) string { return strings.Replace(s, `\`, "", -1) } -func filterCVEDetailbyCPEURI(uri string, d *models.CveDetail) error { +func filterCveDetailByCpeURI(uri string, d *models.CveDetail) error { if d == nil { return nil } - nvds := append([]models.Nvd{}, d.Nvd...) - d.Nvd = []models.Nvd{} + nvds := append([]models.Nvd{}, d.Nvds...) + d.Nvds = []models.Nvd{} for _, nvd := range nvds { for _, cpe := range nvd.Cpes { matched, err := match(uri, cpe.CpeBase) @@ -377,14 +377,14 @@ func filterCVEDetailbyCPEURI(uri string, d *models.CveDetail) error { } } if matched { - d.Nvd = append(d.Nvd, nvd) + d.Nvds = append(d.Nvds, nvd) break } } } - jvns := append([]models.Jvn{}, d.Jvn...) - d.Jvn = []models.Jvn{} + jvns := append([]models.Jvn{}, d.Jvns...) + d.Jvns = []models.Jvn{} for _, jvn := range jvns { for _, cpe := range jvn.Cpes { matched, err := isSamePartVendorProduct(uri, cpe.URI) @@ -392,7 +392,7 @@ func filterCVEDetailbyCPEURI(uri string, d *models.CveDetail) error { continue } if matched { - d.Jvn = append(d.Jvn, jvn) + d.Jvns = append(d.Jvns, jvn) break } } diff --git a/db/db_test.go b/db/db_test.go index cd2e1221..7b2b900d 100644 --- a/db/db_test.go +++ b/db/db_test.go @@ -423,7 +423,7 @@ func Test_matchCpe(t *testing.T) { args: args{ uri: "cpe:/o:qualcomm:qcs605_firmware:1.0.0", cve: &models.CveDetail{ - Nvd: []models.Nvd{{ + Nvds: []models.Nvd{{ Cpes: []models.NvdCpe{nvdRangeCpe}}, }, }, @@ -436,7 +436,7 @@ func Test_matchCpe(t *testing.T) { args: args{ uri: "cpe:/o:qualcomm:qcs605_firmware:3.0.0", cve: &models.CveDetail{ - Nvd: []models.Nvd{{ + Nvds: []models.Nvd{{ Cpes: []models.NvdCpe{nvdRangeCpe}}, }, }, @@ -449,7 +449,7 @@ func Test_matchCpe(t *testing.T) { args: args{ uri: "cpe:/o:qualcomm:qcs605_firmware:1.0.0", cve: &models.CveDetail{ - Nvd: []models.Nvd{{ + Nvds: []models.Nvd{{ Cpes: []models.NvdCpe{nvdNonSemVerCpe}, Affects: []models.NvdAffect{ { @@ -469,7 +469,7 @@ func Test_matchCpe(t *testing.T) { args: args{ uri: "cpe:/o:qualcomm:qcs605_firmware:1.0.0", cve: &models.CveDetail{ - Nvd: []models.Nvd{{ + Nvds: []models.Nvd{{ Cpes: []models.NvdCpe{nvdNonSemVerCpe}, Affects: []models.NvdAffect{ { @@ -489,7 +489,7 @@ func Test_matchCpe(t *testing.T) { args: args{ uri: "cpe:/o:qualcomm:qcs605_firmware:1.0.0", cve: &models.CveDetail{ - Jvn: []models.Jvn{{ + Jvns: []models.Jvn{{ Cpes: []models.JvnCpe{jvnCpe}}, }, }, @@ -502,10 +502,10 @@ func Test_matchCpe(t *testing.T) { args: args{ uri: "cpe:/o:qualcomm:qcs605_firmware:3.0.0", cve: &models.CveDetail{ - Nvd: []models.Nvd{{ + Nvds: []models.Nvd{{ Cpes: []models.NvdCpe{nvdRangeCpe}}, }, - Jvn: []models.Jvn{{ + Jvns: []models.Jvn{{ Cpes: []models.JvnCpe{jvnCpe}}, }, }, @@ -519,10 +519,10 @@ func Test_matchCpe(t *testing.T) { args: args{ uri: "cpe:/o:qualcomm:qcs605_firmware:1.0.0", cve: &models.CveDetail{ - Nvd: []models.Nvd{{ + Nvds: []models.Nvd{{ Cpes: []models.NvdCpe{nvdRangeCpe}}, }, - Jvn: []models.Jvn{{ + Jvns: []models.Jvn{{ Cpes: []models.JvnCpe{jvnCpe}}, }, }, @@ -569,7 +569,7 @@ func Test_filterCVEDetailbyCPEURI(t *testing.T) { args: args{ uri: "cpe:/o:vendor:product:1.0.0", cve: &models.CveDetail{ - Nvd: []models.Nvd{ + Nvds: []models.Nvd{ { Cpes: []models.NvdCpe{ {CpeBase: models.CpeBase{URI: "cpe:/o:vendor:product:1.0.0"}}, @@ -582,7 +582,7 @@ func Test_filterCVEDetailbyCPEURI(t *testing.T) { }, }, }, - Jvn: []models.Jvn{ + Jvns: []models.Jvn{ { Cpes: []models.JvnCpe{ {CpeBase: models.CpeBase{URI: "cpe:/o:vendor:product"}}, @@ -592,7 +592,7 @@ func Test_filterCVEDetailbyCPEURI(t *testing.T) { }, }, expected: &models.CveDetail{ - Nvd: []models.Nvd{ + Nvds: []models.Nvd{ { Cpes: []models.NvdCpe{ {CpeBase: models.CpeBase{URI: "cpe:/o:vendor:product:1.0.0"}}, @@ -600,7 +600,7 @@ func Test_filterCVEDetailbyCPEURI(t *testing.T) { }, }, }, - Jvn: []models.Jvn{ + Jvns: []models.Jvn{ { Cpes: []models.JvnCpe{ {CpeBase: models.CpeBase{URI: "cpe:/o:vendor:product"}}, @@ -613,7 +613,7 @@ func Test_filterCVEDetailbyCPEURI(t *testing.T) { args: args{ uri: "cpe:/o:vendor:product", cve: &models.CveDetail{ - Nvd: []models.Nvd{ + Nvds: []models.Nvd{ { Cpes: []models.NvdCpe{ {CpeBase: models.CpeBase{URI: "cpe:/o:vendor:product:1.0.0"}}, @@ -621,7 +621,7 @@ func Test_filterCVEDetailbyCPEURI(t *testing.T) { }, }, }, - Jvn: []models.Jvn{ + Jvns: []models.Jvn{ { Cpes: []models.JvnCpe{ {CpeBase: models.CpeBase{URI: "cpe:/o:vendor:product"}}, @@ -636,7 +636,7 @@ func Test_filterCVEDetailbyCPEURI(t *testing.T) { }, }, expected: &models.CveDetail{ - Nvd: []models.Nvd{ + Nvds: []models.Nvd{ { Cpes: []models.NvdCpe{ {CpeBase: models.CpeBase{URI: "cpe:/o:vendor:product:1.0.0"}}, @@ -644,7 +644,7 @@ func Test_filterCVEDetailbyCPEURI(t *testing.T) { }, }, }, - Jvn: []models.Jvn{ + Jvns: []models.Jvn{ { Cpes: []models.JvnCpe{ {CpeBase: models.CpeBase{URI: "cpe:/o:vendor:product"}}, @@ -657,7 +657,7 @@ func Test_filterCVEDetailbyCPEURI(t *testing.T) { args: args{ uri: "cpe:/o:vmware:esxi:7.0:-", cve: &models.CveDetail{ - Nvd: []models.Nvd{ + Nvds: []models.Nvd{ { Cpes: []models.NvdCpe{ {CpeBase: models.CpeBase{ @@ -668,18 +668,18 @@ func Test_filterCVEDetailbyCPEURI(t *testing.T) { }, }, }, - Jvn: []models.Jvn{}, + Jvns: []models.Jvn{}, }, }, expected: &models.CveDetail{ - Nvd: []models.Nvd{}, - Jvn: []models.Jvn{}, + Nvds: []models.Nvd{}, + Jvns: []models.Jvn{}, }, }, } for i, tt := range tests { - _ = filterCVEDetailbyCPEURI(tt.args.uri, tt.args.cve) + _ = filterCveDetailByCpeURI(tt.args.uri, tt.args.cve) if !reflect.DeepEqual(tt.args.cve, tt.expected) { t.Errorf("[%d] expected: %+v, actual: %+v", i, tt.expected, tt.args.cve) } diff --git a/db/rdb.go b/db/rdb.go index f05d172c..2daedacb 100644 --- a/db/rdb.go +++ b/db/rdb.go @@ -212,7 +212,7 @@ func (r *RDBDriver) Get(cveID string) (*models.CveDetail, error) { Preload("Affects"). Preload("References"). Preload("Certs"). - Find(&detail.Nvd).Error + Find(&detail.Nvds).Error if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { return nil, err } @@ -224,7 +224,7 @@ func (r *RDBDriver) Get(cveID string) (*models.CveDetail, error) { Preload("Cpes"). Preload("References"). Preload("Certs"). - Find(&detail.Jvn).Error + Find(&detail.Jvns).Error if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { return nil, err } @@ -292,7 +292,7 @@ func (r *RDBDriver) GetCveIDsByCpeURI(uri string) (nvdCveIDs []string, jvnCveIDs if err != nil { return nil, nil, err } - if err := filterCVEDetailbyCPEURI(uri, d); err != nil { + if err := filterCveDetailByCpeURI(uri, d); err != nil { return nil, nil, err } nvdMatch, jvnMatch, err := matchCpe(uri, d) @@ -329,10 +329,10 @@ func (r *RDBDriver) GetByCpeURI(uri string) ([]models.CveDetail, error) { if err != nil { return nil, err } - if err := filterCVEDetailbyCPEURI(uri, d); err != nil { + if err := filterCveDetailByCpeURI(uri, d); err != nil { return nil, err } - if len(d.Nvd) > 0 || len(d.Jvn) > 0 { + if len(d.Nvds) > 0 || len(d.Jvns) > 0 { details = append(details, *d) } } diff --git a/db/redis.go b/db/redis.go index 53cb7077..9471a17a 100644 --- a/db/redis.go +++ b/db/redis.go @@ -142,7 +142,7 @@ func (r *RedisDriver) Get(cveID string) (*models.CveDetail, error) { if err != nil { return nil, err } - detail.Nvd = c.Nvd + detail.Nvds = c.Nvds if cveResult = r.conn.SMembers(ctx, jvnKeyPrefix+cveID); cveResult.Err() != nil { return nil, cveResult.Err() @@ -151,7 +151,7 @@ func (r *RedisDriver) Get(cveID string) (*models.CveDetail, error) { if err != nil { return nil, err } - detail.Jvn = c.Jvn + detail.Jvns = c.Jvns return &detail, nil } @@ -187,7 +187,7 @@ func (r *RedisDriver) unmarshal(cveID, cveType string, cveResult *redis.StringSl } } - cveDetail.Nvd = nvds + cveDetail.Nvds = nvds case models.JvnType: jvns := []models.Jvn{} for _, cveStr := range cveResult.Val() { @@ -201,7 +201,7 @@ func (r *RedisDriver) unmarshal(cveID, cveType string, cveResult *redis.StringSl } } - cveDetail.Jvn = jvns + cveDetail.Jvns = jvns default: return nil, xerrors.Errorf("Not Supported cveType: %s", cveType) } @@ -236,7 +236,7 @@ func (r *RedisDriver) GetCveIDsByCpeURI(uri string) ([]string, []string, error) if err != nil { return nil, nil, err } - if err := filterCVEDetailbyCPEURI(uri, d); err != nil { + if err := filterCveDetailByCpeURI(uri, d); err != nil { return nil, nil, err } nvdMatch, jvnMatch, err := matchCpe(uri, d) @@ -281,10 +281,10 @@ func (r *RedisDriver) GetByCpeURI(uri string) ([]models.CveDetail, error) { if err != nil { return nil, err } - if err := filterCVEDetailbyCPEURI(uri, d); err != nil { + if err := filterCveDetailByCpeURI(uri, d); err != nil { return nil, err } - if len(d.Nvd) > 0 || len(d.Jvn) > 0 { + if len(d.Nvds) > 0 || len(d.Jvns) > 0 { details = append(details, *d) } } diff --git a/models/models.go b/models/models.go index 62053a26..070e3446 100644 --- a/models/models.go +++ b/models/models.go @@ -159,24 +159,24 @@ func (f FetchMeta) OutDated() bool { // CveDetail : type CveDetail struct { CveID string - Nvd []Nvd - Jvn []Jvn + Nvds []Nvd + Jvns []Jvn } // HasNvd returns true if NVD contents func (c CveDetail) HasNvd() bool { - return len(c.Nvd) != 0 + return len(c.Nvds) != 0 } // HasJvn returns true if JVN contents func (c CveDetail) HasJvn() bool { - return len(c.Jvn) != 0 + return len(c.Jvns) != 0 } // CpeDetail : type CpeDetail struct { - Nvd []NvdCpe - Jvn []JvnCpe + Nvds []NvdCpe + Jvns []JvnCpe } // Components common to Nvd and Jvn diff --git a/models/models_test.go b/models/models_test.go index 9df8f568..37c051e1 100644 --- a/models/models_test.go +++ b/models/models_test.go @@ -84,8 +84,8 @@ func Test_FetchMeta(t *testing.T) { func TestCveDetail_HasJvn(t *testing.T) { type fields struct { - Nvd []Nvd - Jvn []Jvn + Nvds []Nvd + Jvns []Jvn } tests := []struct { name string @@ -95,32 +95,32 @@ func TestCveDetail_HasJvn(t *testing.T) { { name: "Jvn 0-slice", fields: fields{ - Nvd: []Nvd{{CveID: "CVE-2020-0930"}}, - Jvn: []Jvn{}, + Nvds: []Nvd{{CveID: "CVE-2020-0930"}}, + Jvns: []Jvn{}, }, want: false, }, { name: "Nvd 0-slice", fields: fields{ - Nvd: []Nvd{}, - Jvn: []Jvn{{CveID: "CVE-2020-0930"}}, + Nvds: []Nvd{}, + Jvns: []Jvn{{CveID: "CVE-2020-0930"}}, }, want: true, }, { name: "Jvn nil", fields: fields{ - Nvd: []Nvd{{CveID: "CVE-2020-0930"}}, - Jvn: nil, + Nvds: []Nvd{{CveID: "CVE-2020-0930"}}, + Jvns: nil, }, want: false, }, { name: "Nvd nil", fields: fields{ - Nvd: nil, - Jvn: []Jvn{{CveID: "CVE-2020-0930"}}, + Nvds: nil, + Jvns: []Jvn{{CveID: "CVE-2020-0930"}}, }, want: true, }, @@ -128,8 +128,8 @@ func TestCveDetail_HasJvn(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { c := CveDetail{ - Nvd: tt.fields.Nvd, - Jvn: tt.fields.Jvn, + Nvds: tt.fields.Nvds, + Jvns: tt.fields.Jvns, } if got := c.HasJvn(); got != tt.want { t.Errorf("CveDetail.hasJvn() = %v, want %v", got, tt.want) @@ -140,8 +140,8 @@ func TestCveDetail_HasJvn(t *testing.T) { func TestCveDetail_HasNvd(t *testing.T) { type fields struct { - Nvd []Nvd - Jvn []Jvn + Nvds []Nvd + Jvns []Jvn } tests := []struct { name string @@ -151,32 +151,32 @@ func TestCveDetail_HasNvd(t *testing.T) { { name: "Jvn 0-slice", fields: fields{ - Nvd: []Nvd{{CveID: "CVE-2020-0930"}}, - Jvn: []Jvn{}, + Nvds: []Nvd{{CveID: "CVE-2020-0930"}}, + Jvns: []Jvn{}, }, want: true, }, { name: "Nvd 0-slice", fields: fields{ - Nvd: []Nvd{}, - Jvn: []Jvn{{CveID: "CVE-2020-0930"}}, + Nvds: []Nvd{}, + Jvns: []Jvn{{CveID: "CVE-2020-0930"}}, }, want: false, }, { name: "Jvn nil", fields: fields{ - Nvd: []Nvd{{CveID: "CVE-2020-0930"}}, - Jvn: nil, + Nvds: []Nvd{{CveID: "CVE-2020-0930"}}, + Jvns: nil, }, want: true, }, { name: "Nvd nil", fields: fields{ - Nvd: nil, - Jvn: []Jvn{{CveID: "CVE-2020-0930"}}, + Nvds: nil, + Jvns: []Jvn{{CveID: "CVE-2020-0930"}}, }, want: false, }, @@ -184,8 +184,8 @@ func TestCveDetail_HasNvd(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { c := CveDetail{ - Nvd: tt.fields.Nvd, - Jvn: tt.fields.Jvn, + Nvds: tt.fields.Nvds, + Jvns: tt.fields.Jvns, } if got := c.HasNvd(); got != tt.want { t.Errorf("CveDetail.hasNvd() = %v, want %v", got, tt.want)