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 the
Value` type is an abstract domain and the map itself is also an abstract domain. - A
MapMergeStrategy
where 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
MapMergeStrategy
where for every key that only occurs in one input map of the merge function the corresponding value is merged withTop
before being added to the merged map. Furthermore, keys whose values are merged to theTop
value are removed from the merged map. - A
MapMergeStrategy
where key-value pairs whose key is only present in one input map are added to the merged map.Top
values 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
target
memory location. - The
BitvectorDomain
is 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
CharacterInclusionDomain
is 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
MapMergeStrategy
determines how the merge-method for aDomainMap
works. - 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.