fuzz.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. // Copyright 2014 The Prometheus Authors
  2. // Licensed under the Apache License, Version 2.0 (the "License");
  3. // you may not use this file except in compliance with the License.
  4. // You may obtain a copy of the License at
  5. //
  6. // http://www.apache.org/licenses/LICENSE-2.0
  7. //
  8. // Unless required by applicable law or agreed to in writing, software
  9. // distributed under the License is distributed on an "AS IS" BASIS,
  10. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  11. // See the License for the specific language governing permissions and
  12. // limitations under the License.
  13. // Build only when actually fuzzing
  14. // +build gofuzz
  15. package expfmt
  16. import "bytes"
  17. // Fuzz text metric parser with with github.com/dvyukov/go-fuzz:
  18. //
  19. // go-fuzz-build github.com/prometheus/common/expfmt
  20. // go-fuzz -bin expfmt-fuzz.zip -workdir fuzz
  21. //
  22. // Further input samples should go in the folder fuzz/corpus.
  23. func Fuzz(in []byte) int {
  24. parser := TextParser{}
  25. _, err := parser.TextToMetricFamilies(bytes.NewReader(in))
  26. if err != nil {
  27. return 0
  28. }
  29. return 1
  30. }