fuzz.go raw

   1  // Copyright (c) 2018 Andrei Tudor Călin <mail@acln.ro>
   2  //
   3  // Permission is hereby granted, free of charge, to any person obtaining
   4  // a copy of this software and associated documentation files (the
   5  // "Software"), to deal in the Software without restriction, including
   6  // without limitation the rights to use, copy, modify, merge, publish,
   7  // distribute, sublicense, and/or sell copies of the Software, and to
   8  // permit persons to whom the Software is furnished to do so, subject to
   9  // the following conditions:
  10  //
  11  // The above copyright notice and this permission notice shall be
  12  // included in all copies or substantial portions of the Software.
  13  //
  14  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  15  // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  16  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  17  // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  18  // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  19  // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  20  // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  21  
  22  //go:build gofuzz
  23  // +build gofuzz
  24  
  25  package uuid
  26  
  27  // Fuzz implements a simple fuzz test for FromString / UnmarshalText.
  28  //
  29  // To run:
  30  //
  31  //	$ go get github.com/dvyukov/go-fuzz/...
  32  //	$ cd $GOPATH/src/github.com/gofrs/uuid
  33  //	$ go-fuzz-build github.com/gofrs/uuid
  34  //	$ go-fuzz -bin=uuid-fuzz.zip -workdir=./testdata
  35  //
  36  // If you make significant changes to FromString / UnmarshalText and add
  37  // new cases to fromStringTests (in codec_test.go), please run
  38  //
  39  //	$ go test -seed_fuzz_corpus
  40  //
  41  // to seed the corpus with the new interesting inputs, then run the fuzzer.
  42  func Fuzz(data []byte) int {
  43  	_, err := FromString(string(data))
  44  	if err != nil {
  45  		return 0
  46  	}
  47  	return 1
  48  }
  49