mirror of
https://github.com/json-iterator/go.git
synced 2025-05-13 21:36:29 +02:00
fix #274, unescape before base64 decode
This commit is contained in:
parent
6c702ce12a
commit
37cc313d18
@ -416,16 +416,11 @@ func (codec *base64Codec) Decode(ptr unsafe.Pointer, iter *Iterator) {
|
|||||||
}
|
}
|
||||||
switch iter.WhatIsNext() {
|
switch iter.WhatIsNext() {
|
||||||
case StringValue:
|
case StringValue:
|
||||||
encoding := base64.StdEncoding
|
src := iter.ReadString()
|
||||||
src := iter.SkipAndReturnBytes()
|
dst, err := base64.StdEncoding.DecodeString(src)
|
||||||
src = src[1 : len(src)-1]
|
|
||||||
decodedLen := encoding.DecodedLen(len(src))
|
|
||||||
dst := make([]byte, decodedLen)
|
|
||||||
len, err := encoding.Decode(dst, src)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
iter.ReportError("decode base64", err.Error())
|
iter.ReportError("decode base64", err.Error())
|
||||||
} else {
|
} else {
|
||||||
dst = dst[:len]
|
|
||||||
codec.sliceType.UnsafeSet(ptr, unsafe.Pointer(&dst))
|
codec.sliceType.UnsafeSet(ptr, unsafe.Pointer(&dst))
|
||||||
}
|
}
|
||||||
case ArrayValue:
|
case ArrayValue:
|
||||||
|
@ -20,5 +20,8 @@ func init() {
|
|||||||
}, unmarshalCase{
|
}, unmarshalCase{
|
||||||
ptr: (*[]byte)(nil),
|
ptr: (*[]byte)(nil),
|
||||||
input: `"aGVsbG8="`,
|
input: `"aGVsbG8="`,
|
||||||
|
}, unmarshalCase{
|
||||||
|
ptr: (*[]byte)(nil),
|
||||||
|
input: `"c3ViamVjdHM\/X2Q9MQ=="`,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user