pub enum Taint {
    Tainted(ByteSize),
    Top(ByteSize),
}
Expand description

An abstract domain representing a value that is either tainted or not.

Note that the merge-function does not respect the partial order that is implied by the naming scheme of the variants! In fact, the whole analysis does not enforce any partial order for this domain. This means that in theory the fixpoint computation may not actually converge to a fixpoint, but in practice the analysis can make more precise decisions whether a value should be tainted or not.

Variants§

§

Tainted(ByteSize)

A tainted value of a particular bytesize.

§

Top(ByteSize)

An untainted value of a particular bytesize.

Implementations§

source§

impl Taint

source

pub fn is_tainted(&self) -> bool

Checks whether the given value is in fact tainted.

Trait Implementations§

source§

impl AbstractDomain for Taint

source§

fn merge(&self, other: &Self) -> Self

The result of merging two Taint values is tainted if at least one input was tainted.

source§

fn merge_with(&mut self, other: &Self) -> &mut Self

Replaces self with other iff self is untainted and other is tainted.

No change to self is required in the other cases.

source§

fn is_top(&self) -> bool

Checks whether the value is an untainted Top-value.

source§

impl Clone for Taint

source§

fn clone(&self) -> Taint

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Taint

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for Taint

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for Taint

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Print the value of a Taint object.

source§

impl HasTop for Taint

source§

fn top(&self) -> Self

Get a new Top-value with the same bytesize as self.

source§

impl Hash for Taint

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for Taint

source§

fn eq(&self, other: &Taint) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl RegisterDomain for Taint

source§

fn bin_op(&self, op: BinOpType, rhs: &Self) -> Self

The result of a binary operation is tainted if at least one input value was tainted.

source§

fn un_op(&self, _op: UnOpType) -> Self

The result of a unary operation is tainted if the input was tainted.

source§

fn subpiece(&self, _low_byte: ByteSize, size: ByteSize) -> Self

A subpiece of a tainted value is again tainted.

source§

fn cast(&self, _kind: CastOpType, width: ByteSize) -> Self

The result of a cast operation is tainted if the input was tainted.

source§

fn bin_op_bytesize(&self, op: BinOpType, rhs: &Self) -> ByteSize

Return the bytesize of the result of the given binary operation. Has a generic implementation that should not be overwritten!
source§

impl Serialize for Taint

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl SizedDomain for Taint

source§

fn bytesize(&self) -> ByteSize

The size in bytes of the Taint value.

source§

fn new_top(bytesize: ByteSize) -> Self

Get a new Top-value with the given bytesize.

source§

impl ToJsonCompact for Taint

source§

fn to_json_compact(&self) -> Value

Returns a json representation of values of type self that is suitable for debugging purposes. Read more
source§

fn print_compact_json(&self)

Print values of type Self for debugging purposes.
source§

impl Copy for Taint

source§

impl Eq for Taint

source§

impl StructuralEq for Taint

source§

impl StructuralPartialEq for Taint

Auto Trait Implementations§

§

impl RefUnwindSafe for Taint

§

impl Send for Taint

§

impl Sync for Taint

§

impl Unpin for Taint

§

impl UnwindSafe for Taint

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,