a3d46d52a8
test / release-check (push) Has been skipped
test / 1.25/macos-14 (push) Has been cancelled
test / 1.25/macos-latest (push) Has been cancelled
test / 1.25/ubuntu-latest (push) Has been cancelled
test / 1.25/windows-latest (push) Has been cancelled
test / 1.26/macos-14 (push) Has been cancelled
test / 1.26/macos-latest (push) Has been cancelled
test / 1.26/ubuntu-latest (push) Has been cancelled
test / 1.26/windows-latest (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled
45 lines
758 B
Go
45 lines
758 B
Go
// Package ossfuzz provides a fuzzing target for OSS-Fuzz.
|
|
package ossfuzz
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
"strings"
|
|
|
|
"git.ostiwe.com/ostiwe/go-toml/v2"
|
|
)
|
|
|
|
// FuzzToml is the fuzzing target.
|
|
func FuzzToml(data []byte) int {
|
|
if len(data) >= 2048 {
|
|
return 0
|
|
}
|
|
|
|
if strings.Contains(string(data), "nan") {
|
|
return 0
|
|
}
|
|
|
|
var v interface{}
|
|
err := toml.Unmarshal(data, &v)
|
|
if err != nil {
|
|
return 0
|
|
}
|
|
|
|
encoded, err := toml.Marshal(v)
|
|
if err != nil {
|
|
panic(fmt.Sprintf("failed to marshal unmarshaled document: %s", err))
|
|
}
|
|
|
|
var v2 interface{}
|
|
err = toml.Unmarshal(encoded, &v2)
|
|
if err != nil {
|
|
panic(fmt.Sprintf("failed round trip: %s", err))
|
|
}
|
|
|
|
if !reflect.DeepEqual(v, v2) {
|
|
panic(fmt.Sprintf("not equal: %#+v %#+v", v, v2))
|
|
}
|
|
|
|
return 1
|
|
}
|