public static Taint merge(Taint a, Taint b) { Taint result = new Taint(State.merge(a.getState(), b.getState())); if (a.hasValidLocalVariableIndex() && b.hasValidLocalVariableIndex() && a.getLocalVariableIndex() == b.getLocalVariableIndex()) { result.setLocalVariableIndex(a.getLocalVariableIndex()); } return result; }
public boolean isValidTaintedString (String s, String taintS) { if (!s.equals(taintS)) return false; Taint t = s.@internal@taint(); if (t == null) t = new Taint(false, s.length()); Taint tt = taintS.@internal@taint(); if (tt == null) tt = new Taint(false, taintS.length()); for (int i = 0; i < taintS.length(); i++) { if ((p == UNTAINTED && t.get(i)) || (p == FULLY_TAINTED && !t.get(i))) return false; if (!tt.get(i)) return false; } return true; }