Class NonInterference

  • All Implemented Interfaces:
    it.unive.lisa.analysis.Lattice<NonInterference>, it.unive.lisa.analysis.nonrelational.inference.InferredValue<NonInterference>, it.unive.lisa.analysis.nonrelational.NonRelationalElement<NonInterference,​it.unive.lisa.symbolic.value.ValueExpression,​it.unive.lisa.analysis.nonrelational.inference.InferenceSystem<NonInterference>>, it.unive.lisa.analysis.SemanticEvaluator

    public class NonInterference
    extends it.unive.lisa.analysis.nonrelational.inference.BaseInferredValue<NonInterference>
    The type-system based implementation of the non interference analysis.
    See Also:
    Non-interference
    • Nested Class Summary

      • Nested classes/interfaces inherited from interface it.unive.lisa.analysis.nonrelational.inference.InferredValue

        it.unive.lisa.analysis.nonrelational.inference.InferredValue.InferredPair<T extends it.unive.lisa.analysis.nonrelational.inference.InferredValue<T>>, it.unive.lisa.analysis.nonrelational.inference.InferredValue.InferredPairRepresentation
    • Field Summary

      • Fields inherited from interface it.unive.lisa.analysis.Lattice

        BOTTOM_REPR, BOTTOM_STRING, TOP_REPR, TOP_STRING
    • Constructor Summary

      Constructors 
      Constructor Description
      NonInterference()
      Builds a new instance of non interference, referring to the top element of the lattice.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      it.unive.lisa.analysis.nonrelational.inference.InferenceSystem<NonInterference> assume​(it.unive.lisa.analysis.nonrelational.inference.InferenceSystem<NonInterference> environment, it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp)  
      NonInterference bottom()  
      boolean canProcess​(it.unive.lisa.symbolic.SymbolicExpression expression)  
      boolean equals​(java.lang.Object obj)  
      protected it.unive.lisa.analysis.nonrelational.inference.InferredValue.InferredPair<NonInterference> evalBinaryExpression​(it.unive.lisa.symbolic.value.BinaryOperator operator, NonInterference left, NonInterference right, NonInterference state, it.unive.lisa.program.cfg.ProgramPoint pp)  
      protected it.unive.lisa.analysis.nonrelational.inference.InferredValue.InferredPair<NonInterference> evalIdentifier​(it.unive.lisa.symbolic.value.Identifier id, it.unive.lisa.analysis.nonrelational.inference.InferenceSystem<NonInterference> environment, it.unive.lisa.program.cfg.ProgramPoint pp)  
      protected it.unive.lisa.analysis.nonrelational.inference.InferredValue.InferredPair<NonInterference> evalNonNullConstant​(it.unive.lisa.symbolic.value.Constant constant, NonInterference state, it.unive.lisa.program.cfg.ProgramPoint pp)  
      protected it.unive.lisa.analysis.nonrelational.inference.InferredValue.InferredPair<NonInterference> evalNullConstant​(NonInterference state, it.unive.lisa.program.cfg.ProgramPoint pp)  
      protected it.unive.lisa.analysis.nonrelational.inference.InferredValue.InferredPair<NonInterference> evalTernaryExpression​(it.unive.lisa.symbolic.value.TernaryOperator operator, NonInterference left, NonInterference middle, NonInterference right, NonInterference state, it.unive.lisa.program.cfg.ProgramPoint pp)  
      protected it.unive.lisa.analysis.nonrelational.inference.InferredValue.InferredPair<NonInterference> evalUnaryExpression​(it.unive.lisa.symbolic.value.UnaryOperator operator, NonInterference arg, NonInterference state, it.unive.lisa.program.cfg.ProgramPoint pp)  
      int hashCode()  
      boolean isBottom()  
      boolean isHighConfidentiality()
      Yields true if and only if this instance represents a high value for the confidentiality non interference analysis.
      boolean isHighIntegrity()
      Yields true if and only if this instance represents a high value for the integrity non interference analysis.
      boolean isLowConfidentiality()
      Yields true if and only if this instance represents a low value for the confidentiality non interference analysis.
      boolean isLowIntegrity()
      Yields true if and only if this instance represents a low value for the integrity non interference analysis.
      boolean isTop()  
      protected boolean lessOrEqualAux​(NonInterference other)  
      protected NonInterference lubAux​(NonInterference other)  
      it.unive.lisa.analysis.representation.DomainRepresentation representation()  
      NonInterference top()  
      boolean tracksIdentifiers​(it.unive.lisa.symbolic.value.Identifier id)  
      NonInterference variable​(it.unive.lisa.symbolic.value.Identifier id, it.unive.lisa.program.cfg.ProgramPoint pp)  
      protected NonInterference wideningAux​(NonInterference other)  
      • Methods inherited from class it.unive.lisa.analysis.nonrelational.inference.BaseInferredValue

        eval, evalPushAny, evalTypeCast, evalTypeConv, glb, glbAux, satisfies, satisfiesAbstractValue, satisfiesBinaryExpression, satisfiesNonNullConstant, satisfiesNullConstant, satisfiesPushAny, satisfiesTernaryExpression, satisfiesUnaryExpression, toString
      • Methods inherited from class it.unive.lisa.analysis.BaseLattice

        lessOrEqual, lub, widening
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface it.unive.lisa.analysis.Lattice

        lessOrEqual, lub, widening
    • Constructor Detail

      • NonInterference

        public NonInterference()
        Builds a new instance of non interference, referring to the top element of the lattice.
    • Method Detail

      • isTop

        public boolean isTop()
      • isBottom

        public boolean isBottom()
      • isHighConfidentiality

        public boolean isHighConfidentiality()
        Yields true if and only if this instance represents a high value for the confidentiality non interference analysis.
        Returns:
        true if this is a high confidentiality element
      • isLowConfidentiality

        public boolean isLowConfidentiality()
        Yields true if and only if this instance represents a low value for the confidentiality non interference analysis.
        Returns:
        true if this is a low confidentiality element
      • isHighIntegrity

        public boolean isHighIntegrity()
        Yields true if and only if this instance represents a high value for the integrity non interference analysis.
        Returns:
        true if this is a high integrity element
      • isLowIntegrity

        public boolean isLowIntegrity()
        Yields true if and only if this instance represents a low value for the integrity non interference analysis.
        Returns:
        true if this is a low integrity element
      • lubAux

        protected NonInterference lubAux​(NonInterference other)
                                  throws it.unive.lisa.analysis.SemanticException
        Specified by:
        lubAux in class it.unive.lisa.analysis.BaseLattice<NonInterference>
        Throws:
        it.unive.lisa.analysis.SemanticException
      • wideningAux

        protected NonInterference wideningAux​(NonInterference other)
                                       throws it.unive.lisa.analysis.SemanticException
        Specified by:
        wideningAux in class it.unive.lisa.analysis.BaseLattice<NonInterference>
        Throws:
        it.unive.lisa.analysis.SemanticException
      • lessOrEqualAux

        protected boolean lessOrEqualAux​(NonInterference other)
                                  throws it.unive.lisa.analysis.SemanticException
        Specified by:
        lessOrEqualAux in class it.unive.lisa.analysis.BaseLattice<NonInterference>
        Throws:
        it.unive.lisa.analysis.SemanticException
      • hashCode

        public int hashCode()
        Specified by:
        hashCode in class it.unive.lisa.analysis.BaseLattice<NonInterference>
      • equals

        public boolean equals​(java.lang.Object obj)
        Specified by:
        equals in class it.unive.lisa.analysis.BaseLattice<NonInterference>
      • representation

        public it.unive.lisa.analysis.representation.DomainRepresentation representation()
      • evalNullConstant

        protected it.unive.lisa.analysis.nonrelational.inference.InferredValue.InferredPair<NonInterference> evalNullConstant​(NonInterference state,
                                                                                                                              it.unive.lisa.program.cfg.ProgramPoint pp)
                                                                                                                       throws it.unive.lisa.analysis.SemanticException
        Overrides:
        evalNullConstant in class it.unive.lisa.analysis.nonrelational.inference.BaseInferredValue<NonInterference>
        Throws:
        it.unive.lisa.analysis.SemanticException
      • evalNonNullConstant

        protected it.unive.lisa.analysis.nonrelational.inference.InferredValue.InferredPair<NonInterference> evalNonNullConstant​(it.unive.lisa.symbolic.value.Constant constant,
                                                                                                                                 NonInterference state,
                                                                                                                                 it.unive.lisa.program.cfg.ProgramPoint pp)
                                                                                                                          throws it.unive.lisa.analysis.SemanticException
        Overrides:
        evalNonNullConstant in class it.unive.lisa.analysis.nonrelational.inference.BaseInferredValue<NonInterference>
        Throws:
        it.unive.lisa.analysis.SemanticException
      • evalUnaryExpression

        protected it.unive.lisa.analysis.nonrelational.inference.InferredValue.InferredPair<NonInterference> evalUnaryExpression​(it.unive.lisa.symbolic.value.UnaryOperator operator,
                                                                                                                                 NonInterference arg,
                                                                                                                                 NonInterference state,
                                                                                                                                 it.unive.lisa.program.cfg.ProgramPoint pp)
                                                                                                                          throws it.unive.lisa.analysis.SemanticException
        Overrides:
        evalUnaryExpression in class it.unive.lisa.analysis.nonrelational.inference.BaseInferredValue<NonInterference>
        Throws:
        it.unive.lisa.analysis.SemanticException
      • evalBinaryExpression

        protected it.unive.lisa.analysis.nonrelational.inference.InferredValue.InferredPair<NonInterference> evalBinaryExpression​(it.unive.lisa.symbolic.value.BinaryOperator operator,
                                                                                                                                  NonInterference left,
                                                                                                                                  NonInterference right,
                                                                                                                                  NonInterference state,
                                                                                                                                  it.unive.lisa.program.cfg.ProgramPoint pp)
                                                                                                                           throws it.unive.lisa.analysis.SemanticException
        Overrides:
        evalBinaryExpression in class it.unive.lisa.analysis.nonrelational.inference.BaseInferredValue<NonInterference>
        Throws:
        it.unive.lisa.analysis.SemanticException
      • evalTernaryExpression

        protected it.unive.lisa.analysis.nonrelational.inference.InferredValue.InferredPair<NonInterference> evalTernaryExpression​(it.unive.lisa.symbolic.value.TernaryOperator operator,
                                                                                                                                   NonInterference left,
                                                                                                                                   NonInterference middle,
                                                                                                                                   NonInterference right,
                                                                                                                                   NonInterference state,
                                                                                                                                   it.unive.lisa.program.cfg.ProgramPoint pp)
                                                                                                                            throws it.unive.lisa.analysis.SemanticException
        Overrides:
        evalTernaryExpression in class it.unive.lisa.analysis.nonrelational.inference.BaseInferredValue<NonInterference>
        Throws:
        it.unive.lisa.analysis.SemanticException
      • evalIdentifier

        protected it.unive.lisa.analysis.nonrelational.inference.InferredValue.InferredPair<NonInterference> evalIdentifier​(it.unive.lisa.symbolic.value.Identifier id,
                                                                                                                            it.unive.lisa.analysis.nonrelational.inference.InferenceSystem<NonInterference> environment,
                                                                                                                            it.unive.lisa.program.cfg.ProgramPoint pp)
                                                                                                                     throws it.unive.lisa.analysis.SemanticException
        Overrides:
        evalIdentifier in class it.unive.lisa.analysis.nonrelational.inference.BaseInferredValue<NonInterference>
        Throws:
        it.unive.lisa.analysis.SemanticException
      • variable

        public NonInterference variable​(it.unive.lisa.symbolic.value.Identifier id,
                                        it.unive.lisa.program.cfg.ProgramPoint pp)
      • tracksIdentifiers

        public boolean tracksIdentifiers​(it.unive.lisa.symbolic.value.Identifier id)
      • canProcess

        public boolean canProcess​(it.unive.lisa.symbolic.SymbolicExpression expression)
      • assume

        public it.unive.lisa.analysis.nonrelational.inference.InferenceSystem<NonInterference> assume​(it.unive.lisa.analysis.nonrelational.inference.InferenceSystem<NonInterference> environment,
                                                                                                      it.unive.lisa.symbolic.value.ValueExpression expression,
                                                                                                      it.unive.lisa.program.cfg.ProgramPoint pp)
                                                                                               throws it.unive.lisa.analysis.SemanticException
        Specified by:
        assume in interface it.unive.lisa.analysis.nonrelational.NonRelationalElement<NonInterference,​it.unive.lisa.symbolic.value.ValueExpression,​it.unive.lisa.analysis.nonrelational.inference.InferenceSystem<NonInterference>>
        Overrides:
        assume in class it.unive.lisa.analysis.nonrelational.inference.BaseInferredValue<NonInterference>
        Throws:
        it.unive.lisa.analysis.SemanticException