gerazo marked an inline comment as done.
gerazo added a comment.

Hmm... I am thinking on this issue for a week now...

I've played with the idea of implementing cleansing rules in 
GenericTaintChecker. It would be elegant but unfortunately, I have to think 
they are not general. Cleansing of a string (because it has no terminating null 
at the end) is very different from integral type cleansing. A signed value has 
to be lower bound checked as well, an unsigned only gets upper bound treatment. 
It also turns out that the type itself also can't give enough information about 
the needed cleansing rule. A number used for array indexing can be properly 
bound checked on the region extents while a simple number can only be checked 
in a way that any upper bound checking was done at all on it... 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.

About the ArrayBoundCheckerV2: I agree that no redundant checks should be done 
system-wide. I would also extend ArrayBoundCheckV2 or put array checking into a 
separate checker. Currently that checker and the one implemented here do not 
give the same results. ArrayBoundCheckerV2 knows more about the array but is 
not willing to give a warning without knowing region information for the array. 
The easiest way would be to use one checker's code from the other and find out 
if the other is active and would already give a warning anyway... but I 
understand that it is against current architectural policies.


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