|
namespace TaintChecking
{
public class Tainted<T>
{
private bool _tainted;
private T _target;
public delegate bool IsCleanUntaintTreatmentMethod(T taintedObject);
public Tainted(T target)
{
_tainted = true;
_target = target;
}
public bool IsTainted
{
get { return _tainted; }
}
public bool IsClean
{
get { return !this.IsTainted; }
}
public T Target
{
get
{
if(this.IsTainted)
{
throw new TaintException();
}
return _target;
}
}
public void Taint()
{
_tainted = true;
}
public void Untaint(IsCleanUntaintTreatmentMethod treatmentMethod)
{
_tainted = !treatmentMethod(_target);
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Paul Lessard has received a MSc in computer science and a BASc in computer science and software engineering. He is currently employed as a software developer and junior architect.