public override void VisitBinary(BinaryExPoint p) { List <Value> argumentValues = new List <Value>(); argumentValues.AddRange(p.LeftOperand.Value.ReadMemory(Output).PossibleValues); argumentValues.AddRange(p.RightOperand.Value.ReadMemory(Output).PossibleValues); p.SetValueContent(new MemoryEntry(Output.CreateInfo(mergeTaint(argumentValues)))); }
/// <summary> /// Visits a binary expression point and propagates the taint from both the operands. /// </summary> /// <param name="p">point to visit</param> public override void VisitBinary(BinaryExPoint p) { _currentPoint = p; List <ValueInfo> values = new List <ValueInfo>(); bool nullValue = false; nullValue = addOperandValues(values, p.LeftOperand, nullValue); nullValue = addOperandValues(values, p.RightOperand, nullValue); TaintInfo outputTaint = mergeTaint(values, nullValue); outputTaint.setSanitized(new List <FlagType>() { FlagType.FilePathDirty, FlagType.HTMLDirty, FlagType.SQLDirty }); p.SetValueContent(new MemoryEntry(Output.CreateInfo(outputTaint))); }