Esempio n. 1
0
        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))));
        }
Esempio n. 2
0
        /// <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)));
        }