Skip to content

Commit

Permalink
Decode method returns nil in error (issue #31)
Browse files Browse the repository at this point in the history
  • Loading branch information
spiegel-im-spiegel committed Feb 4, 2023
1 parent b07fdce commit 62554fe
Show file tree
Hide file tree
Showing 10 changed files with 55 additions and 44 deletions.
4 changes: 1 addition & 3 deletions .github/workflows/vulns.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
name: vulns
on:
push:
tags:
- v*
branches:
- master
pull_request:
Expand All @@ -14,7 +12,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: ^1.19
go-version: ^1.20
- name: WriteGoList
run: go list -json -m all > go.list
- name: Nancy
Expand Down
2 changes: 1 addition & 1 deletion Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,4 @@ tasks:
clean:
desc: Initialize module and build cache, and remake go.sum file.
cmds:
- go mod tidy -v -go=1.19
- go mod tidy -v -go=1.20
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/goark/go-cvss

go 1.19
go 1.20

require (
github.com/goark/errs v1.1.0
Expand Down
6 changes: 3 additions & 3 deletions v2/metric/base.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,14 @@ func (m *Base) Decode(vector string) (*Base, error) {
}
}
if lastErr != nil {
return m, lastErr
return nil, lastErr
}
enc, err := m.Encode()
if err != nil {
return m, errs.Wrap(err, errs.WithContext("vector", vector))
return nil, errs.Wrap(err, errs.WithContext("vector", vector))
}
if vector != enc {
return m, errs.Wrap(cvsserr.ErrMisordered, errs.WithContext("vector", vector))
return nil, errs.Wrap(cvsserr.ErrMisordered, errs.WithContext("vector", vector))
}
return m, nil
}
Expand Down
6 changes: 3 additions & 3 deletions v2/metric/environmental.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,14 @@ func (m *Environmental) Decode(vector string) (*Environmental, error) {
}
}
if lastErr != nil {
return m, lastErr
return nil, lastErr
}
enc, err := m.Encode()
if err != nil {
return m, errs.Wrap(err, errs.WithContext("vector", vector))
return nil, errs.Wrap(err, errs.WithContext("vector", vector))
}
if vector != enc {
return m, errs.Wrap(cvsserr.ErrMisordered, errs.WithContext("vector", vector))
return nil, errs.Wrap(cvsserr.ErrMisordered, errs.WithContext("vector", vector))
}
return m, nil
}
Expand Down
6 changes: 3 additions & 3 deletions v2/metric/temporal.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,14 @@ func (m *Temporal) Decode(vector string) (*Temporal, error) {
}
}
if lastErr != nil {
return m, lastErr
return nil, lastErr
}
enc, err := m.Encode()
if err != nil {
return m, errs.Wrap(err, errs.WithContext("vector", vector))
return nil, errs.Wrap(err, errs.WithContext("vector", vector))
}
if vector != enc {
return m, errs.Wrap(cvsserr.ErrMisordered, errs.WithContext("vector", vector))
return nil, errs.Wrap(cvsserr.ErrMisordered, errs.WithContext("vector", vector))
}
return m, nil
}
Expand Down
11 changes: 7 additions & 4 deletions v3/metric/base.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,10 @@ func (bm *Base) Decode(vector string) (*Base, error) {
//CVSS version
ver, err := GetVersion(values[0])
if err != nil {
return bm, errs.Wrap(err, errs.WithContext("vector", vector))
return nil, errs.Wrap(err, errs.WithContext("vector", vector))
}
if ver == VUnknown {
return bm, errs.Wrap(cvsserr.ErrNotSupportVer, errs.WithContext("vector", vector))
return nil, errs.Wrap(cvsserr.ErrNotSupportVer, errs.WithContext("vector", vector))
}
bm.Ver = ver
//parse vector
Expand All @@ -75,9 +75,12 @@ func (bm *Base) Decode(vector string) (*Base, error) {
}
}
if lastErr != nil {
return bm, lastErr
return nil, lastErr
}
return bm, bm.GetError()
if err := bm.GetError(); err != nil {
return nil, err
}
return bm, nil
}
func (bm *Base) decodeOne(str string) error {
m := strings.Split(str, ":")
Expand Down
40 changes: 22 additions & 18 deletions v3/metric/base_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,13 @@ func TestDecodeEncode(t *testing.T) {
v, err := m.Encode()
if err != nil {
t.Errorf("Encode() = \"%+v\", want <nil>.", err)
}
if v != tc.vector {
t.Errorf("Encode() = \"%v\", want \"%v\".", v, tc.vector)
}
if m.String() != tc.vector {
t.Errorf("String() = \"%v\", want \"%v\".", m.String(), tc.vector)
} else {
if v != tc.vector {
t.Errorf("Encode() = \"%v\", want \"%v\".", v, tc.vector)
}
if m.String() != tc.vector {
t.Errorf("String() = \"%v\", want \"%v\".", m.String(), tc.vector)
}
}
}
}
Expand All @@ -90,7 +91,6 @@ func TestScore(t *testing.T) {
score float64
severity Severity
}{
{vector: "CVSS:3.0/AV:P/AC:H/PR:H/UI:R/S:U/C:N/I:N", score: 0.0, severity: SeverityNone}, //error
//CVSSv3.0
{vector: "CVSS:3.0/AV:P/AC:H/PR:H/UI:R/S:U/C:N/I:N/A:N", score: 0.0, severity: SeverityNone}, //Zero metrics
{vector: "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N", score: 7.5, severity: SeverityHigh}, //CVE-2015-8252
Expand Down Expand Up @@ -140,17 +140,21 @@ func TestScore(t *testing.T) {
}

for _, tc := range testCases {
m, _ := NewBase().Decode(tc.vector)
score := m.Score()
if got := m.String(); got != tc.vector {
t.Errorf("String() = %v, want %v.", got, tc.vector)
}
if score != tc.score {
t.Errorf("Score(%s) = %v, want %v.", tc.vector, score, tc.score)
}
severity := m.Severity()
if severity.String() != tc.severity.String() {
t.Errorf("Score(%s) = %v, want %v.", tc.vector, severity, tc.severity)
m, err := NewBase().Decode(tc.vector)
if err != nil {
t.Errorf("Decode(%v) is %v, want <nil>.", tc.vector, err)
} else {
score := m.Score()
if got := m.String(); got != tc.vector {
t.Errorf("String() = %v, want %v.", got, tc.vector)
}
if score != tc.score {
t.Errorf("Score(%s) = %v, want %v.", tc.vector, score, tc.score)
}
severity := m.Severity()
if severity.String() != tc.severity.String() {
t.Errorf("Score(%s) = %v, want %v.", tc.vector, severity, tc.severity)
}
}
}
}
Expand Down
11 changes: 7 additions & 4 deletions v3/metric/environmental.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,10 @@ func (em *Environmental) Decode(vector string) (*Environmental, error) {
//CVSS version
ver, err := GetVersion(values[0])
if err != nil {
return em, errs.Wrap(err, errs.WithContext("vector", vector))
return nil, errs.Wrap(err, errs.WithContext("vector", vector))
}
if ver == VUnknown {
return em, errs.Wrap(cvsserr.ErrNotSupportVer, errs.WithContext("vector", vector))
return nil, errs.Wrap(cvsserr.ErrNotSupportVer, errs.WithContext("vector", vector))
}
em.Ver = ver
//parse vector
Expand All @@ -84,9 +84,12 @@ func (em *Environmental) Decode(vector string) (*Environmental, error) {
}
}
if lastErr != nil {
return em, lastErr
return nil, lastErr
}
return em, em.GetError()
if err := em.GetError(); err != nil {
return nil, err
}
return em, nil
}
func (em *Environmental) decodeOne(str string) error {
if err := em.Temporal.decodeOne(str); err != nil {
Expand Down
11 changes: 7 additions & 4 deletions v3/metric/temporal.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,10 @@ func (tm *Temporal) Decode(vector string) (*Temporal, error) {
//CVSS version
ver, err := GetVersion(values[0])
if err != nil {
return tm, errs.Wrap(err, errs.WithContext("vector", vector))
return nil, errs.Wrap(err, errs.WithContext("vector", vector))
}
if ver == VUnknown {
return tm, errs.Wrap(cvsserr.ErrNotSupportVer, errs.WithContext("vector", vector))
return nil, errs.Wrap(cvsserr.ErrNotSupportVer, errs.WithContext("vector", vector))
}
tm.Ver = ver
//parse vector
Expand All @@ -59,9 +59,12 @@ func (tm *Temporal) Decode(vector string) (*Temporal, error) {
}
}
if lastErr != nil {
return tm, lastErr
return nil, lastErr
}
return tm, tm.GetError()
if err := tm.GetError(); err != nil {
return nil, err
}
return tm, nil
}
func (tm *Temporal) decodeOne(str string) error {
if err := tm.Base.decodeOne(str); err != nil {
Expand Down

0 comments on commit 62554fe

Please sign in to comment.