| 65 | }() |
| 66 | |
| 67 | func crashSignature(panicMsg string, stack []byte) string { |
| 68 | var key strings.Builder |
| 69 | key.WriteString(panicMsg) |
| 70 | for _, line := range strings.Split(string(stack), "\n") { |
| 71 | if strings.Contains(line, "github.com/buger/jsonparser/") && |
| 72 | !strings.Contains(line, "fuzz_native_test.go") && |
| 73 | !strings.Contains(line, "/fuzz.go:") { |
| 74 | key.WriteString("|") |
| 75 | key.WriteString(strings.TrimSpace(line)) |
| 76 | break |
| 77 | } |
| 78 | } |
| 79 | sum := sha256.Sum256([]byte(key.String())) |
| 80 | return hex.EncodeToString(sum[:])[:12] |
| 81 | } |
| 82 | |
| 83 | func recordCrash(target string, panicVal interface{}, stack, input []byte) { |
| 84 | panicMsg := fmt.Sprintf("%v", panicVal) |