picatz / taint

🚰 Static taint analysis for Go programs.
https://picatz.github.io/#blog/taint
Mozilla Public License 2.0
57 stars 1 forks source link

Use standard `golang.org/x/tools/go/callgraph` package #24

Closed picatz closed 10 months ago

picatz commented 10 months ago

This PR deprecates (by outright removing) the non-standard github.com/picatz/taint/callgraph package in favor of using the standard golang.org/x/tools/go/callgraph package.

To keep the same functionality (like graph construction and path searching) provided by the previous callgraph package, a github.com/picatz/taint/callgraphutils package has been created which operates on golang.org/x/tools/go/callgraph.Graph types.

Importantly, this allows for seamless "apples to apples" comparisons with other call graph construction algorithms (CHA, RTA, VTA, Static, Pointer), or even those provided by projects like govulncheck.

Today, I believe the graph constructed by github.com/picatz/taint/callgraphutils.NewGraph provides the best foundation for taint analysis. I look forward to progress in this space in the near future to handle complex edges (#23) not easily handled by today's algorithm(s).