]> source.dussan.org Git - gitea.git/commitdiff
Added 2 fuzzers (#13818)
authorAdamKorcz <44787359+AdamKorcz@users.noreply.github.com>
Thu, 10 Dec 2020 19:43:11 +0000 (19:43 +0000)
committerGitHub <noreply@github.com>
Thu, 10 Dec 2020 19:43:11 +0000 (20:43 +0100)
* Added fuzzer

Signed-off-by: AdamKorcz <adam@adalogics.com>
* Added better fuzzer names

Signed-off-by: AdamKorcz <adam@adalogics.com>
* 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 <me@silverwind.io>
* Added tools to Makefile

Co-authored-by: 6543 <6543@obermui.de>
Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: zeripath <art27@cantab.net>
Makefile
tools/fuzz.go [new file with mode: 0644]

index 0e33047aa25f4d2937f38724c80c5e70358df555..e21cf20f84f82aba4a0ca48ed209dd6e77646bf1 100644 (file)
--- 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 (file)
index 0000000..6ed1b40
--- /dev/null
@@ -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
+}