forked from mirror/jwt
Fix int64 overflow in newNumericDateFromSeconds (#112)
This commit is contained in:
parent
c0ffb890f3
commit
a2aa655627
4
types.go
4
types.go
|
@ -3,6 +3,7 @@ package jwt
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"math"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
@ -41,7 +42,8 @@ func NewNumericDate(t time.Time) *NumericDate {
|
||||||
// newNumericDateFromSeconds creates a new *NumericDate out of a float64 representing a
|
// newNumericDateFromSeconds creates a new *NumericDate out of a float64 representing a
|
||||||
// UNIX epoch with the float fraction representing non-integer seconds.
|
// UNIX epoch with the float fraction representing non-integer seconds.
|
||||||
func newNumericDateFromSeconds(f float64) *NumericDate {
|
func newNumericDateFromSeconds(f float64) *NumericDate {
|
||||||
return NewNumericDate(time.Unix(0, int64(f*float64(time.Second))))
|
round, frac := math.Modf(f)
|
||||||
|
return NewNumericDate(time.Unix(int64(round), int64(frac*1e9)))
|
||||||
}
|
}
|
||||||
|
|
||||||
// MarshalJSON is an implementation of the json.RawMessage interface and serializes the UNIX epoch
|
// MarshalJSON is an implementation of the json.RawMessage interface and serializes the UNIX epoch
|
||||||
|
|
Loading…
Reference in New Issue