+++ /dev/null
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build gofuzz
-
-package png
-
-import (
- "bytes"
- "fmt"
-)
-
-func Fuzz(data []byte) int {
- cfg, err := DecodeConfig(bytes.NewReader(data))
- if err != nil {
- return 0
- }
- if cfg.Width*cfg.Height > 1e6 {
- return 0
- }
- img, err := Decode(bytes.NewReader(data))
- if err != nil {
- return 0
- }
- levels := []CompressionLevel{
- DefaultCompression,
- NoCompression,
- BestSpeed,
- BestCompression,
- }
- for _, l := range levels {
- var w bytes.Buffer
- e := &Encoder{CompressionLevel: l}
- err = e.Encode(&w, img)
- if err != nil {
- panic(err)
- }
- img1, err := Decode(&w)
- if err != nil {
- panic(err)
- }
- got := img1.Bounds()
- want := img.Bounds()
- if !got.Eq(want) {
- fmt.Printf("bounds0: %#v\n", want)
- fmt.Printf("bounds1: %#v\n", got)
- panic("bounds have changed")
- }
- }
- return 1
-}