Skip to content

Instantly share code, notes, and snippets.

@dgryski
Created March 8, 2016 08:22
Show Gist options
  • Save dgryski/6f1b8caebf65dc489f7b to your computer and use it in GitHub Desktop.
Save dgryski/6f1b8caebf65dc489f7b to your computer and use it in GitHub Desktop.
// +build gofuzz
package snappy
import (
"bytes"
)
func Fuzz(data []byte) int {
src := data
dLen, s, err := decodedLen(src)
if err != nil {
return 0
}
if dLen > 1e6 || dLen <= 0 {
return 0
}
dstGo := make([]byte, dLen)
decGo := decode_go(dstGo, src[s:])
dstAsm := make([]byte, dLen+10)
for i := 0; i < dLen+10; i++ {
dstAsm[i] = 0xff
}
decAsm := decode_asm(dstAsm[:dLen], src[s:])
if decGo != decAsm {
panic("behaviour mismatch")
}
if decGo != 0 {
return 0
}
if !bytes.Equal(dstGo, dstAsm[:dLen]) {
panic("output mismatch")
}
for i := 0; i < 10; i++ {
if dstAsm[dLen+i] != 0xff {
panic("buffer overwrite")
}
}
return 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment