// unaffected, and if the taint has a non-empty predicate
// it is out of context so it should go through, too
if( t.getSESE() == null ||
- seseSet.contains(t)) {
+ !seseSet.contains(t)) {
out.taints.add( t );
}
}
for (Edge edge:dstedges) {
TaintSet taintSet = edge.getTaints();
Alloc affectedAlloc = edge.getDst().getAllocSite();
- Effect effect = new Effect(affectedAlloc, Effect.write, fld);
+ Effect effect = new Effect(affectedAlloc, Effect.write, fld);
if (taintSet!=null)
for (Taint taint:taintSet.getTaints()) {
add(taint, effect, currentProgramPoint );
}
public void taintModify(Set<FlatSESEEnterNode> seseSet) {
- if (taints!=null)
+ if (taints!=null) {
taints=Canonical.removeSESETaints(taints, seseSet);
+ }
}
public TaintSet getTaints() {
}
//DEBUG
- if (true) {
+ if (false) {
int debugindex=0;
for(Map.Entry<BBlock, Graph> e:bbgraphMap.entrySet()) {
Graph g=e.getValue();
boolean addedge=false;
Edge edgetoadd=null;
if (e.statuspredicate==Edge.NEW) {
- edgetoadd=e;
+ edgetoadd=e.copy();//we need our own copy to modify below
} else {
Edge origEdgeKey=e.makeStatus(allocFactory);
if (oldgraph.nodeMap.containsKey(origEdgeKey.src)&&
graph.oldNodes.put(node, ispresent);
}
}
-
Delta processSetFieldElementNode(FlatNode node, Delta delta, Graph graph) {
TempDescriptor src;
FieldDescriptor fd;