32 lines
651 B
Go
32 lines
651 B
Go
package main
|
|
|
|
import (
|
|
crand "crypto/rand"
|
|
"encoding/hex"
|
|
"fmt"
|
|
"github.com/Sereal/Sereal/Go/sereal"
|
|
mrand "math/rand"
|
|
)
|
|
|
|
func main() {
|
|
|
|
srlHeader, _ := hex.DecodeString("3d73726c0100")
|
|
|
|
var decoder sereal.Decoder
|
|
decoder.PerlCompat = true
|
|
|
|
for {
|
|
l := len(srlHeader) + mrand.Intn(200)
|
|
b := make([]byte, l)
|
|
crand.Read(b)
|
|
doc := make([]byte, l + len(srlHeader))
|
|
copy(doc, srlHeader)
|
|
copy(doc[6:], b)
|
|
fmt.Println(hex.Dump(doc))
|
|
var m interface{}
|
|
err := decoder.Unmarshal(doc, &m)
|
|
fmt.Println("err=", err)
|
|
}
|
|
|
|
}
|