git.lucas.co / go_mono
git clone https://git.lucas.co/go_mono.git

tiff/fuzz.go (532B)

 1 // Copyright 2019 The Go Authors. All rights reserved.
 2 // Use of this source code is governed by a BSD-style
 3 // license that can be found in the LICENSE file.
 4 
 5 //go:build gofuzz
 6 
 7 package tiff
 8 
 9 import "bytes"
10 
11 func Fuzz(data []byte) int {
12 	cfg, err := DecodeConfig(bytes.NewReader(data))
13 	if err != nil {
14 		return 0
15 	}
16 	if cfg.Width*cfg.Height > 1e6 {
17 		return 0
18 	}
19 	img, err := Decode(bytes.NewReader(data))
20 	if err != nil {
21 		return 0
22 	}
23 	var w bytes.Buffer
24 	err = Encode(&w, img, nil)
25 	if err != nil {
26 		panic(err)
27 	}
28 	return 1
29 }