aboutsummaryrefslogtreecommitdiff
path: root/cvss/v2score.go
blob: 5740c0929438d1d530b9f1ca3141758719f30270 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package cvss

import (
  "fmt"
)

// Individual CVSS v2 score.
//
// Note: since scores range from 0.0 to 10.0 with one decimal place of
// precision, they can be safely represented as a uint8.
type v2Score uint8

// Return floating point representation of score.
func newV2Score(val float64) (v2Score, error) {
  // check score range
  if val < 0.0 || val > 10.0 {
    return v2Score(0), fmt.Errorf("score value out of range [0, 10]: %f", val)
  }

  // convert to score, return success
  return v2Score(uint8(10.0 * val)), nil
}

// Return string representation of score.
func (s v2Score) String() string {
  return fmt.Sprintf("%d.%d", s / 10, s % 10)
}

// Return floating point representation of score.
func (s v2Score) Float() float32 {
  return float32(s) / 10.0
}