Module Std.Taint

Abstract taint.

We represent a taint with a term identifier, to designate that a taint was produced by a term with the given id. A taint set is usually associated with each variable of a given term. This set defines a set of taints with which a variable is tainted.

type t = tid
type set = Tid.Set.t
val bin_shape_set : Core_kernel.Bin_prot.Shape.t
val bin_size_set : set Core_kernel.Bin_prot.Size.sizer
val bin_write_set : set Core_kernel.Bin_prot.Write.writer
val bin_writer_set : set Core_kernel.Bin_prot.Type_class.writer
val bin_read_set : set Core_kernel.Bin_prot.Read.reader
val __bin_read_set__ : (int -> set) Core_kernel.Bin_prot.Read.reader
val bin_reader_set : set Core_kernel.Bin_prot.Type_class.reader
val bin_set : set Core_kernel.Bin_prot.Type_class.t
val compare_set : set -> set -> int
val sexp_of_set : set -> Ppx_sexp_conv_lib.Sexp.t
val set_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> set
type map = set Var.Map.t
val bin_shape_map : Core_kernel.Bin_prot.Shape.t
val bin_size_map : map Core_kernel.Bin_prot.Size.sizer
val bin_write_map : map Core_kernel.Bin_prot.Write.writer
val bin_writer_map : map Core_kernel.Bin_prot.Type_class.writer
val bin_read_map : map Core_kernel.Bin_prot.Read.reader
val __bin_read_map__ : (int -> map) Core_kernel.Bin_prot.Read.reader
val bin_reader_map : map Core_kernel.Bin_prot.Type_class.reader
val bin_map : map Core_kernel.Bin_prot.Type_class.t
val compare_map : map -> map -> int
val sexp_of_map : map -> Ppx_sexp_conv_lib.Sexp.t
val map_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> map
val reg : t tag

value stored in register is source of taint

val ptr : t tag

value stored at memory location, that is stored in the register is tainted.

val regs : map tag

maps each variable that is used in a term to a set of register taints

val ptrs : map tag

maps each variable that is used in a term to a set of pointer taints

val merge : map -> map -> map

merge t1 t2 merge taint maps

class context : object ... end
module type S = sig ... end
module Make (M : Monads.Std.Monad.State.S2) : S with type ('a, 'e) state = ('a, 'e) M.t
include S with type ('a, 'e) state = ('a, 'e) Monads.Std.Monad.State.t
type ('a, 'e) state = ('a, 'e) Monads.Std.Monad.State.t
module Expi : Expi.S with type ('a, 'e) state = ('a, 'e) state
class 'a propagator : object ... end

Propagate taint through expressions.

val pp_set : Stdlib.Format.formatter -> set -> unit

print a set of taints

val pp_map : Stdlib.Format.formatter -> map -> unit

print a taint map

module Map : Regular.Std.Regular.S with type t = map