zaks.anna added a comment.

> All this leads to the need of several types of taintednesses (string 
> taintedness, array taintedness, general bound check taintedness) because the 
> cleansing can only take down one type of taintedness at a time. That would be 
> the only way for a checker to be able to access that the taintedness type 
> specific to the checker is still there or was already cleansed by the central 
> logic. For me it shows that cleansing rules belong to specific checkers and 
> cannot be efficiently generalized even in case of a single int type.

I do not see why we cannot have type-dependent rules in the general taint 
checker. Checker-specific taint rules could be added to the checkers on top of 
the generic rules. Though, I do not have an example of this off the top of my 
head. Specifically, I do not think we can issue a warning every time we are not 
100% sure that an index into an array is not in bounds with respect to the 
region extents. It would trigger for cases when the code compares against a 
statically unknown value and lead to too many false positives.

Stepping back a bit, what do you consider "dirty" vs "clean"? It seems that you 
are looking for prove that the values are known to be within the bounds of min 
and max int values. What happens if there is a comparison to an unknown 
symbolic value? Should that be considered as clean or tainted? Are there test 
cases for this?


https://reviews.llvm.org/D27753



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to