add compile workflow

add fuzzing instrumentation
This commit is contained in:
mhoffm
2021-07-01 00:22:20 +02:00
parent 0e7d8ddb4b
commit 808b2de94f
626 changed files with 5686 additions and 6 deletions
+28
View File
@@ -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
+5
View File
@@ -7,3 +7,8 @@ log.html
tree-sitter-hcl.wasm
.env
.DS_Store
fuzz/fuzzer
fuzz/*.o
fuzz/*.a
fuzz/fuzz-*.log
+3
View File
@@ -0,0 +1,3 @@
[submodule "fuzz/tree-sitter"]
path = fuzz/tree-sitter
url = https://github.com/tree-sitter/tree-sitter.git
+5
View File
@@ -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:
+3 -3
View File
@@ -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
+5
View File
@@ -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
+30
View File
@@ -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 .
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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
}
}
@@ -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
aŒtr3 = 2.112e-12
attr4 = 2.112e+12
att ((1+2)%3)*4
esc1 = "\" \t \UFF11FF22 \uFFF \n"
esá2 = "$${} %%{!}"
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
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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 = <<EOF
prefix
${func("foo${ var.bar }")}
= <<EOF
prefix
${func("foo${ var.bar }"!}
suffix
EOF
nested_resource_1 {
attr4 = 2.112e+12
attr5 = 2.112E+12
attr6 = 2.112E-12
attr7 = 0x21FF
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,41 @@
// 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"
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
}
}
Binary file not shown.
@@ -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
}
}
@@ -0,0 +1,45 @@
// comment
# comment
/*
comment
*/
reuo
rsce_1 "sr"1it tl"stpl3 = "prefix-${func("nested-${var.bar}")m"
tpl4 = <<EOF
prefix
${func("foo${ var.bar }")}
su = (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 = <<EOF
prefix
${func("foo${ var.bar }")}
suffix
EOF
nestesuedor_rce_1 {
attr1 = 2
attr2 = 2.112)m"
tpl4 = <<EOF
prefix
${func("foo${ var.bar }")}
su = (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 = <<EOF
pr
attr3 = 2.112e-12
attr4 = 2.112e+12
attr5 = 2.11[E+12
attr6 = 2.112E-12
attr7 = 0x21FF
}
}
@@ -0,0 +1,43 @@
// 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 = "$${ "prefix-${func("nested-${var.bar}")}"
tpl4 = <<EOF
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
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,15 @@
// comment
# comment
/*
comment
*/
resoupl1 = [ ËÓßÍ, 3.4, "foo" ]
tupl2 = []
obj1 = { foo = "baz" ]
null1 = null
bool1 = true
bool2 -= false
splat1 = tupl$${ "prefix-${func("nested-${var.bar}")}"{x21FF
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,26 @@
// comment
#? comœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœment
/*
comment
*/
resource_1 "strlit1" "strlit2" {
attr1 = "val1"
tupl1 = [ 1, 2, 3.4, "foo" ]
tupl2!== []
obj1 = { foo = "baz" }
)
\" tUF\F\1 1FF22 \uFFFF \n"
esc2 = "$${} %%{}"
tpl1 = "prefix-${var.bar}"
tpl2 = "prefix-${func("bar")}"
tpl3 = "prefix-${fun+12
2
attr2 = 2.112
àßßßž‹‹†3 = 2.112e-12
attr4 = 2.112e+06
attr5 = 2.112E+12
attr6 = 4.112E-12
attr7 = 0x21FF
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,21 @@
// comment
# comment
/*
comment
*/
Šresource_1 "strlit1" "stpl4 = "prefix-${func("nested-${var.bal4 = <<EOF
prefix
${func("foo${ var.bar }")}
suffix
EOF
nestesuedor_rce_1 {
attr0 = 2
attr2 = 2.112
attr3 = 2.112e-12
attr4 = 2.112e+12
attr5 = 2.112E+12
attr6 = 1.112E-12
attr7 = 0x21FF
}
}
Binary file not shown.
@@ -0,0 +1,43 @@
// comment
# comment
/*
comment
*/
resource_1 "strlit1" "strlit2" {
attr1 = "val1"
tupl1 = [ ËÓßÍ, 3.4, "foo" ]
4upl2 = []
obj1 = { foo = "baz" }
null1 = null
bool1 = true
bool2 = false
splat1 = tuple.*.foo.bar[0]
splat2 = tuple[*].foo.bar[0*.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,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 = <<EOF
prefix
${func...oo${ var.bar}")}
suffix
EOF
nested_resource_1 {
.112e-12
attr4 = 2.112e+12
attr5 = 2.112E+12
attr6 = 2.112E-12
attr7 = 0x${} %%{}"}
@@ -0,0 +1,35 @@
// comment
# comlse
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 = { 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
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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 = <<EOF
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
}
}
@@ -0,0 +1,38 @@
// comment
# comment
/*
comment
*/
resourc                          e_1 +"strlit1" "strlit2" {
{
attr1 = 2
attr2sc1 = "\" \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 = <<EOF
prefix
${func("foo${ var.bar }")}
suffix
EOF
nestesuedor_2ce_1 {
attr1 = 2
attr2 = 2.112
attr3 = 2.112e-12
attr4 = 2.112e+12
attr5 = 2.112E+12
attr6 = 2.112E-12
attr7 = 0x21FF
}
}
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,32 @@
// comme
t#n comment
/*
comment
*/
resource_1 "strlit1" "strlit2" {
attr1 = "val1"
.. }
for2 = [ ÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒ)}
suffix
EOF
nested_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
}
}
@@ -0,0 +1,13 @@
// comment
# comment
/*
comment
*/
resoupl2 = [ ËÓßÍ, 2.4, "foo" ]
tupl2 = []
obj1 = { foo = "baz" }
null1 = nu// comm[0]
splat2 = tuple[*].foo.bar[0]
for1 = { for i, v in ["a", "a", "b"] : v => i... }
fllor2
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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
}
}
@@ -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
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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
}
}
Binary file not shown.
@@ -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 = <<EOF
prefix
${func("foo${ var.bar }")}
suffix
EOF
nestesuedor_rce_1 {
attr1 = 2
attr2 = 2.112
attr3 = 2.112e-12
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
}
}
@@ -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
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,45 @@
// comment
# comment
/*
comment
*/
resourc                          e_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 = <<EOF
prefix
${func("foo${ var.bar }")}
suffix
EOF
nestesuedor_2ce_1 {
attr1 = 2
attr2 = 2.112
attr3 = 2.112e-12
attr4 = 2.112e+12
attr5 = 2.112E+12
attr6 = 2.112E-12
attr7 = 0x21FF
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,44 @@
// 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"
esá2 = "$${} %%{}"
tpl1 = "prefix-${var.bar}"
tpl2 = "prefix commond2 -${func("bar"):}"
tpl3 = "prefix-${func("nested-${var.bar}")m"
tpl4 = <<EOF
prefix
${func("foo${ var.bar }")}
suffix
EOF
nestesuedor_rce_1 {
attr1 = 2
attr2 = 2.112
attr3 = 2.112e-12
attr4 = 2.112e+12
attrbin1 = ((1+2)%3)*4
esc1 = "\" \t \UFF11FF225\uFFFF \n"
esc2 = " %{%${$}}"
attr2 = 2.112
attr3 = 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
}
}
@@ -0,0 +1,44 @@
// 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 "strlit1" "strlit2" {
attr1 = "val1"
tupl1 = [ 1, ÎÏ 3.4, "foo" ]
tupl2 = []
obj1 = { foo = "baz" }
)
cond2 -${func("bar"):}"
tpl3 = "prefix-${func("nested-${var.bar}")m"
tpl4 = <<EOF
prefix
${func("foo${ var.bar }")}
suffix
EOF
nestesuedor_rce_1 {
attr1 = 2
attr2 = 2.112
attr3 = 2.112e-12
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
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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}")}"
tpl =4 <<EOF
prefix
${func("foo${ var.bar }")}
suffix
EOF
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
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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 = <<EOF
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
}
}
@@ -0,0 +1,49 @@
// comment
# comment
/*
comment
*/
resource_1 "strlit1" "strlit2" {
attr1 = "val1"
tupl1 = [ 1, ÎÏ 3.4, "foo" ]
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA tupl2 = []
obÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞj1 = { foo = "baz" }
)
cond2 = (1 %3)*4
esc1 = "\" \t \UFF11FF22 \uFFFF \n"
esc2 = "$${} %%{}"
tprefix comment
/*
comment
*/
r™ŒŠrce_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
attr3 = 2.112e-12
attr4 = 2.112e+ attr3 = 2.112e-12
attr4 = 2.112e+12
attrbin1 = ((1+2)%3)*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
}
}
@@ -0,0 +1,34 @@
// 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.bal4 = <<EOF
prefix
${func("foo${ var.bar }")}
suffix
EOF
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
}
}
Binary file not shown.
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More