From 906d8cc5dc41d41f0cd9230d99aa08acb7c8f6f5 Mon Sep 17 00:00:00 2001
From: AdamKorcz <44787359+AdamKorcz@users.noreply.github.com>
Date: Thu, 5 Jan 2023 02:33:00 +0000
Subject: [PATCH] Rewrite fuzzers to native Go harnesses (#22313)

---
 tools/fuzz.go      | 50 ----------------------------------------------
 tools/fuzz_test.go | 38 +++++++++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+), 50 deletions(-)
 delete mode 100644 tools/fuzz.go
 create mode 100644 tools/fuzz_test.go

diff --git a/tools/fuzz.go b/tools/fuzz.go
deleted file mode 100644
index 449ba67067..0000000000
--- a/tools/fuzz.go
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2020 The Gitea Authors. All rights reserved.
-// SPDX-License-Identifier: MIT
-
-//go:build gofuzz
-
-package fuzz
-
-import (
-	"bytes"
-	"context"
-	"io"
-
-	"code.gitea.io/gitea/modules/markup"
-	"code.gitea.io/gitea/modules/markup/markdown"
-	"code.gitea.io/gitea/modules/setting"
-)
-
-// Contains fuzzing functions executed by
-// fuzzing engine https://github.com/dvyukov/go-fuzz
-//
-// The function must return 1 if the fuzzer should increase priority of the given input during subsequent fuzzing
-// (for example, the input is lexically correct and was parsed successfully).
-// -1 if the input must not be added to corpus even if gives new coverage and 0 otherwise.
-
-var renderContext = markup.RenderContext{
-	Ctx:       context.Background(),
-	URLPrefix: "https://example.com/go-gitea/gitea",
-	Metas: map[string]string{
-		"user": "go-gitea",
-		"repo": "gitea",
-	},
-}
-
-func FuzzMarkdownRenderRaw(data []byte) int {
-	setting.AppURL = "http://localhost:3000/"
-	err := markdown.RenderRaw(&renderContext, bytes.NewReader(data), io.Discard)
-	if err != nil {
-		return 0
-	}
-	return 1
-}
-
-func FuzzMarkupPostProcess(data []byte) int {
-	setting.AppURL = "http://localhost:3000/"
-	err := markup.PostProcess(&renderContext, bytes.NewReader(data), io.Discard)
-	if err != nil {
-		return 0
-	}
-	return 1
-}
diff --git a/tools/fuzz_test.go b/tools/fuzz_test.go
new file mode 100644
index 0000000000..106ed19a42
--- /dev/null
+++ b/tools/fuzz_test.go
@@ -0,0 +1,38 @@
+// Copyright 2023 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package main
+
+import (
+	"bytes"
+	"context"
+	"io"
+	"testing"
+
+	"code.gitea.io/gitea/modules/markup"
+	"code.gitea.io/gitea/modules/markup/markdown"
+	"code.gitea.io/gitea/modules/setting"
+)
+
+var renderContext = markup.RenderContext{
+	Ctx:       context.Background(),
+	URLPrefix: "https://example.com/go-gitea/gitea",
+	Metas: map[string]string{
+		"user": "go-gitea",
+		"repo": "gitea",
+	},
+}
+
+func FuzzMarkdownRenderRaw(f *testing.F) {
+	f.Fuzz(func(t *testing.T, data []byte) {
+		setting.AppURL = "http://localhost:3000/"
+		markdown.RenderRaw(&renderContext, bytes.NewReader(data), io.Discard)
+	})
+}
+
+func FuzzMarkupPostProcess(f *testing.F) {
+	f.Fuzz(func(t *testing.T, data []byte) {
+		setting.AppURL = "http://localhost:3000/"
+		markup.PostProcess(&renderContext, bytes.NewReader(data), io.Discard)
+	})
+}