github.com/decred/dcrlnd@v0.7.6/fuzz/lnwire/reply_channel_range_zlib.go (about) 1 //go:build gofuzz 2 // +build gofuzz 3 4 package lnwirefuzz 5 6 import ( 7 "bytes" 8 "compress/zlib" 9 "encoding/binary" 10 11 "github.com/decred/dcrlnd/lnwire" 12 ) 13 14 // Fuzz_reply_channel_range_zlib is used by go-fuzz. 15 func Fuzz_reply_channel_range_zlib(data []byte) int { 16 17 var buf bytes.Buffer 18 zlibWriter := zlib.NewWriter(&buf) 19 _, err := zlibWriter.Write(data) 20 if err != nil { 21 // Zlib bug? 22 panic(err) 23 } 24 25 if err := zlibWriter.Close(); err != nil { 26 // Zlib bug? 27 panic(err) 28 } 29 30 compressedPayload := buf.Bytes() 31 32 // Initialize some []byte vars which will prefix our payload 33 chainhash := []byte("00000000000000000000000000000000") 34 firstBlockHeight := []byte("\x00\x00\x00\x00") 35 numBlocks := []byte("\x00\x00\x00\x00") 36 completeByte := []byte("\x00") 37 38 numBytesInBody := len(compressedPayload) + 1 39 zlibByte := []byte("\x01") 40 41 bodyBytes := make([]byte, 2) 42 binary.BigEndian.PutUint16(bodyBytes, uint16(numBytesInBody)) 43 44 payload := append(chainhash, firstBlockHeight...) 45 payload = append(payload, numBlocks...) 46 payload = append(payload, completeByte...) 47 payload = append(payload, bodyBytes...) 48 payload = append(payload, zlibByte...) 49 payload = append(payload, compressedPayload...) 50 51 // Prefix with MsgReplyChannelRange. 52 payload = prefixWithMsgType(payload, lnwire.MsgReplyChannelRange) 53 54 // Pass the message into our general fuzz harness for wire messages! 55 return harness(payload) 56 }