aboutsummaryrefslogtreecommitdiffhomepage
path: root/projects/json-patch
diff options
context:
space:
mode:
authorGravatar Catena cyber <35799796+catenacyber@users.noreply.github.com>2021-04-19 14:41:13 +0200
committerGravatar GitHub <noreply@github.com>2021-04-19 08:41:13 -0400
commitb5f9c8d96392f827995e687a9aa207edafde0f7e (patch)
tree7ad810cd99f1b0dab33249c308b8d8a492616ab3 /projects/json-patch
parent42cc558940fd3cc9f1d1e14f1440fe1a11b178cd (diff)
Adds go json-patch project (#5627)
Diffstat (limited to 'projects/json-patch')
-rw-r--r--projects/json-patch/Dockerfile23
-rwxr-xr-xprojects/json-patch/build.sh19
-rw-r--r--projects/json-patch/fuzz_create_merge.go26
-rw-r--r--projects/json-patch/fuzz_decode_apply.go25
-rw-r--r--projects/json-patch/project.yaml10
5 files changed, 103 insertions, 0 deletions
diff --git a/projects/json-patch/Dockerfile b/projects/json-patch/Dockerfile
new file mode 100644
index 00000000..ae61504d
--- /dev/null
+++ b/projects/json-patch/Dockerfile
@@ -0,0 +1,23 @@
+# Copyright 2021 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+FROM gcr.io/oss-fuzz-base/base-builder
+RUN git clone --depth 1 https://github.com/evanphx/json-patch
+
+COPY fuzz_*.go $SRC/json-patch/
+
+COPY build.sh $SRC/
+WORKDIR $SRC/json-patch
diff --git a/projects/json-patch/build.sh b/projects/json-patch/build.sh
new file mode 100755
index 00000000..d13e7abf
--- /dev/null
+++ b/projects/json-patch/build.sh
@@ -0,0 +1,19 @@
+#!/bin/bash -eu
+# Copyright 2021 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+compile_go_fuzzer github.com/evanphx/json-patch FuzzCreateMerge fuzz_create_merge
+compile_go_fuzzer github.com/evanphx/json-patch FuzzDecodeApply fuzz_decode_apply
diff --git a/projects/json-patch/fuzz_create_merge.go b/projects/json-patch/fuzz_create_merge.go
new file mode 100644
index 00000000..b7cb330e
--- /dev/null
+++ b/projects/json-patch/fuzz_create_merge.go
@@ -0,0 +1,26 @@
+package jsonpatch
+
+import (
+ "bytes"
+)
+
+func FuzzCreateMerge(data []byte) int {
+ s := bytes.Split(data, []byte{0})
+ if len(s) != 3 {
+ return 0
+ }
+ original := s[0]
+ target := s[1]
+ alternative := s[2]
+
+ patch, err := CreateMergePatch(original, target)
+ if err != nil {
+ return 0
+ }
+ _, err = MergePatch(alternative, patch)
+ if err != nil {
+ return 0
+ }
+
+ return 1
+}
diff --git a/projects/json-patch/fuzz_decode_apply.go b/projects/json-patch/fuzz_decode_apply.go
new file mode 100644
index 00000000..31595580
--- /dev/null
+++ b/projects/json-patch/fuzz_decode_apply.go
@@ -0,0 +1,25 @@
+package jsonpatch
+
+import (
+ "bytes"
+)
+
+func FuzzDecodeApply(data []byte) int {
+ s := bytes.Split(data, []byte{0})
+ if len(s) != 2 {
+ return 0
+ }
+ patchJSON := s[0]
+ original := s[1]
+
+ patch, err := DecodePatch(patchJSON)
+ if err != nil {
+ return 0
+ }
+
+ _, err = patch.Apply(original)
+ if err != nil {
+ return 0
+ }
+ return 1
+}
diff --git a/projects/json-patch/project.yaml b/projects/json-patch/project.yaml
new file mode 100644
index 00000000..a66ada93
--- /dev/null
+++ b/projects/json-patch/project.yaml
@@ -0,0 +1,10 @@
+homepage: "https://github.com/evanphx/json-patch"
+primary_contact: "evan@phx.io"
+auto_ccs:
+ - "p.antoine@catenacyber.fr"
+language: go
+fuzzing_engines:
+ - libfuzzer
+sanitizers:
+ - address
+main_repo: 'https://github.com/evanphx/json-patch'