mirror of
https://github.com/golang/go
synced 2024-11-21 22:54:40 -07:00
asn1 incorrectly encoded signed integers. When determining the
encoded length it was not taking into account the sign bit. Fixes #997. R=agl1, gri CC=golang-dev https://golang.org/cl/1870047
This commit is contained in:
parent
bc4a9caa41
commit
e2c7e53dcf
@ -123,13 +123,20 @@ func marshalInt64(out *forkableWriter, i int64) (err os.Error) {
|
||||
}
|
||||
|
||||
func int64Length(i int64) (numBytes int) {
|
||||
if i == 0 {
|
||||
return 1
|
||||
numBytes = 1
|
||||
|
||||
if i > 0 {
|
||||
for i > 127 {
|
||||
numBytes++
|
||||
i >>= 8
|
||||
}
|
||||
}
|
||||
|
||||
for i > 0 {
|
||||
numBytes++
|
||||
i >>= 8
|
||||
if i < 0 {
|
||||
for i < -128 {
|
||||
numBytes++
|
||||
i >>= 8
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
|
@ -59,6 +59,10 @@ type marshalTest struct {
|
||||
|
||||
var marshalTests = []marshalTest{
|
||||
marshalTest{10, "02010a"},
|
||||
marshalTest{127, "02017f"},
|
||||
marshalTest{128, "02020080"},
|
||||
marshalTest{-128, "020180"},
|
||||
marshalTest{-129, "0202ff7f"},
|
||||
marshalTest{intStruct{64}, "3003020140"},
|
||||
marshalTest{twoIntStruct{64, 65}, "3006020140020141"},
|
||||
marshalTest{nestedStruct{intStruct{127}}, "3005300302017f"},
|
||||
|
Loading…
Reference in New Issue
Block a user