├── .gitignore ├── LICENSE ├── Readme.md ├── debug.sh ├── images ├── gotcha.png ├── gotcha.svg └── gotcha_400x303.png ├── lattice ├── lattice.go └── taint │ ├── flowFunc.go │ ├── flowMultipleValues_test.go │ ├── flow_helper.go │ ├── flow_test.go │ ├── parser.go │ ├── parser_test.go │ ├── ssaValMock.go │ ├── taintLattice.go │ ├── taintLatticePointer.go │ ├── taintLattice_test.go │ └── taintValue_test.go ├── rmTxtStatFiles.sh ├── sourcesAndSinks.txt ├── sqlInjection.txt ├── ssabuilder ├── build.go ├── chanSend.go └── ssaHelper.go ├── start.go ├── tests.md ├── tests.sh ├── tests ├── .LinkedList_test.go ├── .gorc ├── basics_test.go ├── bench_test.go ├── channels_test.go ├── cmd_test.go ├── cov_tests.out ├── exampleCode │ ├── aliasingThroughFields.go │ ├── aliasingThroughFields2.go │ ├── chanClosureChangeValue.go │ ├── chanClosureChangeValueBeforeClosure.go │ ├── chanClosureNestedChangeValue.go │ ├── chanPaper.go │ ├── chanPaper0.go │ ├── chanPaper1.go │ ├── chanPaper2.go │ ├── chanPaper3.go │ ├── contextsenPtr.go │ ├── dummy.txt │ ├── dummy2.txt │ ├── exampleThesis.go │ ├── h │ │ ├── linkedList.go │ │ └── sinkSource.go │ ├── hello.go │ ├── hello2.go │ ├── idom.go │ ├── multipleChan.go │ ├── newValueContext.go │ ├── pointerChan.go │ ├── pointerToFunc.go │ ├── readFile.go │ ├── simpleLinkedList.go │ ├── simpleLinkedList0.go │ ├── simpleLinkedListOnlyTaint.go │ ├── simpleLinkedListTestAllElements.go │ ├── sinkSourceSimple.go │ ├── sinkSourceV2.go │ ├── sinkSourceV2ChangeOrder.go │ ├── sinkSourceV2NewVariable.go │ ├── sinkSourceV3.go │ ├── structTest.go │ ├── structTestV2.go │ ├── structTestV3Ref.go │ ├── structTestV3RefSimple.go │ ├── structTestV3Val.go │ └── structTestV4.go ├── helper.go ├── mem0.out ├── mem1.out ├── numberReportedFlows_test.go ├── pointers_test.go ├── report.xml ├── sourcesAndSinksTest.txt ├── test_coverage_test.xml └── tests ├── transferFunction └── semanticer.go ├── vendor └── vendor.json └── worklist ├── contextCallSite.go ├── conveyThesis_test.go ├── convey_test.go ├── initContext_test.go ├── transition.go ├── valueContext.go ├── valueContext_test.go ├── wlHelper.go ├── wlHelper_test.go ├── wlMap.go ├── wlMap_test_old.go ├── wlinit.go ├── worklist.go └── worklist_test.go /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/LICENSE -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/Readme.md -------------------------------------------------------------------------------- /debug.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/debug.sh -------------------------------------------------------------------------------- /images/gotcha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/images/gotcha.png -------------------------------------------------------------------------------- /images/gotcha.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/images/gotcha.svg -------------------------------------------------------------------------------- /images/gotcha_400x303.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/images/gotcha_400x303.png -------------------------------------------------------------------------------- /lattice/lattice.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/lattice/lattice.go -------------------------------------------------------------------------------- /lattice/taint/flowFunc.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/lattice/taint/flowFunc.go -------------------------------------------------------------------------------- /lattice/taint/flowMultipleValues_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/lattice/taint/flowMultipleValues_test.go -------------------------------------------------------------------------------- /lattice/taint/flow_helper.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/lattice/taint/flow_helper.go -------------------------------------------------------------------------------- /lattice/taint/flow_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/lattice/taint/flow_test.go -------------------------------------------------------------------------------- /lattice/taint/parser.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/lattice/taint/parser.go -------------------------------------------------------------------------------- /lattice/taint/parser_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/lattice/taint/parser_test.go -------------------------------------------------------------------------------- /lattice/taint/ssaValMock.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/lattice/taint/ssaValMock.go -------------------------------------------------------------------------------- /lattice/taint/taintLattice.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/lattice/taint/taintLattice.go -------------------------------------------------------------------------------- /lattice/taint/taintLatticePointer.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/lattice/taint/taintLatticePointer.go -------------------------------------------------------------------------------- /lattice/taint/taintLattice_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/lattice/taint/taintLattice_test.go -------------------------------------------------------------------------------- /lattice/taint/taintValue_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/lattice/taint/taintValue_test.go -------------------------------------------------------------------------------- /rmTxtStatFiles.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/rmTxtStatFiles.sh -------------------------------------------------------------------------------- /sourcesAndSinks.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/sourcesAndSinks.txt -------------------------------------------------------------------------------- /sqlInjection.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/sqlInjection.txt -------------------------------------------------------------------------------- /ssabuilder/build.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/ssabuilder/build.go -------------------------------------------------------------------------------- /ssabuilder/chanSend.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/ssabuilder/chanSend.go -------------------------------------------------------------------------------- /ssabuilder/ssaHelper.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/ssabuilder/ssaHelper.go -------------------------------------------------------------------------------- /start.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/start.go -------------------------------------------------------------------------------- /tests.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests.md -------------------------------------------------------------------------------- /tests.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests.sh -------------------------------------------------------------------------------- /tests/.LinkedList_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/.LinkedList_test.go -------------------------------------------------------------------------------- /tests/.gorc: -------------------------------------------------------------------------------- 1 | {"exclusions":["tests"]} -------------------------------------------------------------------------------- /tests/basics_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/basics_test.go -------------------------------------------------------------------------------- /tests/bench_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/bench_test.go -------------------------------------------------------------------------------- /tests/channels_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/channels_test.go -------------------------------------------------------------------------------- /tests/cmd_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/cmd_test.go -------------------------------------------------------------------------------- /tests/cov_tests.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/cov_tests.out -------------------------------------------------------------------------------- /tests/exampleCode/aliasingThroughFields.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/aliasingThroughFields.go -------------------------------------------------------------------------------- /tests/exampleCode/aliasingThroughFields2.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/aliasingThroughFields2.go -------------------------------------------------------------------------------- /tests/exampleCode/chanClosureChangeValue.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/chanClosureChangeValue.go -------------------------------------------------------------------------------- /tests/exampleCode/chanClosureChangeValueBeforeClosure.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/chanClosureChangeValueBeforeClosure.go -------------------------------------------------------------------------------- /tests/exampleCode/chanClosureNestedChangeValue.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/chanClosureNestedChangeValue.go -------------------------------------------------------------------------------- /tests/exampleCode/chanPaper.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/chanPaper.go -------------------------------------------------------------------------------- /tests/exampleCode/chanPaper0.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/chanPaper0.go -------------------------------------------------------------------------------- /tests/exampleCode/chanPaper1.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/chanPaper1.go -------------------------------------------------------------------------------- /tests/exampleCode/chanPaper2.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/chanPaper2.go -------------------------------------------------------------------------------- /tests/exampleCode/chanPaper3.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/chanPaper3.go -------------------------------------------------------------------------------- /tests/exampleCode/contextsenPtr.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/contextsenPtr.go -------------------------------------------------------------------------------- /tests/exampleCode/dummy.txt: -------------------------------------------------------------------------------- 1 | 342615\ -------------------------------------------------------------------------------- /tests/exampleCode/dummy2.txt: -------------------------------------------------------------------------------- 1 | 123454321 2 | -------------------------------------------------------------------------------- /tests/exampleCode/exampleThesis.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/exampleThesis.go -------------------------------------------------------------------------------- /tests/exampleCode/h/linkedList.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/h/linkedList.go -------------------------------------------------------------------------------- /tests/exampleCode/h/sinkSource.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/h/sinkSource.go -------------------------------------------------------------------------------- /tests/exampleCode/hello.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/hello.go -------------------------------------------------------------------------------- /tests/exampleCode/hello2.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/hello2.go -------------------------------------------------------------------------------- /tests/exampleCode/idom.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/idom.go -------------------------------------------------------------------------------- /tests/exampleCode/multipleChan.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/multipleChan.go -------------------------------------------------------------------------------- /tests/exampleCode/newValueContext.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/newValueContext.go -------------------------------------------------------------------------------- /tests/exampleCode/pointerChan.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/pointerChan.go -------------------------------------------------------------------------------- /tests/exampleCode/pointerToFunc.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/pointerToFunc.go -------------------------------------------------------------------------------- /tests/exampleCode/readFile.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/readFile.go -------------------------------------------------------------------------------- /tests/exampleCode/simpleLinkedList.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/simpleLinkedList.go -------------------------------------------------------------------------------- /tests/exampleCode/simpleLinkedList0.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/simpleLinkedList0.go -------------------------------------------------------------------------------- /tests/exampleCode/simpleLinkedListOnlyTaint.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/simpleLinkedListOnlyTaint.go -------------------------------------------------------------------------------- /tests/exampleCode/simpleLinkedListTestAllElements.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/simpleLinkedListTestAllElements.go -------------------------------------------------------------------------------- /tests/exampleCode/sinkSourceSimple.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/sinkSourceSimple.go -------------------------------------------------------------------------------- /tests/exampleCode/sinkSourceV2.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/sinkSourceV2.go -------------------------------------------------------------------------------- /tests/exampleCode/sinkSourceV2ChangeOrder.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/sinkSourceV2ChangeOrder.go -------------------------------------------------------------------------------- /tests/exampleCode/sinkSourceV2NewVariable.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/sinkSourceV2NewVariable.go -------------------------------------------------------------------------------- /tests/exampleCode/sinkSourceV3.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/sinkSourceV3.go -------------------------------------------------------------------------------- /tests/exampleCode/structTest.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/structTest.go -------------------------------------------------------------------------------- /tests/exampleCode/structTestV2.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/structTestV2.go -------------------------------------------------------------------------------- /tests/exampleCode/structTestV3Ref.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/structTestV3Ref.go -------------------------------------------------------------------------------- /tests/exampleCode/structTestV3RefSimple.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/structTestV3RefSimple.go -------------------------------------------------------------------------------- /tests/exampleCode/structTestV3Val.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/structTestV3Val.go -------------------------------------------------------------------------------- /tests/exampleCode/structTestV4.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/exampleCode/structTestV4.go -------------------------------------------------------------------------------- /tests/helper.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/helper.go -------------------------------------------------------------------------------- /tests/mem0.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/mem0.out -------------------------------------------------------------------------------- /tests/mem1.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/mem1.out -------------------------------------------------------------------------------- /tests/numberReportedFlows_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/numberReportedFlows_test.go -------------------------------------------------------------------------------- /tests/pointers_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/pointers_test.go -------------------------------------------------------------------------------- /tests/report.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/report.xml -------------------------------------------------------------------------------- /tests/sourcesAndSinksTest.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/sourcesAndSinksTest.txt -------------------------------------------------------------------------------- /tests/test_coverage_test.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/test_coverage_test.xml -------------------------------------------------------------------------------- /tests/tests: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/tests/tests -------------------------------------------------------------------------------- /transferFunction/semanticer.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/transferFunction/semanticer.go -------------------------------------------------------------------------------- /vendor/vendor.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/vendor/vendor.json -------------------------------------------------------------------------------- /worklist/contextCallSite.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/worklist/contextCallSite.go -------------------------------------------------------------------------------- /worklist/conveyThesis_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/worklist/conveyThesis_test.go -------------------------------------------------------------------------------- /worklist/convey_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/worklist/convey_test.go -------------------------------------------------------------------------------- /worklist/initContext_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/worklist/initContext_test.go -------------------------------------------------------------------------------- /worklist/transition.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/worklist/transition.go -------------------------------------------------------------------------------- /worklist/valueContext.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/worklist/valueContext.go -------------------------------------------------------------------------------- /worklist/valueContext_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/worklist/valueContext_test.go -------------------------------------------------------------------------------- /worklist/wlHelper.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/worklist/wlHelper.go -------------------------------------------------------------------------------- /worklist/wlHelper_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/worklist/wlHelper_test.go -------------------------------------------------------------------------------- /worklist/wlMap.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/worklist/wlMap.go -------------------------------------------------------------------------------- /worklist/wlMap_test_old.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/worklist/wlMap_test_old.go -------------------------------------------------------------------------------- /worklist/wlinit.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/worklist/wlinit.go -------------------------------------------------------------------------------- /worklist/worklist.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/worklist/worklist.go -------------------------------------------------------------------------------- /worklist/worklist_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akwick/gotcha/HEAD/worklist/worklist_test.go --------------------------------------------------------------------------------