func Fuzz(data []byte) int { n, err := snappy.DecodedLen(data) if err != nil || n > 1e6 { return 0 } if n < 0 { panic("negative decoded len") } dec, err := snappy.Decode(nil, data) if err != nil { if dec != nil { panic("dec is not nil") } return 0 } if len(dec) != n { println(len(dec), n) panic("bad decoded len") } n = snappy.MaxEncodedLen(len(dec)) enc, err := snappy.Encode(nil, dec) if err != nil { panic(err) } if len(enc) > n { panic("bad encoded len") } return 1 }
func (s *hopCipher) encrypt(msg []byte) []byte { cmsg := make([]byte, snappy.MaxEncodedLen(len(msg))) cmsg, _ = snappy.Encode(cmsg, msg) pmsg := PKCS5Padding(cmsg, cipherBlockSize) buf := make([]byte, len(pmsg)+cipherBlockSize) iv := buf[:cipherBlockSize] rand.Read(iv) encrypter := _cipher.NewCBCEncrypter(s.block, iv) encrypter.CryptBlocks(buf[cipherBlockSize:], pmsg) return buf }