summaryrefslogtreecommitdiff
path: root/src/pkg/asn1/asn1.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/asn1/asn1.go')
-rw-r--r--src/pkg/asn1/asn1.go11
1 files changed, 2 insertions, 9 deletions
diff --git a/src/pkg/asn1/asn1.go b/src/pkg/asn1/asn1.go
index a422f28ad..430b035f5 100644
--- a/src/pkg/asn1/asn1.go
+++ b/src/pkg/asn1/asn1.go
@@ -609,6 +609,7 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam
return
}
innerBytes := bytes[offset : offset+t.length]
+ offset += t.length
// We deal with the structures defined in this package first.
switch fieldType {
@@ -619,13 +620,11 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam
if err1 == nil {
reflect.ArrayCopy(sliceValue, reflect.NewValue(newSlice).(reflect.ArrayOrSliceValue))
}
- offset += t.length
err = err1
return
case bitStringType:
structValue := v.(*reflect.StructValue)
bs, err1 := parseBitString(innerBytes)
- offset += t.length
if err1 == nil {
structValue.Set(reflect.NewValue(bs).(*reflect.StructValue))
}
@@ -634,7 +633,6 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam
case timeType:
ptrValue := v.(*reflect.PtrValue)
time, err1 := parseUTCTime(innerBytes)
- offset += t.length
if err1 == nil {
ptrValue.Set(reflect.NewValue(time).(*reflect.PtrValue))
}
@@ -644,7 +642,6 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam
switch val := v.(type) {
case *reflect.BoolValue:
parsedBool, err1 := parseBool(innerBytes)
- offset += t.length
if err1 == nil {
val.Set(parsedBool)
}
@@ -652,7 +649,6 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam
return
case *reflect.IntValue:
parsedInt, err1 := parseInt(innerBytes)
- offset += t.length
if err1 == nil {
val.Set(parsedInt)
}
@@ -660,7 +656,6 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam
return
case *reflect.Int64Value:
parsedInt, err1 := parseInt64(innerBytes)
- offset += t.length
if err1 == nil {
val.Set(parsedInt)
}
@@ -671,7 +666,7 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam
if structType.NumField() > 0 &&
structType.Field(0).Type == rawContentsType {
- bytes := bytes[initOffset : offset+t.length]
+ bytes := bytes[initOffset:offset]
val.Field(0).SetValue(reflect.NewValue(RawContent(bytes)))
}
@@ -686,7 +681,6 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam
return
}
}
- offset += t.length
// We allow extra bytes at the end of the SEQUENCE because
// adding elements to the end has been used in X.509 as the
// version numbers have increased.
@@ -699,7 +693,6 @@ func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParam
return
}
newSlice, err1 := parseSequenceOf(innerBytes, sliceType, sliceType.Elem())
- offset += t.length
if err1 == nil {
val.Set(newSlice)
}