diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000..1e4aacc --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,28 @@ +name: build + +on: + push: + +jobs: + compile: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + compiler: [gcc, clang++] + + name: compile + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v2 + + - if: matrix.os == 'windows-latest' && matrix.compiler == 'clang++' + uses: KyleMayes/install-llvm-action@v1 + with: + version: "11.0" + + - if: matrix.os == 'windows-latest' && matrix.compiler == 'gcc' + uses: egor-tensin/setup-mingw@v2 + + - name: build + run: ${{ matrix.compiler }} -o scanner.o -I./src -c src/scanner.cc diff --git a/.gitignore b/.gitignore index 23dad58..8165bcb 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,8 @@ log.html tree-sitter-hcl.wasm .env .DS_Store + +fuzz/fuzzer +fuzz/*.o +fuzz/*.a +fuzz/fuzz-*.log diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..9563a3d --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "fuzz/tree-sitter"] + path = fuzz/tree-sitter + url = https://github.com/tree-sitter/tree-sitter.git diff --git a/CHANGELOG.md b/CHANGELOG.md index 4567ede..6d4eea0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 0.3.2 - not yet released + +fix: +* add a build step to CI to make sure the scanner is compilable + ## 0.3.1 - 2021-06-30 fix: diff --git a/README.md b/README.md index 69bb617..d37dc8e 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Total parses: 1892; successful parses: 1892; failed parses: 0; success percentag ## Fuzzing -The directory `fuzz/crashers` contains a set of crashes that were found with fuzzing. To fuzz the parser i used the instrumentation of [tree-sitter](https://github.com/tree-sitter/tree-sitter/tree/master/test/fuzz) +The directory `fuzz/crashers` contains a set of crashes that were found with fuzzing. ## Todo @@ -39,8 +39,8 @@ The directory `fuzz/crashers` contains a set of crashes that were found with fuz * [x] add heredoc templates * [ ] fuzzing * [x] start with fuzzing the parser - * [ ] upload fuzzing instrumentation + * [x] upload fuzzing instrumentation * [ ] document fuzzing process * [ ] quality - * [ ] add CI job that ensures the parser builds on different plattforms + * [x] add CI job that ensures the parser builds on different plattforms * [ ] add CI job that parses crashers that were found during fuzzing diff --git a/example/example.hcl b/example/example.hcl index 2b9d910..a203e2a 100644 --- a/example/example.hcl +++ b/example/example.hcl @@ -33,6 +33,11 @@ resource_1 "strlit1" "strlit2" { ${func("foo${ var.bar }")} suffix EOF + func_of_object = func({ + "foo": 2, + bar: 1, + fizz: buzz, + }) nested_resource_1 { attr1 = 2 diff --git a/fuzz/Makefile b/fuzz/Makefile new file mode 100644 index 0000000..35e5263 --- /dev/null +++ b/fuzz/Makefile @@ -0,0 +1,30 @@ +FUZZFLAGS=-fsanitize=fuzzer,address,undefined + +JOBS=4 +WORKERS=4 + +.PHONY: fuzz +fuzz: fuzzer hcl.dict + UBSAN="print_stacktrace=1:halt_on_error=1:symbolize=1" ASAN_OPTIONS="quarantine_size_mb=10:detect_leaks=1:symbolize=1" ./fuzzer -jobs=${JOBS} -workers=${WORKERS} -dict=hcl.dict corpus/ + +.PHONY: clean +clean: + rm -rf tree-sitter + rm fuzzer parser.o scanner.o libtree-sitter.a + +fuzzer: parser.o scanner.o libtree-sitter.a + clang++ -o fuzzer ${FUZZFLAGS} -std=c++11 tree-sitter/test/fuzz/fuzzer.cc -Itree-sitter/lib scanner.o parser.o libtree-sitter.a + +scanner.o: ../src/scanner.cc + clang++ -o scanner.o ${FUZZFLAGS} -std=c++11 -I../src -c ../src/scanner.cc + +parser.o: ../src/parser.c + clang -o parser.o ${FUZZFLAGS} -std=c99 -I../src -c ../src/parser.c + +hcl.dict: + tree-sitter/scripts + +libtree-sitter.a: + make -C tree-sitter + cp tree-sitter/libtree-sitter.a . + diff --git a/fuzz/corpus/004aa7303dfc68e77c7cf1ac6116388d01b15b19 b/fuzz/corpus/004aa7303dfc68e77c7cf1ac6116388d01b15b19 new file mode 100644 index 0000000..9e91a19 Binary files /dev/null and b/fuzz/corpus/004aa7303dfc68e77c7cf1ac6116388d01b15b19 differ diff --git a/fuzz/corpus/008d320cb51a7e805c37e8bbb18918d2263aac64 b/fuzz/corpus/008d320cb51a7e805c37e8bbb18918d2263aac64 new file mode 100644 index 0000000..28a6297 Binary files /dev/null and b/fuzz/corpus/008d320cb51a7e805c37e8bbb18918d2263aac64 differ diff --git a/fuzz/corpus/00eb935cfd65c5582911f8934fbe41bf20056df6 b/fuzz/corpus/00eb935cfd65c5582911f8934fbe41bf20056df6 new file mode 100644 index 0000000..4d4ab92 Binary files /dev/null and b/fuzz/corpus/00eb935cfd65c5582911f8934fbe41bf20056df6 differ diff --git a/fuzz/corpus/0101f42a5434405833b3061141773d84a82d687c b/fuzz/corpus/0101f42a5434405833b3061141773d84a82d687c new file mode 100644 index 0000000..a9a6bb4 --- /dev/null +++ b/fuzz/corpus/0101f42a5434405833b3061141773d84a82d687c @@ -0,0 +1,51 @@ +// comme +t#n comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + .. } + for2 = [ )} + suffix + EOF + + nestad_resource_1 { + attr1 = 2 + attr2 = 2.112 + ame +t#n comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + .. } + for2 = [ ource_1 "strlit1" "strlit2" { + attr1 = "val1" + .. } + for2 = [ )} + suffix + EOF + + nestad_resource_1 { + attr1 = 2 + attr2 = 2.112 + ame +t#n comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + .. } + for2 = [ ttr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/010a19bc802b34bff21903c7c9f95fbbfa164f04 b/fuzz/corpus/010a19bc802b34bff21903c7c9f95fbbfa164f04 new file mode 100644 index 0000000..428633b --- /dev/null +++ b/fuzz/corpus/010a19bc802b34bff21903c7c9f95fbbfa164f04 @@ -0,0 +1,37 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + ) + cond2 = (1 == 2) ? 1 : "foobar" + bin1 =")} + suffix + EOF + + nestesuedor_rce_1 { + attr1 = 2 + attr2 = 2.112 + atr3 = 2.112e-12 + attr4 = 2.112e+12 + att ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFF \n" + es2 = "$${} %%{!}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix commond2 -${func("bar"):}" + tpl3 == 2.112e-12 + attr4 = 2.112e+12 + attrbin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF225\uFFFF \n" + esc2 = "$${} %%{}" + tpl1 5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/025cf96fbae04699c25023510677c944ccfc8188 b/fuzz/corpus/025cf96fbae04699c25023510677c944ccfc8188 new file mode 100644 index 0000000..13e8d9d Binary files /dev/null and b/fuzz/corpus/025cf96fbae04699c25023510677c944ccfc8188 differ diff --git a/fuzz/corpus/028a09b21a89efa77af5cdbc1d8fa61389a237b0 b/fuzz/corpus/028a09b21a89efa77af5cdbc1d8fa61389a237b0 new file mode 100644 index 0000000..9ed9fc9 Binary files /dev/null and b/fuzz/corpus/028a09b21a89efa77af5cdbc1d8fa61389a237b0 differ diff --git a/fuzz/corpus/029227ccd9aa88824b3c40853db2e6d3d0d38f69 b/fuzz/corpus/029227ccd9aa88824b3c40853db2e6d3d0d38f69 new file mode 100644 index 0000000..21be820 Binary files /dev/null and b/fuzz/corpus/029227ccd9aa88824b3c40853db2e6d3d0d38f69 differ diff --git a/fuzz/corpus/031f68204adbd37cb026b11c2c50663ed8a8c7b9 b/fuzz/corpus/031f68204adbd37cb026b11c2c50663ed8a8c7b9 new file mode 100644 index 0000000..37dea1e Binary files /dev/null and b/fuzz/corpus/031f68204adbd37cb026b11c2c50663ed8a8c7b9 differ diff --git a/fuzz/corpus/0330f61eed1e5ee3f960ef6d02ae80132b5ae1d6 b/fuzz/corpus/0330f61eed1e5ee3f960ef6d02ae80132b5ae1d6 new file mode 100644 index 0000000..94a3ccc Binary files /dev/null and b/fuzz/corpus/0330f61eed1e5ee3f960ef6d02ae80132b5ae1d6 differ diff --git a/fuzz/corpus/03429738ab821bb85240081d24e8c69e6f894fcd b/fuzz/corpus/03429738ab821bb85240081d24e8c69e6f894fcd new file mode 100644 index 0000000..6418dc6 Binary files /dev/null and b/fuzz/corpus/03429738ab821bb85240081d24e8c69e6f894fcd differ diff --git a/fuzz/corpus/041fe0b7482d726b0c542fb4e94c71b4fc31ed9c b/fuzz/corpus/041fe0b7482d726b0c542fb4e94c71b4fc31ed9c new file mode 100644 index 0000000..754e851 --- /dev/null +++ b/fuzz/corpus/041fe0b7482d726b0c542fb4e94c71b4fc31ed9c @@ -0,0 +1,46 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 2, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = true + bool2 = false + splat1 = tuple.*.foo.bar[0] + splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tp.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/056e2dac39d802d45a716969cc4281dde227eed4 b/fuzz/corpus/056e2dac39d802d45a716969cc4281dde227eed4 new file mode 100644 index 0000000..eed7e93 Binary files /dev/null and b/fuzz/corpus/056e2dac39d802d45a716969cc4281dde227eed4 differ diff --git a/fuzz/corpus/058a8082488d1ff5d929b3158950ad2a0d6fc2dc b/fuzz/corpus/058a8082488d1ff5d929b3158950ad2a0d6fc2dc new file mode 100644 index 0000000..5d89c68 --- /dev/null +++ b/fuzz/corpus/058a8082488d1ff5d929b3158950ad2a0d6fc2dc @@ -0,0 +1,19 @@ +// commenߜent +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz"# } + ) + cond2( =1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uF2e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/065858dd20251e2ca9baae9e08b29a6774fa77de b/fuzz/corpus/065858dd20251e2ca9baae9e08b29a6774fa77de new file mode 100644 index 0000000..1204f9f --- /dev/null +++ b/fuzz/corpus/065858dd20251e2ca9baae9e08b29a6774fa77de @@ -0,0 +1,45 @@ +// comment +# comment +/* + comment +*/ +reuo +rsce_1 "sr"1it tl"stpl3 = "prefix-${func("nested-${var.bar}")m" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v >} = + v for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc4 = "$${ "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k,0v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func = is_numbe,("123") + cond1 = (1 z= 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF12FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl2 = "prefix-${var.bar}" + tplprefix-${func("bar")}" + uple.*. tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { f;or v in var.list : v >} = + v for6 = [ for v i, 3.4, "foo" ] + tupl2 = [] + obj1 = { f.o = "baz" } + null1 = null + bool1 = true + bool2 -= false + splat1 = tuple.*.foo.bar[0] + (splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => iEOF + prefix + ${func("foo${ var.bar }")} + suffix + EOF + + nested_resource_1 { + attr1 = 2 + attr2 = 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/0d646bbe1205edb8910f17cd57aec7be960db038 b/fuzz/corpus/0d646bbe1205edb8910f17cd57aec7be960db038 new file mode 100644 index 0000000..eceeca5 Binary files /dev/null and b/fuzz/corpus/0d646bbe1205edb8910f17cd57aec7be960db038 differ diff --git a/fuzz/corpus/0e9850767144d7e6edb96aaece8004a47bce672f b/fuzz/corpus/0e9850767144d7e6edb96aaece8004a47bce672f new file mode 100644 index 0000000..3b57058 Binary files /dev/null and b/fuzz/corpus/0e9850767144d7e6edb96aaece8004a47bce672f differ diff --git a/fuzz/corpus/0eb5947ab39d0af4cde20cd09ba09d1b9d75b226 b/fuzz/corpus/0eb5947ab39d0af4cde20cd09ba09d1b9d75b226 new file mode 100644 index 0000000..a618188 Binary files /dev/null and b/fuzz/corpus/0eb5947ab39d0af4cde20cd09ba09d1b9d75b226 differ diff --git a/fuzz/corpus/0ebe0f8f99b2a628c9c9af54b12ef18fb85822bf b/fuzz/corpus/0ebe0f8f99b2a628c9c9af54b12ef18fb85822bf new file mode 100644 index 0000000..c5ca5d4 Binary files /dev/null and b/fuzz/corpus/0ebe0f8f99b2a628c9c9af54b12ef18fb85822bf differ diff --git a/fuzz/corpus/0ed9f07a695563f68d62ddabe88a526dc4ca6a38 b/fuzz/corpus/0ed9f07a695563f68d62ddabe88a526dc4ca6a38 new file mode 100644 index 0000000..27108da Binary files /dev/null and b/fuzz/corpus/0ed9f07a695563f68d62ddabe88a526dc4ca6a38 differ diff --git a/fuzz/corpus/0f3c7d72d01440ba2526f661356bfe48bf3e5dcc b/fuzz/corpus/0f3c7d72d01440ba2526f661356bfe48bf3e5dcc new file mode 100644 index 0000000..f5a6e2d Binary files /dev/null and b/fuzz/corpus/0f3c7d72d01440ba2526f661356bfe48bf3e5dcc differ diff --git a/fuzz/corpus/0f6a17c7955a7d9b6f306b5b12e6c13d08ea76a4 b/fuzz/corpus/0f6a17c7955a7d9b6f306b5b12e6c13d08ea76a4 new file mode 100644 index 0000000..b6c022d Binary files /dev/null and b/fuzz/corpus/0f6a17c7955a7d9b6f306b5b12e6c13d08ea76a4 differ diff --git a/fuzz/corpus/0fa05a77f822a5502d48ac9a97c8adff1415c014 b/fuzz/corpus/0fa05a77f822a5502d48ac9a97c8adff1415c014 new file mode 100644 index 0000000..a8e4fbd Binary files /dev/null and b/fuzz/corpus/0fa05a77f822a5502d48ac9a97c8adff1415c014 differ diff --git a/fuzz/corpus/10a583c36374692d83a7a760e0acd4ca687a8b2c b/fuzz/corpus/10a583c36374692d83a7a760e0acd4ca687a8b2c new file mode 100644 index 0000000..7c14134 --- /dev/null +++ b/fuzz/corpus/10a583c36374692d83a7a760e0acd4ca687a8b2c @@ -0,0 +1,32 @@ +// comment +# comment +/* + comment +*/ + +resoupl1 = [ , 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = true + bool2 -= false + sp = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + fllor2 \ No newline at end of file diff --git a/fuzz/corpus/127ec87368e3bc50aa59aac43780c7472dbc2582 b/fuzz/corpus/127ec87368e3bc50aa59aac43780c7472dbc2582 new file mode 100644 index 0000000..eb87d0f Binary files /dev/null and b/fuzz/corpus/127ec87368e3bc50aa59aac43780c7472dbc2582 differ diff --git a/fuzz/corpus/13ed4fa39ddf3d93e4a7723bd8a20bc235246937 b/fuzz/corpus/13ed4fa39ddf3d93e4a7723bd8a20bc235246937 new file mode 100644 index 0000000..b897dcc Binary files /dev/null and b/fuzz/corpus/13ed4fa39ddf3d93e4a7723bd8a20bc235246937 differ diff --git a/fuzz/corpus/13fd8244f2e1df3650bdda631af31ed7077b02e2 b/fuzz/corpus/13fd8244f2e1df3650bdda631af31ed7077b02e2 new file mode 100644 index 0000000..5c39c6a Binary files /dev/null and b/fuzz/corpus/13fd8244f2e1df3650bdda631af31ed7077b02e2 differ diff --git a/fuzz/corpus/151c1d6ebfe1d4f9eb54929b45d084ed0ef20686 b/fuzz/corpus/151c1d6ebfe1d4f9eb54929b45d084ed0ef20686 new file mode 100644 index 0000000..bc8a670 Binary files /dev/null and b/fuzz/corpus/151c1d6ebfe1d4f9eb54929b45d084ed0ef20686 differ diff --git a/fuzz/corpus/1557c6061e7c6f58fc90ce1f089a08003165a8c9 b/fuzz/corpus/1557c6061e7c6f58fc90ce1f089a08003165a8c9 new file mode 100644 index 0000000..0f6ea1a --- /dev/null +++ b/fuzz/corpus/1557c6061e7c6f58fc90ce1f089a08003165a8c9 @@ -0,0 +1,36 @@ +// comment +# comment +/* + comment +*/ + +re.soupl1 = [ , 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = true + bool2 -= false + splat1 = tuple.*.foo.bar[0] + attr5 = 2.112 splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { forsplat1 = tuple.*.foo.bar[0] + splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => iEOF + prefix + ${func("foo${ var.bar }")} + suffix + EOF + + nested_resource_1 { + attr1 = 2 + attr2 = 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/15ff3258980420ac0381a647b1f5f26da3d6fbb6 b/fuzz/corpus/15ff3258980420ac0381a647b1f5f26da3d6fbb6 new file mode 100644 index 0000000..43371f5 --- /dev/null +++ b/fuzz/corpus/15ff3258980420ac0381a647b1f5f26da3d6fbb6 @@ -0,0 +1,45 @@ +// comment +# comment +/* + comment +*/ + +re.soupl1 = [ , 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = true + bool2 -= false + splat1 = tuple.*.foo.bar[0] + splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v >} = + v for6 = [ for v i, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = true + bool2 -= false + splat1 = tuple.*.foo.bar[0] + splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => iEOF + prefix + ${func("foo${ var.bar }")} + suffix + EOF + + nested_resource_1 { + attr1 = 2 + attr2 = 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/16147a98587750bf0a34c7aed72852bc3c529fca b/fuzz/corpus/16147a98587750bf0a34c7aed72852bc3c529fca new file mode 100644 index 0000000..47687a3 Binary files /dev/null and b/fuzz/corpus/16147a98587750bf0a34c7aed72852bc3c529fca differ diff --git a/fuzz/corpus/1673d9a9a92562f8a70cf56c41bf0c8ca5d86ed2 b/fuzz/corpus/1673d9a9a92562f8a70cf56c41bf0c8ca5d86ed2 new file mode 100644 index 0000000..c3daf53 Binary files /dev/null and b/fuzz/corpus/1673d9a9a92562f8a70cf56c41bf0c8ca5d86ed2 differ diff --git a/fuzz/corpus/169eb25e0c27a8c12876a685d2f01a8c6b78e022 b/fuzz/corpus/169eb25e0c27a8c12876a685d2f01a8c6b78e022 new file mode 100644 index 0000000..40c434b Binary files /dev/null and b/fuzz/corpus/169eb25e0c27a8c12876a685d2f01a8c6b78e022 differ diff --git a/fuzz/corpus/16cd1b9d8222bf769d41f0456211fc09027a555f b/fuzz/corpus/16cd1b9d8222bf769d41f0456211fc09027a555f new file mode 100644 index 0000000..e8ed213 Binary files /dev/null and b/fuzz/corpus/16cd1b9d8222bf769d41f0456211fc09027a555f differ diff --git a/fuzz/corpus/17008a33ae861ebeae932a4e2e9985d0c355e06a b/fuzz/corpus/17008a33ae861ebeae932a4e2e9985d0c355e06a new file mode 100644 index 0000000..750b577 Binary files /dev/null and b/fuzz/corpus/17008a33ae861ebeae932a4e2e9985d0c355e06a differ diff --git a/fuzz/corpus/176001901e039e04bc4f7de62f78291401f53bbe b/fuzz/corpus/176001901e039e04bc4f7de62f78291401f53bbe new file mode 100644 index 0000000..60ed554 --- /dev/null +++ b/fuzz/corpus/176001901e039e04bc4f7de62f78291401f53bbe @@ -0,0 +1,23 @@ +// comment +#? comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 2, 3.4, ޙ" ] + tupl2 = [] + obj1 = { foo = "baz" } + ) + cond1 = (1 == 2) ? 1 : "foobar" + bin1 ! = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-$ attr5 = 2.112E+12 + attr6 = 4.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/17877e3f6de926aa01c7cd100482aac53ce6c920 b/fuzz/corpus/17877e3f6de926aa01c7cd100482aac53ce6c920 new file mode 100644 index 0000000..e868987 Binary files /dev/null and b/fuzz/corpus/17877e3f6de926aa01c7cd100482aac53ce6c920 differ diff --git a/fuzz/corpus/1836c180a074dfae3e8aed5080e3b301548f0a42 b/fuzz/corpus/1836c180a074dfae3e8aed5080e3b301548f0a42 new file mode 100644 index 0000000..564e701 --- /dev/null +++ b/fuzz/corpus/1836c180a074dfae3e8aed5080e3b301548f0a42 @@ -0,0 +1,49 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + ) + cond2 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + ) + cond2 -${func("bar"):}" + tpl3 = "prefix-${func("nested-${var.bar}")m" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k =>// comment +# comment +/* + comment +*/ + +resoual1" + tupl1 = [ 1// comment +#? , 3.4, v } + for4 = [ for v in var.list : v ] + for5 "foo = { for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k =>// comment +# comment +/* + comment +*/ + +resoual1" + tupl1 = [ 1 v in var.list : v => v } + for6 = [ f" ] + or v in var.list : v i tfu \ No newline at end of file diff --git a/fuzz/corpus/186ea0707eeed4bd7beb05b878b5d278aff1f33b b/fuzz/corpus/186ea0707eeed4bd7beb05b878b5d278aff1f33b new file mode 100644 index 0000000..e63dedf Binary files /dev/null and b/fuzz/corpus/186ea0707eeed4bd7beb05b878b5d278aff1f33b differ diff --git a/fuzz/corpus/18c5970a4509ba77ad330cb0907f566e1bff1e5d b/fuzz/corpus/18c5970a4509ba77ad330cb0907f566e1bff1e5d new file mode 100644 index 0000000..f0f66af Binary files /dev/null and b/fuzz/corpus/18c5970a4509ba77ad330cb0907f566e1bff1e5d differ diff --git a/fuzz/corpus/196e06cd902767b9e4697d25335331cb71675ac4 b/fuzz/corpus/196e06cd902767b9e4697d25335331cb71675ac4 new file mode 100644 index 0000000..881db55 Binary files /dev/null and b/fuzz/corpus/196e06cd902767b9e4697d25335331cb71675ac4 differ diff --git a/fuzz/corpus/197ab1c8d86b9c7bd0c721bb1fad0f99911778f3 b/fuzz/corpus/197ab1c8d86b9c7bd0c721bb1fad0f99911778f3 new file mode 100644 index 0000000..f0ce4d8 Binary files /dev/null and b/fuzz/corpus/197ab1c8d86b9c7bd0c721bb1fad0f99911778f3 differ diff --git a/fuzz/corpus/19b8782a0ce8c87c9d38c44ce15d3e5701e6e1ff b/fuzz/corpus/19b8782a0ce8c87c9d38c44ce15d3e5701e6e1ff new file mode 100644 index 0000000..749e2da --- /dev/null +++ b/fuzz/corpus/19b8782a0ce8c87c9d38c44ce15d3e5701e6e1ff @@ -0,0 +1,45 @@ +// comment +# comment +/* + comment +*/ + +resource_1 +"strlit1" "strlit2" { + { + attr1 = 2 + attr2 = 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attz" } + ) + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + e_1 +"strlit1" "strlit2" { + { + attr1 = 2 + attr2 = 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attz" } + ) + cond1 = (1 == 2) ? 1 : "foobar" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bal4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k =>// comment +# comment +/* + comment +*/ + +resoual1" + tupl1 = [ 1// comment +#? , 3.4, v } + for4 = [ for v in var.list : v ] + for5 "foo = { for v in var.list : v => v } + for6 = [ f" ] + or v in var.list : v i tfu \ No newline at end of file diff --git a/fuzz/corpus/22d62004bcbc24429143291e1db23d8a851deb8b b/fuzz/corpus/22d62004bcbc24429143291e1db23d8a851deb8b new file mode 100644 index 0000000..cbb27d0 --- /dev/null +++ b/fuzz/corpus/22d62004bcbc24429143291e1db23d8a851deb8b @@ -0,0 +1,38 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ , 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = true + bool2 -= false + splat1 = tuple.*.foo.bar[0] + splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for7 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\+ \t \UFF11FF22 \uFFFF \n" + esc4 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.)ist : v ] + for5 = { for v in var.list : v >} = + v for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc4 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-$ 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/23db92875851f2294a00df161e7886c71d379944 b/fuzz/corpus/23db92875851f2294a00df161e7886c71d379944 new file mode 100644 index 0000000..c7c9fb6 --- /dev/null +++ b/fuzz/corpus/23db92875851f2294a00df161e7886c71d379944 @@ -0,0 +1,19 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strhit2" { + attr1 = OF + + nestesuedor_rce_1 { + attr1 = 2 + attr2 = 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/24201504effed822a116ddcdbae57a3de01aad61 b/fuzz/corpus/24201504effed822a116ddcdbae57a3de01aad61 new file mode 100644 index 0000000..ba6b403 Binary files /dev/null and b/fuzz/corpus/24201504effed822a116ddcdbae57a3de01aad61 differ diff --git a/fuzz/corpus/24b9a6a8a8296467ed085abdc4b5e2af517f1e0e b/fuzz/corpus/24b9a6a8a8296467ed085abdc4b5e2af517f1e0e new file mode 100644 index 0000000..bf5d417 --- /dev/null +++ b/fuzz/corpus/24b9a6a8a8296467ed085abdc4b5e2af517f1e0e @@ -0,0 +1,22 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "stpl4 = "prefix-${func("nested-${var.bal4 = < v } + for6 = [ for v in var.list : v if v < 3 ] + func1 .112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/29f2622577857a3f3e8f762534c28b8412f4f798 b/fuzz/corpus/29f2622577857a3f3e8f762534c28b8412f4f798 new file mode 100644 index 0000000..1037dac Binary files /dev/null and b/fuzz/corpus/29f2622577857a3f3e8f762534c28b8412f4f798 differ diff --git a/fuzz/corpus/2a171acb84f0a34cc21281bc18ee2753a277d5b9 b/fuzz/corpus/2a171acb84f0a34cc21281bc18ee2753a277d5b9 new file mode 100644 index 0000000..aaa9803 Binary files /dev/null and b/fuzz/corpus/2a171acb84f0a34cc21281bc18ee2753a277d5b9 differ diff --git a/fuzz/corpus/2a64e00649947686de54ca556eead4131277c5a6 b/fuzz/corpus/2a64e00649947686de54ca556eead4131277c5a6 new file mode 100644 index 0000000..8a1f510 --- /dev/null +++ b/fuzz/corpus/2a64e00649947686de54ca556eead4131277c5a6 @@ -0,0 +1,20 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + ) + cond2 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uF2e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/2ae982135c4c4e01d9822fe2b906d0a606f5ad7b b/fuzz/corpus/2ae982135c4c4e01d9822fe2b906d0a606f5ad7b new file mode 100644 index 0000000..fd223ac --- /dev/null +++ b/fuzz/corpus/2ae982135c4c4e01d9822fe2b906d0a606f5ad7b @@ -0,0 +1,22 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "stpl4 = "prefix-${func("nested-${var.bal4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < v } + for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + fllor2 \ No newline at end of file diff --git a/fuzz/corpus/39abeb64c88e752c241aa51ce7c3ba31a1bc9809 b/fuzz/corpus/39abeb64c88e752c241aa51ce7c3ba31a1bc9809 new file mode 100644 index 0000000..4e99398 Binary files /dev/null and b/fuzz/corpus/39abeb64c88e752c241aa51ce7c3ba31a1bc9809 differ diff --git a/fuzz/corpus/39d168ea2bd4fb0b4e0c7d6716e75586d6618d34 b/fuzz/corpus/39d168ea2bd4fb0b4e0c7d6716e75586d6618d34 new file mode 100644 index 0000000..63d3aae Binary files /dev/null and b/fuzz/corpus/39d168ea2bd4fb0b4e0c7d6716e75586d6618d34 differ diff --git a/fuzz/corpus/3a2e9a0a44e18ffd3d6239d8bb01f92f5a84f932 b/fuzz/corpus/3a2e9a0a44e18ffd3d6239d8bb01f92f5a84f932 new file mode 100644 index 0000000..8c94a6e --- /dev/null +++ b/fuzz/corpus/3a2e9a0a44e18ffd3d6239d8bb01f92f5a84f932 @@ -0,0 +1,35 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 2, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + ) + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF ^n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar"):}" + tpl3 = "prefix-${func("nested-${var.bar}")m" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v i: "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v n avir.list : v ] + for5 = { f;or v in var.list : v >} = + v for6 = [ for v i, 3.4, "foo" ] + tu...pl2 = [] + obj1 = { f.o = "baz" } + null1 = null + bool1 = true + bool2 -= false + splat1 = tuple.*.foo.bar[0] + (splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => iEOF + prefix + ${func("foo${ var.bar }")} + suffix + EOF + + nested_resource_1 { + attr1 = 2 + attr2 = 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/3b6636a9cba12b2631636b274a09d18c093caf9d b/fuzz/corpus/3b6636a9cba12b2631636b274a09d18c093caf9d new file mode 100644 index 0000000..af7326e Binary files /dev/null and b/fuzz/corpus/3b6636a9cba12b2631636b274a09d18c093caf9d differ diff --git a/fuzz/corpus/3ba6761d67fb7802e5b6ae874d60cdce36ae89a9 b/fuzz/corpus/3ba6761d67fb7802e5b6ae874d60cdce36ae89a9 new file mode 100644 index 0000000..cb74abd --- /dev/null +++ b/fuzz/corpus/3ba6761d67fb7802e5b6ae874d60cdce36ae89a9 @@ -0,0 +1,48 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + ) + ond2 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = 2e+12 + attrbin1 = ((1+2)%3)*4 + esc1 = "= "prefix-${func("nested-${var.bar}")m" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ fo߉ߖ߉ar.list : v ] + for5 = { for v in var.list : v >} = + v for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc4 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${f attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/3f957e83d004366b0ac74f5f537ee624314134db b/fuzz/corpus/3f957e83d004366b0ac74f5f537ee624314134db new file mode 100644 index 0000000..3b0ed3b Binary files /dev/null and b/fuzz/corpus/3f957e83d004366b0ac74f5f537ee624314134db differ diff --git a/fuzz/corpus/3fb4665fcf7094125db26a691d05be62b650bb63 b/fuzz/corpus/3fb4665fcf7094125db26a691d05be62b650bb63 new file mode 100644 index 0000000..7d32214 Binary files /dev/null and b/fuzz/corpus/3fb4665fcf7094125db26a691d05be62b650bb63 differ diff --git a/fuzz/corpus/401c3d967f389e677ca5a814747b70ccbb5891e1 b/fuzz/corpus/401c3d967f389e677ca5a814747b70ccbb5891e1 new file mode 100644 index 0000000..c75ab4b Binary files /dev/null and b/fuzz/corpus/401c3d967f389e677ca5a814747b70ccbb5891e1 differ diff --git a/fuzz/corpus/4113d7b99c18e608326ec6fff25bfa715082b9ca b/fuzz/corpus/4113d7b99c18e608326ec6fff25bfa715082b9ca new file mode 100644 index 0000000..51556bf Binary files /dev/null and b/fuzz/corpus/4113d7b99c18e608326ec6fff25bfa715082b9ca differ diff --git a/fuzz/corpus/4129a954831d78a3d69409a52ae14b983cd8f82e b/fuzz/corpus/4129a954831d78a3d69409a52ae14b983cd8f82e new file mode 100644 index 0000000..45c185e Binary files /dev/null and b/fuzz/corpus/4129a954831d78a3d69409a52ae14b983cd8f82e differ diff --git a/fuzz/corpus/414e12961a68bb36e3b9b552f5f0810f3242c124 b/fuzz/corpus/414e12961a68bb36e3b9b552f5f0810f3242c124 new file mode 100644 index 0000000..d57ebd2 Binary files /dev/null and b/fuzz/corpus/414e12961a68bb36e3b9b552f5f0810f3242c124 differ diff --git a/fuzz/corpus/416662d8e7a8bff66c549ada332d8de6ca51f96b b/fuzz/corpus/416662d8e7a8bff66c549ada332d8de6ca51f96b new file mode 100644 index 0000000..41bb200 --- /dev/null +++ b/fuzz/corpus/416662d8e7a8bff66c549ada332d8de6ca51f96b @@ -0,0 +1,32 @@ +// comment +# cont +/* + comment +*/ + +resoupl1 = [ , 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = true + bool2 -= false + splat1 = tuple.*.foo.bar[0] + splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.)ist : v ] + for5 = { for v in var.list : v >} = + v for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc4 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-$ 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/42742e842631061c0401f7dff143ab8f0a662dfc b/fuzz/corpus/42742e842631061c0401f7dff143ab8f0a662dfc new file mode 100644 index 0000000..627dba6 Binary files /dev/null and b/fuzz/corpus/42742e842631061c0401f7dff143ab8f0a662dfc differ diff --git a/fuzz/corpus/42cbdcde97d2d57a5402a4bdc3e58a93f18e8204 b/fuzz/corpus/42cbdcde97d2d57a5402a4bdc3e58a93f18e8204 new file mode 100644 index 0000000..e103d1b --- /dev/null +++ b/fuzz/corpus/42cbdcde97d2d57a5402a4bdc3e58a93f18e8204 @@ -0,0 +1,52 @@ +// comment +# comment +/* + comment +*/ + +resoupl1 = [ , 3.4, "foo" ] + tupl2 = [] + obj1 = { 4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = trufoo = "baz" } + null1 = null + bool1 = true + +*/ + +resoupl1 = [ , 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = true + bool2 -= false + splat1 = tuple.*.foo.bar[0] + splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list :(v >} = + v for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3) + prefix + ${func("foo${ var.bar }")} + suffix + EOF + + nested_resource_1 { + attr1 = 2 + attr2 = 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/432077233366b2e958e59892e6bd4f89a0c353be b/fuzz/corpus/432077233366b2e958e59892e6bd4f89a0c353be new file mode 100644 index 0000000..27bec85 Binary files /dev/null and b/fuzz/corpus/432077233366b2e958e59892e6bd4f89a0c353be differ diff --git a/fuzz/corpus/43583c1164b1a30d17b59e66a8c39bb2a64e12c5 b/fuzz/corpus/43583c1164b1a30d17b59e66a8c39bb2a64e12c5 new file mode 100644 index 0000000..e5d9a71 Binary files /dev/null and b/fuzz/corpus/43583c1164b1a30d17b59e66a8c39bb2a64e12c5 differ diff --git a/fuzz/corpus/43c82d50c9174db9b63f9e8437d75c0b94f8bedf b/fuzz/corpus/43c82d50c9174db9b63f9e8437d75c0b94f8bedf new file mode 100644 index 0000000..781ffa3 Binary files /dev/null and b/fuzz/corpus/43c82d50c9174db9b63f9e8437d75c0b94f8bedf differ diff --git a/fuzz/corpus/43ee2b13e62646b2703abfd6f1f5dbde2e62bade b/fuzz/corpus/43ee2b13e62646b2703abfd6f1f5dbde2e62bade new file mode 100644 index 0000000..0d17ead Binary files /dev/null and b/fuzz/corpus/43ee2b13e62646b2703abfd6f1f5dbde2e62bade differ diff --git a/fuzz/corpus/44641693f00dd241ee16e15387dc3d47a2c53fac b/fuzz/corpus/44641693f00dd241ee16e15387dc3d47a2c53fac new file mode 100644 index 0000000..a633a0d Binary files /dev/null and b/fuzz/corpus/44641693f00dd241ee16e15387dc3d47a2c53fac differ diff --git a/fuzz/corpus/45fb857d6329ec90487eb44ca9b5696ee5d132e9 b/fuzz/corpus/45fb857d6329ec90487eb44ca9b5696ee5d132e9 new file mode 100644 index 0000000..3fc62ad Binary files /dev/null and b/fuzz/corpus/45fb857d6329ec90487eb44ca9b5696ee5d132e9 differ diff --git a/fuzz/corpus/46091b022e1f3600c640c1571f69d4843754b96f b/fuzz/corpus/46091b022e1f3600c640c1571f69d4843754b96f new file mode 100644 index 0000000..e6a89a9 Binary files /dev/null and b/fuzz/corpus/46091b022e1f3600c640c1571f69d4843754b96f differ diff --git a/fuzz/corpus/4618e9d2cf82ee59541c289fc6ec27e5dac3b214 b/fuzz/corpus/4618e9d2cf82ee59541c289fc6ec27e5dac3b214 new file mode 100644 index 0000000..96b8b4b Binary files /dev/null and b/fuzz/corpus/4618e9d2cf82ee59541c289fc6ec27e5dac3b214 differ diff --git a/fuzz/corpus/46350e7900e7e07a1a36868e58487c28a69a2e8c b/fuzz/corpus/46350e7900e7e07a1a36868e58487c28a69a2e8c new file mode 100644 index 0000000..e6d2552 Binary files /dev/null and b/fuzz/corpus/46350e7900e7e07a1a36868e58487c28a69a2e8c differ diff --git a/fuzz/corpus/46e840e5d11ed97ffd44ce061f4f64f34c00b00c b/fuzz/corpus/46e840e5d11ed97ffd44ce061f4f64f34c00b00c new file mode 100644 index 0000000..6350eb0 Binary files /dev/null and b/fuzz/corpus/46e840e5d11ed97ffd44ce061f4f64f34c00b00c differ diff --git a/fuzz/corpus/471184d2116397e7549114d3261422f4e8790a0f b/fuzz/corpus/471184d2116397e7549114d3261422f4e8790a0f new file mode 100644 index 0000000..05e80d3 Binary files /dev/null and b/fuzz/corpus/471184d2116397e7549114d3261422f4e8790a0f differ diff --git a/fuzz/corpus/479a4196cfa9945a199d31bc757434af53793904 b/fuzz/corpus/479a4196cfa9945a199d31bc757434af53793904 new file mode 100644 index 0000000..1a50636 Binary files /dev/null and b/fuzz/corpus/479a4196cfa9945a199d31bc757434af53793904 differ diff --git a/fuzz/corpus/4834d281bee6c3bf919f2a4bc4f6ad7fd12f4436 b/fuzz/corpus/4834d281bee6c3bf919f2a4bc4f6ad7fd12f4436 new file mode 100644 index 0000000..e81ce30 Binary files /dev/null and b/fuzz/corpus/4834d281bee6c3bf919f2a4bc4f6ad7fd12f4436 differ diff --git a/fuzz/corpus/4836b268a4a99c054c3ff13bff493ba59fcdff15 b/fuzz/corpus/4836b268a4a99c054c3ff13bff493ba59fcdff15 new file mode 100644 index 0000000..d90148a Binary files /dev/null and b/fuzz/corpus/4836b268a4a99c054c3ff13bff493ba59fcdff15 differ diff --git a/fuzz/corpus/488aa6ec3e460c3c52c300e6cab8cd8ba3162ab8 b/fuzz/corpus/488aa6ec3e460c3c52c300e6cab8cd8ba3162ab8 new file mode 100644 index 0000000..19c1e68 Binary files /dev/null and b/fuzz/corpus/488aa6ec3e460c3c52c300e6cab8cd8ba3162ab8 differ diff --git a/fuzz/corpus/48ecaaac2cf3757973e6bbd69b21fe9d4920bc17 b/fuzz/corpus/48ecaaac2cf3757973e6bbd69b21fe9d4920bc17 new file mode 100644 index 0000000..cce8b42 Binary files /dev/null and b/fuzz/corpus/48ecaaac2cf3757973e6bbd69b21fe9d4920bc17 differ diff --git a/fuzz/corpus/4a481477b196d8f8b56360dc2efa7e15d8f4195f b/fuzz/corpus/4a481477b196d8f8b56360dc2efa7e15d8f4195f new file mode 100644 index 0000000..714c959 --- /dev/null +++ b/fuzz/corpus/4a481477b196d8f8b56360dc2efa7e15d8f4195f @@ -0,0 +1,48 @@ +// comment +# comment +/* + comment +*/ + +resoupl1 = [ , 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = true + +*/ + +resoupl1 = [ , 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = true + bool2 -= false + splat1 = tuple.*.foo.bar[0] + splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v >} = + v for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3) + prefix + ${func("foo${ var.bar }")} + suffix + EOF + + nested_resource_1 { + attr1 = 2 + attr2 = 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/4a5033191dc7e2f32f26a791aebb1dc3e43bdc5c b/fuzz/corpus/4a5033191dc7e2f32f26a791aebb1dc3e43bdc5c new file mode 100644 index 0000000..7301af2 --- /dev/null +++ b/fuzz/corpus/4a5033191dc7e2f32f26a791aebb1dc3e43bdc5c @@ -0,0 +1,24 @@ +// comment +#? comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr tp3l = "prefix-${func("nested-${=>var.bar}")}" + tpl2 = < i... } + for1 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.in ["a", "a", "b"] : v => i... } + for1 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4= 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/4b5ecbfd784e96a2da07bb1fda871bfeb1737df1 b/fuzz/corpus/4b5ecbfd784e96a2da07bb1fda871bfeb1737df1 new file mode 100644 index 0000000..a49705d Binary files /dev/null and b/fuzz/corpus/4b5ecbfd784e96a2da07bb1fda871bfeb1737df1 differ diff --git a/fuzz/corpus/4bae31d27e3d4edafe209e3b2f26697820f337a3 b/fuzz/corpus/4bae31d27e3d4edafe209e3b2f26697820f337a3 new file mode 100644 index 0000000..5efbbcb Binary files /dev/null and b/fuzz/corpus/4bae31d27e3d4edafe209e3b2f26697820f337a3 differ diff --git a/fuzz/corpus/4be090eafd6b0da1dbba8a9498525e5bce2dbf8d b/fuzz/corpus/4be090eafd6b0da1dbba8a9498525e5bce2dbf8d new file mode 100644 index 0000000..6145232 Binary files /dev/null and b/fuzz/corpus/4be090eafd6b0da1dbba8a9498525e5bce2dbf8d differ diff --git a/fuzz/corpus/4c01839ad76200d1d283c7bd5a92c88295036ed8 b/fuzz/corpus/4c01839ad76200d1d283c7bd5a92c88295036ed8 new file mode 100644 index 0000000..7990c4f Binary files /dev/null and b/fuzz/corpus/4c01839ad76200d1d283c7bd5a92c88295036ed8 differ diff --git a/fuzz/corpus/4c2ef0625d809fd9345079d5b877a847b4ebf196 b/fuzz/corpus/4c2ef0625d809fd9345079d5b877a847b4ebf196 new file mode 100644 index 0000000..df95f72 Binary files /dev/null and b/fuzz/corpus/4c2ef0625d809fd9345079d5b877a847b4ebf196 differ diff --git a/fuzz/corpus/4cf5cded41df1507fbddfcaf2dccf2e3cda486a5 b/fuzz/corpus/4cf5cded41df1507fbddfcaf2dccf2e3cda486a5 new file mode 100644 index 0000000..606b741 Binary files /dev/null and b/fuzz/corpus/4cf5cded41df1507fbddfcaf2dccf2e3cda486a5 differ diff --git a/fuzz/corpus/4d4edc7cc5d0dcacb60bf46d519d2fdb06e16230 b/fuzz/corpus/4d4edc7cc5d0dcacb60bf46d519d2fdb06e16230 new file mode 100644 index 0000000..5e474c4 --- /dev/null +++ b/fuzz/corpus/4d4edc7cc5d0dcacb60bf46d519d2fdb06e16230 @@ -0,0 +1,35 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 2, 3.4if, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + @) + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v >} = + v for6 = [ for v i, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = true + bool2 -= false + splat1 = tuple.*.foo.bar[0] + splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => iEOF + prefix + ${func("foo${ var.bar }")} + suffix + EOF + + nested_resource_1 { + attr1 = 2 + attr2 = 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/5c081103e54becf528d011b55893210dc0de921f b/fuzz/corpus/5c081103e54becf528d011b55893210dc0de921f new file mode 100644 index 0000000..19bab2e Binary files /dev/null and b/fuzz/corpus/5c081103e54becf528d011b55893210dc0de921f differ diff --git a/fuzz/corpus/5cd165c034b1dc5b8784be8a524fe742d8c7e2c1 b/fuzz/corpus/5cd165c034b1dc5b8784be8a524fe742d8c7e2c1 new file mode 100644 index 0000000..1c10fa7 Binary files /dev/null and b/fuzz/corpus/5cd165c034b1dc5b8784be8a524fe742d8c7e2c1 differ diff --git a/fuzz/corpus/5cf4b25c9924b8b0f3007d65c9fb5503e90db58c b/fuzz/corpus/5cf4b25c9924b8b0f3007d65c9fb5503e90db58c new file mode 100644 index 0000000..e94c39c Binary files /dev/null and b/fuzz/corpus/5cf4b25c9924b8b0f3007d65c9fb5503e90db58c differ diff --git a/fuzz/corpus/5d195ff7a268a3b53b456319c536950d63e9c313 b/fuzz/corpus/5d195ff7a268a3b53b456319c536950d63e9c313 new file mode 100644 index 0000000..0d36a8c Binary files /dev/null and b/fuzz/corpus/5d195ff7a268a3b53b456319c536950d63e9c313 differ diff --git a/fuzz/corpus/5d1dd60163527de9140ddf23070cf2235203f155 b/fuzz/corpus/5d1dd60163527de9140ddf23070cf2235203f155 new file mode 100644 index 0000000..f55fa53 --- /dev/null +++ b/fuzz/corpus/5d1dd60163527de9140ddf23070cf2235203f155 @@ -0,0 +1,32 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 2, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + ) + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2t +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 2, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + ) + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF ^n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 .112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/5db5a63a1639039c842e4ed017e670d81e68b49b b/fuzz/corpus/5db5a63a1639039c842e4ed017e670d81e68b49b new file mode 100644 index 0000000..3f07215 Binary files /dev/null and b/fuzz/corpus/5db5a63a1639039c842e4ed017e670d81e68b49b differ diff --git a/fuzz/corpus/5e78066f6092cc2205588c3a287ab705a9a3aa35 b/fuzz/corpus/5e78066f6092cc2205588c3a287ab705a9a3aa35 new file mode 100644 index 0000000..466e0f6 Binary files /dev/null and b/fuzz/corpus/5e78066f6092cc2205588c3a287ab705a9a3aa35 differ diff --git a/fuzz/corpus/5e817a86125ca23c000d1bd093d7248b7f080389 b/fuzz/corpus/5e817a86125ca23c000d1bd093d7248b7f080389 new file mode 100644 index 0000000..27b4239 --- /dev/null +++ b/fuzz/corpus/5e817a86125ca23c000d1bd093d7248b7f080389 @@ -0,0 +1,52 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "stjxrlit2" { + attr1 = "val1" + tupl1 = [ 1, 2, 3.4, "foo" ] + bupl2 = [] + obj1 = { foo = "baz" } + ) + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF05*F22 \uFFFF \n" + esc2_ = "$${} %%{}" + tpl1 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 1= "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = <var.bar}")}" + tpl2 =r7 = 0x21 } +} diff --git a/fuzz/corpus/7366cfacf9d83757825b7bb996d32cefbfe876f1 b/fuzz/corpus/7366cfacf9d83757825b7bb996d32cefbfe876f1 new file mode 100644 index 0000000..3392f39 --- /dev/null +++ b/fuzz/corpus/7366cfacf9d83757825b7bb996d32cefbfe876f1 @@ -0,0 +1,26 @@ +// comment +# comment +/* + comment +*/ + +resoupl1 = [ , 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null = null + boolfunc("foo${ var.bar }")} + suffix + EOF + + nested_resource_1 { + attr1 = 2 + attr2 = 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/73705226818fafea36185303fedbdba336e056ac b/fuzz/corpus/73705226818fafea36185303fedbdba336e056ac new file mode 100644 index 0000000..51b2291 Binary files /dev/null and b/fuzz/corpus/73705226818fafea36185303fedbdba336e056ac differ diff --git a/fuzz/corpus/73f607831876d247daf17cb43c995348454ff102 b/fuzz/corpus/73f607831876d247daf17cb43c995348454ff102 new file mode 100644 index 0000000..151edb3 Binary files /dev/null and b/fuzz/corpus/73f607831876d247daf17cb43c995348454ff102 differ diff --git a/fuzz/corpus/7450f042bfaef798bb6ff997533f53b469122214 b/fuzz/corpus/7450f042bfaef798bb6ff997533f53b469122214 new file mode 100644 index 0000000..058d8ca --- /dev/null +++ b/fuzz/corpus/7450f042bfaef798bb6ff997533f53b469122214 @@ -0,0 +1,31 @@ +// comment +#? commen// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 3.4, "=>o" ] + tupl2 = [] + obj1 = { foo =t +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = " "baz" } + ) + cond2 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uF2e+12 + attr5-12 + attr7 2 = "prefix-${func("ba= 0x2az" } + ) + cond1 = (1 == 2) ? 1 : "foobar=> bin1 ! = ((1+2)%3)*4 + esc1 = "\" tUF\F\1 1FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tplr6 = 2.112E-12 + attr7 2 = "prefix-${func("ba= 0x21FFr")} \ No newline at end of file diff --git a/fuzz/corpus/74b172369d8605807334f551d38d4e346a7f3045 b/fuzz/corpus/74b172369d8605807334f551d38d4e346a7f3045 new file mode 100644 index 0000000..4e2b55b Binary files /dev/null and b/fuzz/corpus/74b172369d8605807334f551d38d4e346a7f3045 differ diff --git a/fuzz/corpus/74f8ef303b23d9aed48af33d6541f1b88c7f7dae b/fuzz/corpus/74f8ef303b23d9aed48af33d6541f1b88c7f7dae new file mode 100644 index 0000000..63a8a89 Binary files /dev/null and b/fuzz/corpus/74f8ef303b23d9aed48af33d6541f1b88c7f7dae differ diff --git a/fuzz/corpus/75019e57ebfc6acfdc1fd435c87a833553b1ea3c b/fuzz/corpus/75019e57ebfc6acfdc1fd435c87a833553b1ea3c new file mode 100644 index 0000000..144bf79 Binary files /dev/null and b/fuzz/corpus/75019e57ebfc6acfdc1fd435c87a833553b1ea3c differ diff --git a/fuzz/corpus/751324c0cff0c8d34eeb8816c2c8f25f21329eef b/fuzz/corpus/751324c0cff0c8d34eeb8816c2c8f25f21329eef new file mode 100644 index 0000000..e8b9d20 Binary files /dev/null and b/fuzz/corpus/751324c0cff0c8d34eeb8816c2c8f25f21329eef differ diff --git a/fuzz/corpus/7592d30cf1d4a13dac2b9aa126c3d824472e76b7 b/fuzz/corpus/7592d30cf1d4a13dac2b9aa126c3d824472e76b7 new file mode 100644 index 0000000..49b5e2e Binary files /dev/null and b/fuzz/corpus/7592d30cf1d4a13dac2b9aa126c3d824472e76b7 differ diff --git a/fuzz/corpus/7599c8417225782f5de18ac2beae6a140624ee45 b/fuzz/corpus/7599c8417225782f5de18ac2beae6a140624ee45 new file mode 100644 index 0000000..ff25acf --- /dev/null +++ b/fuzz/corpus/7599c8417225782f5de18ac2beae6a140624ee45 @@ -0,0 +1,45 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + ) + cond2 = (1 %3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" esc2 = "$${} %%{}" + tprefix comment +/* + com comment +*/ + +rrce_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 3.4, "foo" ] + tupl2 = [] +OF + prefix + ${func("foo${ var.bar }")} + suffix + EOF + + nestesuedor_rce_1 { + attr1 = 2 + attr2 = 2.112 + *4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 5 = 2.112E+12 + attr6 attr4 = 2.112e+12 + attrbin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/7645d4ecfb9372bb75cde8736fd3e7d63c5f2a2a b/fuzz/corpus/7645d4ecfb9372bb75cde8736fd3e7d63c5f2a2a new file mode 100644 index 0000000..d4e1c97 Binary files /dev/null and b/fuzz/corpus/7645d4ecfb9372bb75cde8736fd3e7d63c5f2a2a differ diff --git a/fuzz/corpus/76c2f873ce6802ee1bb858e1784a7c0d2df9da53 b/fuzz/corpus/76c2f873ce6802ee1bb858e1784a7c0d2df9da53 new file mode 100644 index 0000000..f9ae9f1 Binary files /dev/null and b/fuzz/corpus/76c2f873ce6802ee1bb858e1784a7c0d2df9da53 differ diff --git a/fuzz/corpus/76e802ed435a961cec4bbd508171996f7bcbd3f6 b/fuzz/corpus/76e802ed435a961cec4bbd508171996f7bcbd3f6 new file mode 100644 index 0000000..1df7593 Binary files /dev/null and b/fuzz/corpus/76e802ed435a961cec4bbd508171996f7bcbd3f6 differ diff --git a/fuzz/corpus/77342dbbf8eeb21defe2b20e8a6ea5c316127328 b/fuzz/corpus/77342dbbf8eeb21defe2b20e8a6ea5c316127328 new file mode 100644 index 0000000..4698148 Binary files /dev/null and b/fuzz/corpus/77342dbbf8eeb21defe2b20e8a6ea5c316127328 differ diff --git a/fuzz/corpus/776afcec4d2a6ed7a64325aa462f9532f044bfb7 b/fuzz/corpus/776afcec4d2a6ed7a64325aa462f9532f044bfb7 new file mode 100644 index 0000000..1eef574 --- /dev/null +++ b/fuzz/corpus/776afcec4d2a6ed7a64325aa462f9532f044bfb7 @@ -0,0 +1,36 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + a(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((ttr1 = "val1" + tupl1 = [ 1, *2, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + ) + cond1 = (1 == 2) ? 1 : "foobar" + tupl2 = [] + obj1 = { foo = "baz" } + ) + cond1 = (1 == 2) ? 1 : "foobar" + bin1 ! = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + bin1 ! = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl0 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc4 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = <FFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tUFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + + tpl4 = <var.bar}")}" + tpl2 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ fqr v in var null + bool1 = true + bool2 -= false + splat1 = tuple.*.foo.bar[0] + splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => iEOF + prefix + ${func("foo${ var.bar }")} + suffix + EOF + + nested_resource_1 { + attr1 = 2 + attr2 = 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/7f05b5cc82f3fd2fb062ff4520244bc6e12ee951 b/fuzz/corpus/7f05b5cc82f3fd2fb062ff4520244bc6e12ee951 new file mode 100644 index 0000000..b4a2977 --- /dev/null +++ b/fuzz/corpus/7f05b5cc82f3fd2fb062ff4520244bc6e12ee951 @@ -0,0 +1,46 @@ +// comment +# comment +/* + comment +*/ + +resoupl1 = [ , 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = true + bool2 -= false + splat1 = tuple.*.foo.bar[0] + splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v >} = + v for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc4 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func1 = is_numbe,("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v >} = + v for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc4 = "$${ "prefix-${func("nested-${var.bar}")}" + tpl4 = < ${func("foo${ var.bar }")} + suffix + EOF + + nested_resource_1 { + attr1 = 2 + attr2 = 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/81a7e9d20fe33a3df4e28d61a252ffff2fb4548f b/fuzz/corpus/81a7e9d20fe33a3df4e28d61a252ffff2fb4548f new file mode 100644 index 0000000..9a744ac --- /dev/null +++ b/fuzz/corpus/81a7e9d20fe33a3df4e28d61a252ffff2fb4548f @@ -0,0 +1,35 @@ +// comment +#? comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 2, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + ) + cond1 = (1 == 2) ? 1 : "foobar" + bin1 ! = ((1+2)%3)*4 + esc1 = "\2" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${=>var.bar}")}" + tpl2 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for7 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\+ \t \UFF11FF22 \uFFFF \n" + esc4 = "$${} %%{}" + tpl1 = "prefix-${var.bfix + EOF + + nested_resource_1 { + attr1 = 2 + attr2 = 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/83f6865d2c3cb960580b1a3c392df6c235cac216 b/fuzz/corpus/83f6865d2c3cb960580b1a3c392df6c235cac216 new file mode 100644 index 0000000..61d49aa Binary files /dev/null and b/fuzz/corpus/83f6865d2c3cb960580b1a3c392df6c235cac216 differ diff --git a/fuzz/corpus/83fa310e36e2a61aaa30c7bc34dd77463a75c502 b/fuzz/corpus/83fa310e36e2a61aaa30c7bc34dd77463a75c502 new file mode 100644 index 0000000..6670969 Binary files /dev/null and b/fuzz/corpus/83fa310e36e2a61aaa30c7bc34dd77463a75c502 differ diff --git a/fuzz/corpus/841bfd381c0c9ae0f12fb0941b9b489f93ab7279 b/fuzz/corpus/841bfd381c0c9ae0f12fb0941b9b489f93ab7279 new file mode 100644 index 0000000..747bc41 Binary files /dev/null and b/fuzz/corpus/841bfd381c0c9ae0f12fb0941b9b489f93ab7279 differ diff --git a/fuzz/corpus/84ba9a03124b301598fa7fd8ad492aea69a70d0a b/fuzz/corpus/84ba9a03124b301598fa7fd8ad492aea69a70d0a new file mode 100644 index 0000000..a00c20d Binary files /dev/null and b/fuzz/corpus/84ba9a03124b301598fa7fd8ad492aea69a70d0a differ diff --git a/fuzz/corpus/84eb08c783b1f2841506689f24f1ac417a4aeae5 b/fuzz/corpus/84eb08c783b1f2841506689f24f1ac417a4aeae5 new file mode 100644 index 0000000..3aeb686 Binary files /dev/null and b/fuzz/corpus/84eb08c783b1f2841506689f24f1ac417a4aeae5 differ diff --git a/fuzz/corpus/853df98a17694df9dc796a69971ec311de54ec8e b/fuzz/corpus/853df98a17694df9dc796a69971ec311de54ec8e new file mode 100644 index 0000000..31b69b9 --- /dev/null +++ b/fuzz/corpus/853df98a17694df9dc796a69971ec311de54ec8e @@ -0,0 +1,30 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 2, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = true + bool2 = false + splat1 = tuple.*.foo.bar[0] + splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + f/r3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func1 .112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/85b747fc2d51bdc6f0201648dcae951aa7879068 b/fuzz/corpus/85b747fc2d51bdc6f0201648dcae951aa7879068 new file mode 100644 index 0000000..f458c80 Binary files /dev/null and b/fuzz/corpus/85b747fc2d51bdc6f0201648dcae951aa7879068 differ diff --git a/fuzz/corpus/860c40a2b09583853abdf906ace2f23b885d8494 b/fuzz/corpus/860c40a2b09583853abdf906ace2f23b885d8494 new file mode 100644 index 0000000..002ae71 Binary files /dev/null and b/fuzz/corpus/860c40a2b09583853abdf906ace2f23b885d8494 differ diff --git a/fuzz/corpus/861291f5b1163357dc1976d92b942ea549112fae b/fuzz/corpus/861291f5b1163357dc1976d92b942ea549112fae new file mode 100644 index 0000000..145899a --- /dev/null +++ b/fuzz/corpus/861291f5b1163357dc1976d92b942ea549112fae @@ -0,0 +1,34 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit4" { + attr1 = "val1" + tupl14 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + t = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.ber}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k,0v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func = is_numbe,("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF12FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tplprefix-${func("bar")}" + uple.*. tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ fn" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k,0v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func = is_numbe,("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF12FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list :(v >} = + v for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3) + prefix + ${func("foo${ var.bar }")} + suffix + E = { foo = "baz" } + null1 = null + bool1 = trufoo = "baz" } + null1 = null + bool1 = true + +*/ + +resoupl1 = [ , 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + nttr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/925a1e1d6e87890022e097aa742a897f14bf8c74 b/fuzz/corpus/925a1e1d6e87890022e097aa742a897f14bf8c74 new file mode 100644 index 0000000..a3e15bc Binary files /dev/null and b/fuzz/corpus/925a1e1d6e87890022e097aa742a897f14bf8c74 differ diff --git a/fuzz/corpus/92657b30f30da86e98286ba0f415c932f8b9a4d9 b/fuzz/corpus/92657b30f30da86e98286ba0f415c932f8b9a4d9 new file mode 100644 index 0000000..079491e Binary files /dev/null and b/fuzz/corpus/92657b30f30da86e98286ba0f415c932f8b9a4d9 differ diff --git a/fuzz/corpus/9363fd6e1f7b0a349fd0981a01524585347d3e18 b/fuzz/corpus/9363fd6e1f7b0a349fd0981a01524585347d3e18 new file mode 100644 index 0000000..7516ffb Binary files /dev/null and b/fuzz/corpus/9363fd6e1f7b0a349fd0981a01524585347d3e18 differ diff --git a/fuzz/corpus/93c63cbf2dd793bb65c68b9cebd2af26f45f18fe b/fuzz/corpus/93c63cbf2dd793bb65c68b9cebd2af26f45f18fe new file mode 100644 index 0000000..20bd0e8 Binary files /dev/null and b/fuzz/corpus/93c63cbf2dd793bb65c68b9cebd2af26f45f18fe differ diff --git a/fuzz/corpus/93cff6708ccbf8d19a05dcf5b32badfd2e71f06f b/fuzz/corpus/93cff6708ccbf8d19a05dcf5b32badfd2e71f06f new file mode 100644 index 0000000..392c2c6 Binary files /dev/null and b/fuzz/corpus/93cff6708ccbf8d19a05dcf5b32badfd2e71f06f differ diff --git a/fuzz/corpus/93fdf44891438adb30140130e1038e0c82eea18e b/fuzz/corpus/93fdf44891438adb30140130e1038e0c82eea18e new file mode 100644 index 0000000..d2bad65 --- /dev/null +++ b/fuzz/corpus/93fdf44891438adb30140130e1038e0c82eea18e @@ -0,0 +1,36 @@ +// comment +#? commen// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo =t +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = " "baz" } + ) + cond2 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uF2e+12 + attr5 = 2.112E+12 + val1" + tupl1 = [ 1, 2, 3.4, "foo" ] + tupl att2 = [] + obj1 = { foo = "baz" } + ) + cond1 = (1 == 2) ? 1 : "foobar=> bin1 ! = ((1+2)%3)*4 + esc1 = "\" tUF\F\1 1FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tplr6 = 2.112E-12 + attr7 2 = "prefix-${func("ba= 0x21FFr")}" + + \ No newline at end of file diff --git a/fuzz/corpus/94f1104e874ea7300eb3222d855b22563e904702 b/fuzz/corpus/94f1104e874ea7300eb3222d855b22563e904702 new file mode 100644 index 0000000..7913a0c Binary files /dev/null and b/fuzz/corpus/94f1104e874ea7300eb3222d855b22563e904702 differ diff --git a/fuzz/corpus/953c2615625844bd6fa31d25a53a099b44b8b00f b/fuzz/corpus/953c2615625844bd6fa31d25a53a099b44b8b00f new file mode 100644 index 0000000..22a7a57 Binary files /dev/null and b/fuzz/corpus/953c2615625844bd6fa31d25a53a099b44b8b00f differ diff --git a/fuzz/corpus/955e1fda6d2569e0eef731746b049e2f62c71e25 b/fuzz/corpus/955e1fda6d2569e0eef731746b049e2f62c71e25 new file mode 100644 index 0000000..211d473 Binary files /dev/null and b/fuzz/corpus/955e1fda6d2569e0eef731746b049e2f62c71e25 differ diff --git a/fuzz/corpus/95a838a736c3a7a9a708cf5300fa70ba5768e690 b/fuzz/corpus/95a838a736c3a7a9a708cf5300fa70ba5768e690 new file mode 100644 index 0000000..203cf78 Binary files /dev/null and b/fuzz/corpus/95a838a736c3a7a9a708cf5300fa70ba5768e690 differ diff --git a/fuzz/corpus/96573df84f5182d8cc692fbc48535738643958d3 b/fuzz/corpus/96573df84f5182d8cc692fbc48535738643958d3 new file mode 100644 index 0000000..7b614da --- /dev/null +++ b/fuzz/corpus/96573df84f5182d8cc692fbc48535738643958d3 @@ -0,0 +1,39 @@ +// comment +# comment +/* + comment +*/ + +rEsource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 2, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = true + bool2 = false + splat1 = tuple.*.foo.bar[0] + splat2 = tuple[#].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k =>// comment +# comment +/* + comment +*/ + +resoual1" + tupl1 = [ 1// comment +#? , 3.4, v } + for4 = [ for v in var.list : v ] + for5 "foo = { for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k =>// comment +# comment +/* + comment +*/ + +resoual1" + tupl1 = [ 1 v in var.list : v => v } + for6 = [ f" ] + or v in var.list : v i tfu \ No newline at end of file diff --git a/fuzz/corpus/96709aeea1ea6348388a458bcb401cc895ede2b5 b/fuzz/corpus/96709aeea1ea6348388a458bcb401cc895ede2b5 new file mode 100644 index 0000000..bb41509 Binary files /dev/null and b/fuzz/corpus/96709aeea1ea6348388a458bcb401cc895ede2b5 differ diff --git a/fuzz/corpus/96a1f7231c54003fd4ee136411ac8d38327b7902 b/fuzz/corpus/96a1f7231c54003fd4ee136411ac8d38327b7902 new file mode 100644 index 0000000..62e7d27 Binary files /dev/null and b/fuzz/corpus/96a1f7231c54003fd4ee136411ac8d38327b7902 differ diff --git a/fuzz/corpus/97630d5263c793a25e3cb12b6c2b4034c8cbd7e4 b/fuzz/corpus/97630d5263c793a25e3cb12b6c2b4034c8cbd7e4 new file mode 100644 index 0000000..7421b24 --- /dev/null +++ b/fuzz/corpus/97630d5263c793a25e3cb12b6c2b4034c8cbd7e4 @@ -0,0 +1,12 @@ +// comment +# comment +/* + comment +*/ + +resoual1" + tupl1 = [ 1// comment +#? , 3.4, "foo" ] + tucomment +/* + \ No newline at end of file diff --git a/fuzz/corpus/97afff948335ebb91b9bd49138eef2d32ae31eb4 b/fuzz/corpus/97afff948335ebb91b9bd49138eef2d32ae31eb4 new file mode 100644 index 0000000..31601b8 Binary files /dev/null and b/fuzz/corpus/97afff948335ebb91b9bd49138eef2d32ae31eb4 differ diff --git a/fuzz/corpus/9820fee9256d72d71261d4b0a1bcaa504039f843 b/fuzz/corpus/9820fee9256d72d71261d4b0a1bcaa504039f843 new file mode 100644 index 0000000..f87d371 Binary files /dev/null and b/fuzz/corpus/9820fee9256d72d71261d4b0a1bcaa504039f843 differ diff --git a/fuzz/corpus/98d2e9a4da619cfb610ed65de45a1e2c9d64b45e b/fuzz/corpus/98d2e9a4da619cfb610ed65de45a1e2c9d64b45e new file mode 100644 index 0000000..e78b407 Binary files /dev/null and b/fuzz/corpus/98d2e9a4da619cfb610ed65de45a1e2c9d64b45e differ diff --git a/fuzz/corpus/99be87ebdf22a6e51c16d33673a1c4e4f6fca7a8 b/fuzz/corpus/99be87ebdf22a6e51c16d33673a1c4e4f6fca7a8 new file mode 100644 index 0000000..a42ae35 Binary files /dev/null and b/fuzz/corpus/99be87ebdf22a6e51c16d33673a1c4e4f6fca7a8 differ diff --git a/fuzz/corpus/9a095039874ed70ddbe11e9a6cfa60ef14641977 b/fuzz/corpus/9a095039874ed70ddbe11e9a6cfa60ef14641977 new file mode 100644 index 0000000..706ea73 Binary files /dev/null and b/fuzz/corpus/9a095039874ed70ddbe11e9a6cfa60ef14641977 differ diff --git a/fuzz/corpus/9a09df763b3f1b462e2bbdb6fdeff1407062f50e b/fuzz/corpus/9a09df763b3f1b462e2bbdb6fdeff1407062f50e new file mode 100644 index 0000000..91fc171 Binary files /dev/null and b/fuzz/corpus/9a09df763b3f1b462e2bbdb6fdeff1407062f50e differ diff --git a/fuzz/corpus/9aacc952d2f79e821ac2ad853ccca8cfdff1873c b/fuzz/corpus/9aacc952d2f79e821ac2ad853ccca8cfdff1873c new file mode 100644 index 0000000..85a4e85 --- /dev/null +++ b/fuzz/corpus/9aacc952d2f79e821ac2ad853ccca8cfdff1873c @@ -0,0 +1,36 @@ +// comment +# comment +/* + comment +*/ + +re.soupl1 = [ , 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = true + bool2 -= false + splat1 = tuple.*.foo.bar[0] + splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { forsplat1 = tuple.*.foo.bar[0] + splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => iEOF + prefix + ${func("foo${ var.bar }")} + suffix + EOF + + nested_resource_1 { + attr1 = 2 + attr2 = 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/9aeff9a298e576e9442e326a72037123d98b2d6e b/fuzz/corpus/9aeff9a298e576e9442e326a72037123d98b2d6e new file mode 100644 index 0000000..02d4364 Binary files /dev/null and b/fuzz/corpus/9aeff9a298e576e9442e326a72037123d98b2d6e differ diff --git a/fuzz/corpus/9b2486a9cb6a6ddad245f6595a0e5cf9e8db0796 b/fuzz/corpus/9b2486a9cb6a6ddad245f6595a0e5cf9e8db0796 new file mode 100644 index 0000000..061b693 Binary files /dev/null and b/fuzz/corpus/9b2486a9cb6a6ddad245f6595a0e5cf9e8db0796 differ diff --git a/fuzz/corpus/9b52eaf925ae16b6e6a978fa5c517538908d6d62 b/fuzz/corpus/9b52eaf925ae16b6e6a978fa5c517538908d6d62 new file mode 100644 index 0000000..ced1250 Binary files /dev/null and b/fuzz/corpus/9b52eaf925ae16b6e6a978fa5c517538908d6d62 differ diff --git a/fuzz/corpus/9b63dd5f1300da6980437757efc2bfc3adb29830 b/fuzz/corpus/9b63dd5f1300da6980437757efc2bfc3adb29830 new file mode 100644 index 0000000..7b66f63 --- /dev/null +++ b/fuzz/corpus/9b63dd5f1300da6980437757efc2bfc3adb29830 @@ -0,0 +1,21 @@ +/. comment +# comment +/* + comment +*/ +resource_1 "strlit1" "stpl4 = "prefix-${func("nested-${var.bal4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for3 = [ for v (n var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 ~= 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tp.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/9f3e20e29eae1fdd2f9627782545f33fafaef81d b/fuzz/corpus/9f3e20e29eae1fdd2f9627782545f33fafaef81d new file mode 100644 index 0000000..39cbbbd Binary files /dev/null and b/fuzz/corpus/9f3e20e29eae1fdd2f9627782545f33fafaef81d differ diff --git a/fuzz/corpus/a018bb104eca03a4f9fb3218c9be903e0a33fd4a b/fuzz/corpus/a018bb104eca03a4f9fb3218c9be903e0a33fd4a new file mode 100644 index 0000000..5d94587 Binary files /dev/null and b/fuzz/corpus/a018bb104eca03a4f9fb3218c9be903e0a33fd4a differ diff --git a/fuzz/corpus/a0253d6764b83bce744715c7d9bd86a4e715ebf2 b/fuzz/corpus/a0253d6764b83bce744715c7d9bd86a4e715ebf2 new file mode 100644 index 0000000..da5bd77 Binary files /dev/null and b/fuzz/corpus/a0253d6764b83bce744715c7d9bd86a4e715ebf2 differ diff --git a/fuzz/corpus/a02bf6f5e2de410c18011c25727f4013368fa659 b/fuzz/corpus/a02bf6f5e2de410c18011c25727f4013368fa659 new file mode 100644 index 0000000..214850b Binary files /dev/null and b/fuzz/corpus/a02bf6f5e2de410c18011c25727f4013368fa659 differ diff --git a/fuzz/corpus/a0d0ab48b9a5b6077fdad06363478b69a3b9852a b/fuzz/corpus/a0d0ab48b9a5b6077fdad06363478b69a3b9852a new file mode 100644 index 0000000..f52f341 Binary files /dev/null and b/fuzz/corpus/a0d0ab48b9a5b6077fdad06363478b69a3b9852a differ diff --git a/fuzz/corpus/a0d9a407ada2f6b037cdb239a96f734a8ac6c5de b/fuzz/corpus/a0d9a407ada2f6b037cdb239a96f734a8ac6c5de new file mode 100644 index 0000000..8ee8fd8 Binary files /dev/null and b/fuzz/corpus/a0d9a407ada2f6b037cdb239a96f734a8ac6c5de differ diff --git a/fuzz/corpus/a0ff7b5045449ff7ebc6fbb2b5c7171b10664cdd b/fuzz/corpus/a0ff7b5045449ff7ebc6fbb2b5c7171b10664cdd new file mode 100644 index 0000000..13994c6 --- /dev/null +++ b/fuzz/corpus/a0ff7b5045449ff7ebc6fbb2b5c7171b10664cdd @@ -0,0 +1,35 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 2, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + ) + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar"):}" + tpl3 = "prefix-${func("nested-${var.bar}")m" + tpl4 = <FFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tUFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix comment +/* + comment +*/ + +resourF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + + tpl4 = <var.bar}")}" + tpl2 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k,0v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func = is_numbe,("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF12FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" b + for3 = { for k, v in varattr2 = 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/b73941a61647eac7feec12eee0275b02cf797fc8 b/fuzz/corpus/b73941a61647eac7feec12eee0275b02cf797fc8 new file mode 100644 index 0000000..0f41e9c Binary files /dev/null and b/fuzz/corpus/b73941a61647eac7feec12eee0275b02cf797fc8 differ diff --git a/fuzz/corpus/b7512119cbc49a970e827fdaa3294c4ea418929b b/fuzz/corpus/b7512119cbc49a970e827fdaa3294c4ea418929b new file mode 100644 index 0000000..14e649c Binary files /dev/null and b/fuzz/corpus/b7512119cbc49a970e827fdaa3294c4ea418929b differ diff --git a/fuzz/corpus/b76fc8057e0e28acad28fdd7f4cb5385f10386b4 b/fuzz/corpus/b76fc8057e0e28acad28fdd7f4cb5385f10386b4 new file mode 100644 index 0000000..fac1106 --- /dev/null +++ b/fuzz/corpus/b76fc8057e0e28acad28fdd7f4cb5385f10386b4 @@ -0,0 +1,37 @@ +// comment +# comment +/* + comment +*/ + +resoUrce_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ , 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = true + bool2 = false + splat1 = tuple.*.foo.bar[0] + splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", " ",a"b"] : v => i... } + for2 = [ fgr k for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" +for tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tp.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/b93b79c272ae827d499f7cd45cb6954bebfab9c2 b/fuzz/corpus/b93b79c272ae827d499f7cd45cb6954bebfab9c2 new file mode 100644 index 0000000..a3a1ff3 --- /dev/null +++ b/fuzz/corpus/b93b79c272ae827d499f7cd45cb6954bebfab9c2 @@ -0,0 +1,34 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 3.4, "foopl1 = "prefix-${var.bar}" + tpl2 = "prefix comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + ) + cond2 -${func("bar"):}" + tpl3 = "prefix-${func("nested-${var.bar}")m" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + f/r3 [ for v in var.list : v if v < 3 ] + func1 .112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/c63a4517a1689f907f82fa1f8f23987a60cd9ff8 b/fuzz/corpus/c63a4517a1689f907f82fa1f8f23987a60cd9ff8 new file mode 100644 index 0000000..65861c8 Binary files /dev/null and b/fuzz/corpus/c63a4517a1689f907f82fa1f8f23987a60cd9ff8 differ diff --git a/fuzz/corpus/c6b3ec399d197c13a96e27c10d6045e224dbef9e b/fuzz/corpus/c6b3ec399d197c13a96e27c10d6045e224dbef9e new file mode 100644 index 0000000..eca9a9a Binary files /dev/null and b/fuzz/corpus/c6b3ec399d197c13a96e27c10d6045e224dbef9e differ diff --git a/fuzz/corpus/c711b59446f9717e095297ba3ab58fafd40119f1 b/fuzz/corpus/c711b59446f9717e095297ba3ab58fafd40119f1 new file mode 100644 index 0000000..cc859ee Binary files /dev/null and b/fuzz/corpus/c711b59446f9717e095297ba3ab58fafd40119f1 differ diff --git a/fuzz/corpus/c8177cefca600aa5efd65d78b9cea279af287f99 b/fuzz/corpus/c8177cefca600aa5efd65d78b9cea279af287f99 new file mode 100644 index 0000000..20db9d2 Binary files /dev/null and b/fuzz/corpus/c8177cefca600aa5efd65d78b9cea279af287f99 differ diff --git a/fuzz/corpus/c8e052a3aecb14d6b5f7076bf8841dcc546c9815 b/fuzz/corpus/c8e052a3aecb14d6b5f7076bf8841dcc546c9815 new file mode 100644 index 0000000..61ed3d7 --- /dev/null +++ b/fuzz/corpus/c8e052a3aecb14d6b5f7076bf8841dcc546c9815 @@ -0,0 +1,48 @@ +// comment +#comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ , 3.4, "foo" ] + 4upl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = obar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF12FF22 \uFFFF \n" + esc2 = "$${}${func...oo${ var.bar }")} + suffix + EOF + + nested_resource_1 { + attr1 = 2 + attr2 = 2.)}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v n avir.list : v ] + for5 = { f;or v in var.list : v >} = + v for6 = [ for v i, 3.4, "foo" ] + tu...pl2 = [] + obj1 = { f.o = "baz" } + null1 = null + bool1 = true + bool2 -= false + splat1 = tuple.*.foo.bar[0] + (splar1 = 2 + attr2 = 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 2.112 + attr3 = 2.112e-12 + attr4 = 2.112e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/d005d9af53cb00510c359d36ecaaf55a5b0f0c57 b/fuzz/corpus/d005d9af53cb00510c359d36ecaaf55a5b0f0c57 new file mode 100644 index 0000000..03ca539 Binary files /dev/null and b/fuzz/corpus/d005d9af53cb00510c359d36ecaaf55a5b0f0c57 differ diff --git a/fuzz/corpus/d0f81957d2499c36952e4140bbf37602acd5b0d9 b/fuzz/corpus/d0f81957d2499c36952e4140bbf37602acd5b0d9 new file mode 100644 index 0000000..3b877b2 Binary files /dev/null and b/fuzz/corpus/d0f81957d2499c36952e4140bbf37602acd5b0d9 differ diff --git a/fuzz/corpus/d24016427c48eba78a0fa201522bb67f26abfa21 b/fuzz/corpus/d24016427c48eba78a0fa201522bb67f26abfa21 new file mode 100644 index 0000000..1df378a --- /dev/null +++ b/fuzz/corpus/d24016427c48eba78a0fa201522bb67f26abfa21 @@ -0,0 +1,27 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ 1, *ar.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for= { foo = "baz" } + null1 = null + bool1 = true + bool2 = false + splat1 = tuple.*.foo.bar[0] + splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", " ",a"b"] : v => i... } + for2 = [ fgr k for v in var.list : v if v < 4 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 pl2 = "prefix-${func("bar")}" + t1" + tupl1 = [ , 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } +e+12 + attr5 = 2.112E+12 + attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/dc28b64ca13149d4de76529e968d5af6324cc9ad b/fuzz/corpus/dc28b64ca13149d4de76529e968d5af6324cc9ad new file mode 100644 index 0000000..c1374c7 --- /dev/null +++ b/fuzz/corpus/dc28b64ca13149d4de76529e968d5af6324cc9ad @@ -0,0 +1,46 @@ +// comment +# comment +/* + comment +*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ , 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = true + bool2 = false + splat1 = tuple.*.foo.bar[0] + splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = <*/ + +resource_1 "strlit1" "strlit2" { + attr1 = "val1" + tupl1 = [ , 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null1 = null + bool1 = true + bool2 = false + splat1 = tuple.*.foo.bar[0] + splat2 = tuple[*].foo.bar[0] + for1 = { for i, v in ["a", "a", "b"] : v => i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ forv in var.list : v if v < 3 ] + func1 = is_numbe,("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i.."${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ fo߉ߖ߉ar.list : v ] + for5 = { for v in var.list : v >} = + v for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc4 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${f attr6 = 2.112E-12 + attr7 = 0x21FF + } +} diff --git a/fuzz/corpus/f677332e12bd760cf603dc48c11fe3577a749f82 b/fuzz/corpus/f677332e12bd760cf603dc48c11fe3577a749f82 new file mode 100644 index 0000000..e517a86 Binary files /dev/null and b/fuzz/corpus/f677332e12bd760cf603dc48c11fe3577a749f82 differ diff --git a/fuzz/corpus/f682210094f5bc5c22340908055d629b609cd1bf b/fuzz/corpus/f682210094f5bc5c22340908055d629b609cd1bf new file mode 100644 index 0000000..6b2250f --- /dev/null +++ b/fuzz/corpus/f682210094f5bc5c22340908055d629b609cd1bf @@ -0,0 +1,31 @@ +// comment +# comment +/* + comment +*/ + +resoupl1 = [ , 3.4, "foo" ] + tupl2 = [] + obj1 = { foo = "baz" } + null = null + bool1 = true + bool2 -= false + sp = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < i... } + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] + func1 = is_number("123") + cond1 = (1 == 2) ? 1 : "foobar" + bin1 = ((1+2)%3)*4 + esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func("bar")}" + tpl1 = "prefix-${func("nested-${var.bar}")}" + tpl4 = < +#include +#include "tree_sitter/api.h" + +extern "C" const TSLanguage *tree_sitter_hcl(); + +static TSQuery *lang_query; + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + const char *str = reinterpret_cast(data); + + TSParser *parser = ts_parser_new(); + + // This can fail if the language version doesn't match the runtime version + bool language_ok = ts_parser_set_language(parser, tree_sitter_hcl()); + assert(language_ok); + + TSTree *tree = ts_parser_parse_string(parser, NULL, str, size); + TSNode root_node = ts_tree_root_node(tree); + + if (lang_query) { + { + TSQueryCursor *cursor = ts_query_cursor_new(); + + ts_query_cursor_exec(cursor, lang_query, root_node); + TSQueryMatch match; + while (ts_query_cursor_next_match(cursor, &match)) { + } + + ts_query_cursor_delete(cursor); + } + + { + TSQueryCursor *cursor = ts_query_cursor_new(); + + ts_query_cursor_exec(cursor, lang_query, root_node); + TSQueryMatch match; + uint32_t capture_index; + while (ts_query_cursor_next_capture(cursor, &match, &capture_index)) { + } + + ts_query_cursor_delete(cursor); + } + } + + ts_tree_delete(tree); + ts_parser_delete(parser); + + return 0; +} diff --git a/fuzz/hcl.dict b/fuzz/hcl.dict new file mode 100644 index 0000000..a3e959b --- /dev/null +++ b/fuzz/hcl.dict @@ -0,0 +1,42 @@ +"\x21" +"\x21\x3d" +"\x23" +"\x25" +"\x26\x26" +"\x28" +"\x29" +"\x2a" +"\x2b" +"\x2c" +"\x2d" +"\x2e" +"\x2e\x2a" +"\x2e\x2e\x2e" +"\x2f" +"\x2f\x2a" +"\x2f\x2f" +"\x3a" +"\x3c" +"\x3c\x3c" +"\x3c\x3c\x2d" +"\x3c\x3d" +"\x3d" +"\x3d\x3d" +"\x3d\x3e" +"\x3e" +"\x3e\x3d" +"\x3f" +"\x5b" +"\x5b\x2a\x5d" +"\x5d" +"\x5f" +"\x66\x61\x6c\x73\x65" +"\x66\x6f\x72" +"\x69\x66" +"\x69\x6e" +"\x6e\x75\x6c\x6c" +"\x74\x72\x75\x65" +"\x7b" +"\x7c\x7c" +"\x7d" +"\x7e" diff --git a/fuzz/tree-sitter b/fuzz/tree-sitter new file mode 160000 index 0000000..23fdbf0 --- /dev/null +++ b/fuzz/tree-sitter @@ -0,0 +1 @@ +Subproject commit 23fdbf0e7204e03c59011b3df35632dba931da23 diff --git a/src/scanner.cc b/src/scanner.cc index 25f2c37..9052d0e 100644 --- a/src/scanner.cc +++ b/src/scanner.cc @@ -95,7 +95,8 @@ public: } // manage quoted context if (valid_symbols[QUOTED_TEMPLATE_START] && !in_quoted_context() && lexer->lookahead == '"') { - context_stack.push_back({ QUOTED_TEMPLATE }); + Context ctx = { QUOTED_TEMPLATE }; + context_stack.push_back(ctx); return accept_and_advance(lexer, QUOTED_TEMPLATE_START); } if (valid_symbols[QUOTED_TEMPLATE_END] && in_quoted_context() && lexer->lookahead == '"') { @@ -112,7 +113,8 @@ public: ) { advance(lexer); if (lexer->lookahead == '{') { - context_stack.push_back({ TEMPLATE_INTERPOLATION }); + Context ctx = { TEMPLATE_INTERPOLATION }; + context_stack.push_back(ctx); return accept_and_advance(lexer, TEMPLATE_INTERPOLATION_START); } // try to scan escape sequence @@ -138,7 +140,8 @@ public: identifier.push_back(lexer->lookahead); advance(lexer); } - context_stack.push_back({ HEREDOC_TEMPLATE, identifier }); + Context ctx = { HEREDOC_TEMPLATE, identifier }; + context_stack.push_back(ctx); return accept_inplace(lexer, HEREDOC_IDENTIFIER); } if (valid_symbols[HEREDOC_IDENTIFIER] && in_heredoc_context() && has_leading_whitespace_with_newline) {