Module cwe_checker_lib::abstract_domain
source · Expand description
This module defines traits describing general properties of abstract domains as well as several abstract domain types implementing these traits.
Structs
- An abstract identifier is used to identify an object or a value in an abstract state.
- The data contained in an abstract identifier
- An abstract domain representing a set of base values plus offsets or an absolute value (or both).
- A
DomainMap<Key, Value, MapMergeStrategy>is a wrapper type around aBTreeMap<Key, Value> where theValue` type is an abstract domain and the map itself is also an abstract domain. - A
MapMergeStrategywhere the merge function only keeps keys that are present in both input maps. - A strided interval of values with a fixed byte size.
- An abstract domain representing values in an interval range with strides and widening hints.
- A memory region is an abstract domain representing a continuous region of memory, e.g. the stack frame of a function.
- A
MapMergeStrategywhere for every key that only occurs in one input map of the merge function the corresponding value is merged withTopbefore being added to the merged map. Furthermore, keys whose values are merged to theTopvalue are removed from the merged map. - A
MapMergeStrategywhere key-value pairs whose key is only present in one input map are added to the merged map.Topvalues and their corresponding keys are also preserved in the merged map.
Enums
- An abstract location describes how to find the value of a variable in memory at a given time.
- An abstract memory location is either an offset from the given location, where the actual value can be found, or an offset to a pointer to another memory location, where the value can be found by (recursively) following the embedded
targetmemory location. - The
BitvectorDomainis a simple abstract domain describing a bitvector of known length. - The single brick domain that represents a set of character sequences as well as the minimum and maximum of the sum of their occurrences.
- The BricksDomain contains a sorted list of single normalized BrickDomains. It represents the composition of a string through sub sequences.
- The
CharacterInclusionDomainis a abstract domain describing the characters a string certainly has and the characters a string may have. - A domain that represents character sets.
Traits
- The main trait describing an abstract domain.
- A set of functions that all abstract string domains should implement.
- An abstract domain implementing this trait has a global maximum, i.e. a Top element.
- A
MapMergeStrategydetermines how the merge-method for aDomainMapworks. - A trait for abstract domains that can represent values loaded into CPU register.
- A trait for types representing values with a fixed size (in bytes).
- A trait for domains whose values can be restricted by knowing the result of a comparison of it with a known bitvector. The comparison may also be used to add widening hints to the domain.
- A conversion trait for abstract domains that can represent register values.
- A conversion trait for abstract domains that can represent register values.