From 94415f75174cba77a9b1cc7745d660e654170af0 Mon Sep 17 00:00:00 2001 From: AdamKorcz <44787359+AdamKorcz@users.noreply.github.com> Date: Thu, 10 Dec 2020 19:43:11 +0000 Subject: [PATCH] Added 2 fuzzers (#13818) * Added fuzzer Signed-off-by: AdamKorcz * Added better fuzzer names Signed-off-by: AdamKorcz * Moved fuzzer to /tools * Update tools/fuzz.go Co-authored-by: 6543 <6543@obermui.de> * Update tools/fuzz.go * Update tools/fuzz.go Co-authored-by: silverwind * Added tools to Makefile Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: silverwind Co-authored-by: zeripath --- Makefile | 2 +- tools/fuzz.go | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 tools/fuzz.go diff --git a/Makefile b/Makefile index 0e33047aa..e21cf20f8 100644 --- a/Makefile +++ b/Makefile @@ -110,7 +110,7 @@ TAGS ?= TAGS_SPLIT := $(subst $(COMMA), ,$(TAGS)) TAGS_EVIDENCE := $(MAKE_EVIDENCE_DIR)/tags -GO_DIRS := cmd integrations models modules routers build services vendor +GO_DIRS := cmd integrations models modules routers build services vendor tools GO_SOURCES := $(wildcard *.go) GO_SOURCES += $(shell find $(GO_DIRS) -type f -name "*.go" -not -path modules/options/bindata.go -not -path modules/public/bindata.go -not -path modules/templates/bindata.go) diff --git a/tools/fuzz.go b/tools/fuzz.go new file mode 100644 index 000000000..6ed1b4000 --- /dev/null +++ b/tools/fuzz.go @@ -0,0 +1,36 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +// +build gofuzz + +package fuzz + +import ( + "code.gitea.io/gitea/modules/markup" + "code.gitea.io/gitea/modules/markup/markdown" +) + +// 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. + +func FuzzMarkdownRenderRaw(data []byte) int { + _ = markdown.RenderRaw(data, "", false) + return 1 +} + +func FuzzMarkupPostProcess(data []byte) int { + var localMetas = map[string]string{ + "user": "go-gitea", + "repo": "gitea", + } + _, err := markup.PostProcess(data, "https://example.com", localMetas, false) + if err != nil { + return 0 + } + return 1 +}