diff options
Diffstat (limited to 'src/pkg/asn1/asn1.go')
| -rw-r--r-- | src/pkg/asn1/asn1.go | 11 |
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) } |
