Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR is a part of #188 and constitutes a deep investigation into the
ssa.Slice
instruction.Currently, the way we handle
Slice
instructions is that we visit every referrer and operand.This can create false positives:
One could argue that in the above case, the incorrect behavior is actually that we are tainting integers. I encourage you to discuss this issue here: #191. In any case, within the context of a
Slice
instruction, it is incorrect to visit theseOperands
.I originally thought that the only thing that should legitimately be visited is the
Referrers
. However, consider this case:In this case, the backing array of
slice
is written to when doingslice[0] = core.Source{Data: "secret"}
, so to properly model the taint propagation, we need to visit theSlice
'sX
field (one of itsOperands
).