Merge pull request #7346 from kzys/fuzz-enable
This commit is contained in:
		
							
								
								
									
										3
									
								
								.github/workflows/fuzz.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/workflows/fuzz.yml
									
									
									
									
										vendored
									
									
								
							| @@ -12,15 +12,12 @@ jobs: | |||||||
|       uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master |       uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master | ||||||
|       with: |       with: | ||||||
|         oss-fuzz-project-name: 'containerd' |         oss-fuzz-project-name: 'containerd' | ||||||
|         dry-run: true |  | ||||||
|         language: go |         language: go | ||||||
|       continue-on-error: true |  | ||||||
|     - name: Run Fuzzers |     - name: Run Fuzzers | ||||||
|       uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master |       uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master | ||||||
|       with: |       with: | ||||||
|         oss-fuzz-project-name: 'containerd' |         oss-fuzz-project-name: 'containerd' | ||||||
|         fuzz-seconds: 300 |         fuzz-seconds: 300 | ||||||
|         dry-run: true |  | ||||||
|         language: go |         language: go | ||||||
|       continue-on-error: true |       continue-on-error: true | ||||||
|     - name: Upload Crash |     - name: Upload Crash | ||||||
|   | |||||||
| @@ -58,8 +58,6 @@ rm -r vendor | |||||||
| # Change path of socket since OSS-fuzz does not grant access to /run | # Change path of socket since OSS-fuzz does not grant access to /run | ||||||
| sed -i 's/\/run\/containerd/\/tmp\/containerd/g' $SRC/containerd/defaults/defaults_unix.go | sed -i 's/\/run\/containerd/\/tmp\/containerd/g' $SRC/containerd/defaults/defaults_unix.go | ||||||
|  |  | ||||||
| go get github.com/AdamKorcz/go-118-fuzz-build/utils |  | ||||||
|  |  | ||||||
| compile_fuzzers '^func Fuzz.*testing\.F' compile_native_go_fuzzer vendor | compile_fuzzers '^func Fuzz.*testing\.F' compile_native_go_fuzzer vendor | ||||||
| compile_fuzzers '^func Fuzz.*data' compile_go_fuzzer '(vendor|Integ)' | compile_fuzzers '^func Fuzz.*data' compile_go_fuzzer '(vendor|Integ)' | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								go.mod
									
									
									
									
									
								
							| @@ -4,6 +4,7 @@ go 1.18 | |||||||
|  |  | ||||||
| require ( | require ( | ||||||
| 	github.com/AdaLogics/go-fuzz-headers v0.0.0-20220706123152-fef3fe1bab07 | 	github.com/AdaLogics/go-fuzz-headers v0.0.0-20220706123152-fef3fe1bab07 | ||||||
|  | 	github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20220723121359-e03a0069662f | ||||||
| 	github.com/Microsoft/go-winio v0.5.2 | 	github.com/Microsoft/go-winio v0.5.2 | ||||||
| 	github.com/Microsoft/hcsshim v0.10.0-rc.1 | 	github.com/Microsoft/hcsshim v0.10.0-rc.1 | ||||||
| 	github.com/container-orchestrated-devices/container-device-interface v0.3.1 | 	github.com/container-orchestrated-devices/container-device-interface v0.3.1 | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.sum
									
									
									
									
									
								
							| @@ -43,6 +43,8 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7 | |||||||
| github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= | github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= | ||||||
| github.com/AdaLogics/go-fuzz-headers v0.0.0-20220706123152-fef3fe1bab07 h1:7dZd6IhJApT69RGnt+YHRRVHXkO9fA6tAdl5E7iG9EU= | github.com/AdaLogics/go-fuzz-headers v0.0.0-20220706123152-fef3fe1bab07 h1:7dZd6IhJApT69RGnt+YHRRVHXkO9fA6tAdl5E7iG9EU= | ||||||
| github.com/AdaLogics/go-fuzz-headers v0.0.0-20220706123152-fef3fe1bab07/go.mod h1:i9fr2JpcEcY/IHEvzCM3qXUZYOQHgR89dt4es1CgMhc= | github.com/AdaLogics/go-fuzz-headers v0.0.0-20220706123152-fef3fe1bab07/go.mod h1:i9fr2JpcEcY/IHEvzCM3qXUZYOQHgR89dt4es1CgMhc= | ||||||
|  | github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20220723121359-e03a0069662f h1:XVPaJiLu0IxgLI9zeQaJzDfQDBCs36X+3v+Zy4AVHXw= | ||||||
|  | github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20220723121359-e03a0069662f/go.mod h1:M7EoPeNo2SSN8PrOJ8Yvx2wM6FxnHZSnoFSNAO2XdW8= | ||||||
| github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= | github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= | ||||||
| github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= | github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= | ||||||
| github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= | github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= | ||||||
|   | |||||||
| @@ -22,6 +22,7 @@ require ( | |||||||
| require github.com/AdaLogics/go-fuzz-headers v0.0.0-20220706123152-fef3fe1bab07 | require github.com/AdaLogics/go-fuzz-headers v0.0.0-20220706123152-fef3fe1bab07 | ||||||
|  |  | ||||||
| require ( | require ( | ||||||
|  | 	github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20220723121359-e03a0069662f // indirect | ||||||
| 	github.com/Microsoft/go-winio v0.5.2 // indirect | 	github.com/Microsoft/go-winio v0.5.2 // indirect | ||||||
| 	github.com/blang/semver v3.5.1+incompatible // indirect | 	github.com/blang/semver v3.5.1+incompatible // indirect | ||||||
| 	github.com/cilium/ebpf v0.9.1 // indirect | 	github.com/cilium/ebpf v0.9.1 // indirect | ||||||
|   | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										27
									
								
								oss_fuzz.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								oss_fuzz.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | //go:build gofuzz | ||||||
|  | // +build gofuzz | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |    Copyright The containerd Authors. | ||||||
|  |  | ||||||
|  |    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. | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | package containerd | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"github.com/AdamKorcz/go-118-fuzz-build/utils" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // To keep this package in go.mod. | ||||||
|  | var _ = utils.F{} | ||||||
							
								
								
									
										201
									
								
								vendor/github.com/AdamKorcz/go-118-fuzz-build/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										201
									
								
								vendor/github.com/AdamKorcz/go-118-fuzz-build/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,201 @@ | |||||||
|  |                                  Apache License | ||||||
|  |                            Version 2.0, January 2004 | ||||||
|  |                         http://www.apache.org/licenses/ | ||||||
|  |  | ||||||
|  |    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||||||
|  |  | ||||||
|  |    1. Definitions. | ||||||
|  |  | ||||||
|  |       "License" shall mean the terms and conditions for use, reproduction, | ||||||
|  |       and distribution as defined by Sections 1 through 9 of this document. | ||||||
|  |  | ||||||
|  |       "Licensor" shall mean the copyright owner or entity authorized by | ||||||
|  |       the copyright owner that is granting the License. | ||||||
|  |  | ||||||
|  |       "Legal Entity" shall mean the union of the acting entity and all | ||||||
|  |       other entities that control, are controlled by, or are under common | ||||||
|  |       control with that entity. For the purposes of this definition, | ||||||
|  |       "control" means (i) the power, direct or indirect, to cause the | ||||||
|  |       direction or management of such entity, whether by contract or | ||||||
|  |       otherwise, or (ii) ownership of fifty percent (50%) or more of the | ||||||
|  |       outstanding shares, or (iii) beneficial ownership of such entity. | ||||||
|  |  | ||||||
|  |       "You" (or "Your") shall mean an individual or Legal Entity | ||||||
|  |       exercising permissions granted by this License. | ||||||
|  |  | ||||||
|  |       "Source" form shall mean the preferred form for making modifications, | ||||||
|  |       including but not limited to software source code, documentation | ||||||
|  |       source, and configuration files. | ||||||
|  |  | ||||||
|  |       "Object" form shall mean any form resulting from mechanical | ||||||
|  |       transformation or translation of a Source form, including but | ||||||
|  |       not limited to compiled object code, generated documentation, | ||||||
|  |       and conversions to other media types. | ||||||
|  |  | ||||||
|  |       "Work" shall mean the work of authorship, whether in Source or | ||||||
|  |       Object form, made available under the License, as indicated by a | ||||||
|  |       copyright notice that is included in or attached to the work | ||||||
|  |       (an example is provided in the Appendix below). | ||||||
|  |  | ||||||
|  |       "Derivative Works" shall mean any work, whether in Source or Object | ||||||
|  |       form, that is based on (or derived from) the Work and for which the | ||||||
|  |       editorial revisions, annotations, elaborations, or other modifications | ||||||
|  |       represent, as a whole, an original work of authorship. For the purposes | ||||||
|  |       of this License, Derivative Works shall not include works that remain | ||||||
|  |       separable from, or merely link (or bind by name) to the interfaces of, | ||||||
|  |       the Work and Derivative Works thereof. | ||||||
|  |  | ||||||
|  |       "Contribution" shall mean any work of authorship, including | ||||||
|  |       the original version of the Work and any modifications or additions | ||||||
|  |       to that Work or Derivative Works thereof, that is intentionally | ||||||
|  |       submitted to Licensor for inclusion in the Work by the copyright owner | ||||||
|  |       or by an individual or Legal Entity authorized to submit on behalf of | ||||||
|  |       the copyright owner. For the purposes of this definition, "submitted" | ||||||
|  |       means any form of electronic, verbal, or written communication sent | ||||||
|  |       to the Licensor or its representatives, including but not limited to | ||||||
|  |       communication on electronic mailing lists, source code control systems, | ||||||
|  |       and issue tracking systems that are managed by, or on behalf of, the | ||||||
|  |       Licensor for the purpose of discussing and improving the Work, but | ||||||
|  |       excluding communication that is conspicuously marked or otherwise | ||||||
|  |       designated in writing by the copyright owner as "Not a Contribution." | ||||||
|  |  | ||||||
|  |       "Contributor" shall mean Licensor and any individual or Legal Entity | ||||||
|  |       on behalf of whom a Contribution has been received by Licensor and | ||||||
|  |       subsequently incorporated within the Work. | ||||||
|  |  | ||||||
|  |    2. Grant of Copyright License. Subject to the terms and conditions of | ||||||
|  |       this License, each Contributor hereby grants to You a perpetual, | ||||||
|  |       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||||
|  |       copyright license to reproduce, prepare Derivative Works of, | ||||||
|  |       publicly display, publicly perform, sublicense, and distribute the | ||||||
|  |       Work and such Derivative Works in Source or Object form. | ||||||
|  |  | ||||||
|  |    3. Grant of Patent License. Subject to the terms and conditions of | ||||||
|  |       this License, each Contributor hereby grants to You a perpetual, | ||||||
|  |       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||||
|  |       (except as stated in this section) patent license to make, have made, | ||||||
|  |       use, offer to sell, sell, import, and otherwise transfer the Work, | ||||||
|  |       where such license applies only to those patent claims licensable | ||||||
|  |       by such Contributor that are necessarily infringed by their | ||||||
|  |       Contribution(s) alone or by combination of their Contribution(s) | ||||||
|  |       with the Work to which such Contribution(s) was submitted. If You | ||||||
|  |       institute patent litigation against any entity (including a | ||||||
|  |       cross-claim or counterclaim in a lawsuit) alleging that the Work | ||||||
|  |       or a Contribution incorporated within the Work constitutes direct | ||||||
|  |       or contributory patent infringement, then any patent licenses | ||||||
|  |       granted to You under this License for that Work shall terminate | ||||||
|  |       as of the date such litigation is filed. | ||||||
|  |  | ||||||
|  |    4. Redistribution. You may reproduce and distribute copies of the | ||||||
|  |       Work or Derivative Works thereof in any medium, with or without | ||||||
|  |       modifications, and in Source or Object form, provided that You | ||||||
|  |       meet the following conditions: | ||||||
|  |  | ||||||
|  |       (a) You must give any other recipients of the Work or | ||||||
|  |           Derivative Works a copy of this License; and | ||||||
|  |  | ||||||
|  |       (b) You must cause any modified files to carry prominent notices | ||||||
|  |           stating that You changed the files; and | ||||||
|  |  | ||||||
|  |       (c) You must retain, in the Source form of any Derivative Works | ||||||
|  |           that You distribute, all copyright, patent, trademark, and | ||||||
|  |           attribution notices from the Source form of the Work, | ||||||
|  |           excluding those notices that do not pertain to any part of | ||||||
|  |           the Derivative Works; and | ||||||
|  |  | ||||||
|  |       (d) If the Work includes a "NOTICE" text file as part of its | ||||||
|  |           distribution, then any Derivative Works that You distribute must | ||||||
|  |           include a readable copy of the attribution notices contained | ||||||
|  |           within such NOTICE file, excluding those notices that do not | ||||||
|  |           pertain to any part of the Derivative Works, in at least one | ||||||
|  |           of the following places: within a NOTICE text file distributed | ||||||
|  |           as part of the Derivative Works; within the Source form or | ||||||
|  |           documentation, if provided along with the Derivative Works; or, | ||||||
|  |           within a display generated by the Derivative Works, if and | ||||||
|  |           wherever such third-party notices normally appear. The contents | ||||||
|  |           of the NOTICE file are for informational purposes only and | ||||||
|  |           do not modify the License. You may add Your own attribution | ||||||
|  |           notices within Derivative Works that You distribute, alongside | ||||||
|  |           or as an addendum to the NOTICE text from the Work, provided | ||||||
|  |           that such additional attribution notices cannot be construed | ||||||
|  |           as modifying the License. | ||||||
|  |  | ||||||
|  |       You may add Your own copyright statement to Your modifications and | ||||||
|  |       may provide additional or different license terms and conditions | ||||||
|  |       for use, reproduction, or distribution of Your modifications, or | ||||||
|  |       for any such Derivative Works as a whole, provided Your use, | ||||||
|  |       reproduction, and distribution of the Work otherwise complies with | ||||||
|  |       the conditions stated in this License. | ||||||
|  |  | ||||||
|  |    5. Submission of Contributions. Unless You explicitly state otherwise, | ||||||
|  |       any Contribution intentionally submitted for inclusion in the Work | ||||||
|  |       by You to the Licensor shall be under the terms and conditions of | ||||||
|  |       this License, without any additional terms or conditions. | ||||||
|  |       Notwithstanding the above, nothing herein shall supersede or modify | ||||||
|  |       the terms of any separate license agreement you may have executed | ||||||
|  |       with Licensor regarding such Contributions. | ||||||
|  |  | ||||||
|  |    6. Trademarks. This License does not grant permission to use the trade | ||||||
|  |       names, trademarks, service marks, or product names of the Licensor, | ||||||
|  |       except as required for reasonable and customary use in describing the | ||||||
|  |       origin of the Work and reproducing the content of the NOTICE file. | ||||||
|  |  | ||||||
|  |    7. Disclaimer of Warranty. Unless required by applicable law or | ||||||
|  |       agreed to in writing, Licensor provides the Work (and each | ||||||
|  |       Contributor provides its Contributions) on an "AS IS" BASIS, | ||||||
|  |       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||||||
|  |       implied, including, without limitation, any warranties or conditions | ||||||
|  |       of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | ||||||
|  |       PARTICULAR PURPOSE. You are solely responsible for determining the | ||||||
|  |       appropriateness of using or redistributing the Work and assume any | ||||||
|  |       risks associated with Your exercise of permissions under this License. | ||||||
|  |  | ||||||
|  |    8. Limitation of Liability. In no event and under no legal theory, | ||||||
|  |       whether in tort (including negligence), contract, or otherwise, | ||||||
|  |       unless required by applicable law (such as deliberate and grossly | ||||||
|  |       negligent acts) or agreed to in writing, shall any Contributor be | ||||||
|  |       liable to You for damages, including any direct, indirect, special, | ||||||
|  |       incidental, or consequential damages of any character arising as a | ||||||
|  |       result of this License or out of the use or inability to use the | ||||||
|  |       Work (including but not limited to damages for loss of goodwill, | ||||||
|  |       work stoppage, computer failure or malfunction, or any and all | ||||||
|  |       other commercial damages or losses), even if such Contributor | ||||||
|  |       has been advised of the possibility of such damages. | ||||||
|  |  | ||||||
|  |    9. Accepting Warranty or Additional Liability. While redistributing | ||||||
|  |       the Work or Derivative Works thereof, You may choose to offer, | ||||||
|  |       and charge a fee for, acceptance of support, warranty, indemnity, | ||||||
|  |       or other liability obligations and/or rights consistent with this | ||||||
|  |       License. However, in accepting such obligations, You may act only | ||||||
|  |       on Your own behalf and on Your sole responsibility, not on behalf | ||||||
|  |       of any other Contributor, and only if You agree to indemnify, | ||||||
|  |       defend, and hold each Contributor harmless for any liability | ||||||
|  |       incurred by, or claims asserted against, such Contributor by reason | ||||||
|  |       of your accepting any such warranty or additional liability. | ||||||
|  |  | ||||||
|  |    END OF TERMS AND CONDITIONS | ||||||
|  |  | ||||||
|  |    APPENDIX: How to apply the Apache License to your work. | ||||||
|  |  | ||||||
|  |       To apply the Apache License to your work, attach the following | ||||||
|  |       boilerplate notice, with the fields enclosed by brackets "[]" | ||||||
|  |       replaced with your own identifying information. (Don't include | ||||||
|  |       the brackets!)  The text should be enclosed in the appropriate | ||||||
|  |       comment syntax for the file format. We also recommend that a | ||||||
|  |       file or class name and description of purpose be included on the | ||||||
|  |       same "printed page" as the copyright notice for easier | ||||||
|  |       identification within third-party archives. | ||||||
|  |  | ||||||
|  |    Copyright [yyyy] [name of copyright owner] | ||||||
|  |  | ||||||
|  |    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. | ||||||
							
								
								
									
										176
									
								
								vendor/github.com/AdamKorcz/go-118-fuzz-build/utils/test_helpers.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										176
									
								
								vendor/github.com/AdamKorcz/go-118-fuzz-build/utils/test_helpers.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,176 @@ | |||||||
|  | package utils | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 	fuzz "github.com/AdaLogics/go-fuzz-headers" | ||||||
|  | 	"reflect" | ||||||
|  | 	"testing" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | type F struct { | ||||||
|  | 	Data     []byte | ||||||
|  | 	T        *testing.T | ||||||
|  | 	FuzzFunc func(*testing.T, any) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (f *F) Add(args ...any)                   {} | ||||||
|  | func (c *F) Cleanup(f func())                  {} | ||||||
|  | func (c *F) Error(args ...any)                 {} | ||||||
|  | func (c *F) Errorf(format string, args ...any) {} | ||||||
|  | func (f *F) Fail()                             {} | ||||||
|  | func (c *F) FailNow()                          {} | ||||||
|  | func (c *F) Failed() bool                      { return false } | ||||||
|  | func (c *F) Fatal(args ...any)                 {} | ||||||
|  | func (c *F) Fatalf(format string, args ...any) {} | ||||||
|  | func (f *F) Fuzz(ff any) { | ||||||
|  | 	// we are assuming that ff is a func. | ||||||
|  | 	// TODO: Add a check for UX purposes | ||||||
|  |  | ||||||
|  | 	fn := reflect.ValueOf(ff) | ||||||
|  | 	fnType := fn.Type() | ||||||
|  | 	var types []reflect.Type | ||||||
|  | 	for i := 1; i < fnType.NumIn(); i++ { | ||||||
|  | 		t := fnType.In(i) | ||||||
|  |  | ||||||
|  | 		types = append(types, t) | ||||||
|  | 	} | ||||||
|  | 	args := []reflect.Value{reflect.ValueOf(f.T)} | ||||||
|  | 	fuzzConsumer := fuzz.NewConsumer(f.Data) | ||||||
|  | 	for _, v := range types { | ||||||
|  | 		switch v.String() { | ||||||
|  | 		case "[]uint8": | ||||||
|  | 			b, err := fuzzConsumer.GetBytes() | ||||||
|  | 			if err != nil { | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			newBytes := reflect.New(v) | ||||||
|  | 			newBytes.Elem().SetBytes(b) | ||||||
|  | 			args = append(args, newBytes.Elem()) | ||||||
|  | 		case "string": | ||||||
|  | 			s, err := fuzzConsumer.GetString() | ||||||
|  | 			if err != nil { | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			newString := reflect.New(v) | ||||||
|  | 			newString.Elem().SetString(s) | ||||||
|  | 			args = append(args, newString.Elem()) | ||||||
|  | 		case "int": | ||||||
|  | 			randInt, err := fuzzConsumer.GetInt() | ||||||
|  | 			if err != nil { | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			newInt := reflect.New(v) | ||||||
|  | 			newInt.Elem().SetInt(int64(randInt)) | ||||||
|  | 			args = append(args, newInt.Elem()) | ||||||
|  | 		case "int8": | ||||||
|  | 			randInt, err := fuzzConsumer.GetInt() | ||||||
|  | 			if err != nil { | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			newInt := reflect.New(v) | ||||||
|  | 			newInt.Elem().SetInt(int64(randInt)) | ||||||
|  | 			args = append(args, newInt.Elem()) | ||||||
|  | 		case "int16": | ||||||
|  | 			randInt, err := fuzzConsumer.GetInt() | ||||||
|  | 			if err != nil { | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			newInt := reflect.New(v) | ||||||
|  | 			newInt.Elem().SetInt(int64(randInt)) | ||||||
|  | 			args = append(args, newInt.Elem()) | ||||||
|  | 		case "int32": | ||||||
|  | 			randInt, err := fuzzConsumer.GetInt() | ||||||
|  | 			if err != nil { | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			newInt := reflect.New(v) | ||||||
|  | 			newInt.Elem().SetInt(int64(randInt)) | ||||||
|  | 			args = append(args, newInt.Elem()) | ||||||
|  | 		case "int64": | ||||||
|  | 			randInt, err := fuzzConsumer.GetInt() | ||||||
|  | 			if err != nil { | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			newInt := reflect.New(v) | ||||||
|  | 			newInt.Elem().SetInt(int64(randInt)) | ||||||
|  | 			args = append(args, newInt.Elem()) | ||||||
|  | 		case "uint": | ||||||
|  | 			randInt, err := fuzzConsumer.GetInt() | ||||||
|  | 			if err != nil { | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			newUint := reflect.New(v) | ||||||
|  | 			newUint.Elem().SetUint(uint64(randInt)) | ||||||
|  | 			args = append(args, newUint.Elem()) | ||||||
|  | 		case "uint8": | ||||||
|  | 			randInt, err := fuzzConsumer.GetInt() | ||||||
|  | 			if err != nil { | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			newUint := reflect.New(v) | ||||||
|  | 			newUint.Elem().SetUint(uint64(randInt)) | ||||||
|  | 			args = append(args, newUint.Elem()) | ||||||
|  | 		case "uint16": | ||||||
|  | 			randInt, err := fuzzConsumer.GetUint16() | ||||||
|  | 			if err != nil { | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			newUint16 := reflect.New(v) | ||||||
|  | 			newUint16.Elem().SetUint(uint64(randInt)) | ||||||
|  | 			args = append(args, newUint16.Elem()) | ||||||
|  | 		case "uint32": | ||||||
|  | 			randInt, err := fuzzConsumer.GetUint32() | ||||||
|  | 			if err != nil { | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			newUint32 := reflect.New(v) | ||||||
|  | 			newUint32.Elem().SetUint(uint64(randInt)) | ||||||
|  | 			args = append(args, newUint32.Elem()) | ||||||
|  | 		case "uint64": | ||||||
|  | 			randInt, err := fuzzConsumer.GetUint64() | ||||||
|  | 			if err != nil { | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			newUint64 := reflect.New(v) | ||||||
|  | 			newUint64.Elem().SetUint(uint64(randInt)) | ||||||
|  | 			args = append(args, newUint64.Elem()) | ||||||
|  | 		case "rune": | ||||||
|  | 			randRune, err := fuzzConsumer.GetRune() | ||||||
|  | 			if err != nil { | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			newRune := reflect.New(v) | ||||||
|  | 			newRune.Elem().Set(reflect.ValueOf(randRune)) | ||||||
|  | 			args = append(args, newRune.Elem()) | ||||||
|  | 		case "float32": | ||||||
|  | 			randFloat, err := fuzzConsumer.GetFloat32() | ||||||
|  | 			if err != nil { | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			newFloat := reflect.New(v) | ||||||
|  | 			newFloat.Elem().Set(reflect.ValueOf(randFloat)) | ||||||
|  | 			args = append(args, newFloat.Elem()) | ||||||
|  | 		case "float64": | ||||||
|  | 			randFloat, err := fuzzConsumer.GetFloat64() | ||||||
|  | 			if err != nil { | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			newFloat := reflect.New(v) | ||||||
|  | 			newFloat.Elem().Set(reflect.ValueOf(randFloat)) | ||||||
|  | 			args = append(args, newFloat.Elem()) | ||||||
|  | 		default: | ||||||
|  | 			fmt.Println(v.String()) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	fn.Call(args) | ||||||
|  | } | ||||||
|  | func (f *F) Helper()                          {} | ||||||
|  | func (c *F) Log(args ...any)                  {} | ||||||
|  | func (c *F) Logf(format string, args ...any)  {} | ||||||
|  | func (c *F) Name() string                     { return "name" } | ||||||
|  | func (c *F) Setenv(key, value string)         {} | ||||||
|  | func (c *F) Skip(args ...any)                 {} | ||||||
|  | func (c *F) SkipNow()                         {} | ||||||
|  | func (c *F) Skipf(format string, args ...any) {} | ||||||
|  | func (f *F) Skipped() bool                    { return false } | ||||||
|  | func (c *F) TempDir() string                  { return "/tmp" } | ||||||
							
								
								
									
										3
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +1,9 @@ | |||||||
| # github.com/AdaLogics/go-fuzz-headers v0.0.0-20220706123152-fef3fe1bab07 | # github.com/AdaLogics/go-fuzz-headers v0.0.0-20220706123152-fef3fe1bab07 | ||||||
| ## explicit; go 1.13 | ## explicit; go 1.13 | ||||||
| github.com/AdaLogics/go-fuzz-headers | github.com/AdaLogics/go-fuzz-headers | ||||||
|  | # github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20220723121359-e03a0069662f | ||||||
|  | ## explicit; go 1.18 | ||||||
|  | github.com/AdamKorcz/go-118-fuzz-build/utils | ||||||
| # github.com/Microsoft/go-winio v0.5.2 | # github.com/Microsoft/go-winio v0.5.2 | ||||||
| ## explicit; go 1.13 | ## explicit; go 1.13 | ||||||
| github.com/Microsoft/go-winio | github.com/Microsoft/go-winio | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Samuel Karp
					Samuel Karp