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) + }) +}