Pulselib.PulseAttribute
module AbstractValue = PulseAbstractValue
module CallEvent = PulseCallEvent
module ConfigName = OpenSource.FbPulseConfigName
module DecompilerExpr = PulseDecompilerExpr
module Invalidation = PulseInvalidation
module TaintItem = PulseTaintItem
module TaintConfig = PulseTaintConfig
module Timestamp = PulseTimestamp
module Trace = PulseTrace
module ValueHistory = PulseValueHistory
type allocator =
| CMalloc
| CustomMalloc of IR.Procname.t
| CRealloc
| CustomRealloc of IR.Procname.t
| CppNew
| CppNewArray
| JavaResource of IR.JavaClassName.t
| CSharpResource of IR.CSharpClassName.t
| ObjCAlloc
| HackAsync
val pp_allocator : F.formatter -> allocator -> unit
Describes the source of taint in taint propagation.
NOTE: history
is ignored in equality and comparison.
module Tainted : sig ... end
module TaintedSet : IStdlib.PrettyPrintable.PPSet with type elt = Tainted.t
module TaintSink : sig ... end
module TaintSinkMap :
IStdlib.PrettyPrintable.PPMap with type key = TaintConfig.Kind.t
module TaintSanitized : sig ... end
module TaintSanitizedSet :
IStdlib.PrettyPrintable.PPSet with type elt = TaintSanitized.t
val pp_taint_propagation_reason :
F.formatter ->
taint_propagation_reason ->
unit
module CopyOrigin : sig ... end
module CopiedInto : sig ... end
module ConfigUsage : sig ... end
module UninitializedTyp : sig ... end
module ConstKeys : sig ... end
type t =
| AddressOfCppTemporary of IR.Var.t * ValueHistory.t
| AddressOfStackVariable of IR.Var.t * IBase.Location.t * ValueHistory.t
| Allocated of allocator * Trace.t
| AlwaysReachable
| Closure of IR.Procname.t
| ConfigUsage of ConfigUsage.t
| CopiedInto of CopiedInto.t
records the copied var/field for each source address
*)| CopiedReturn of {
source : AbstractValue.t;
is_const_ref : bool;
from : CopyOrigin.t;
copied_location : IBase.Location.t;
}
records the copied value for the return address
*)| DictContainConstKeys
the dictionary contains only constant keys (note: only string constant is supported for now)
*)| DictReadConstKeys of ConstKeys.t
constant string keys that are read from the dictionary
*)| EndOfCollection
| InReportedRetainCycle
| Initialized
| Invalid of Invalidation.t * Trace.t
| LastLookup of AbstractValue.t
| MustBeInitialized of Timestamp.t * Trace.t
| MustBeValid of Timestamp.t * Trace.t * Invalidation.must_be_valid_reason option
| MustNotBeTainted of TaintSink.t TaintSinkMap.t
| JavaResourceReleased
| CSharpResourceReleased
| HackAsyncAwaited
| PropagateTaintFrom of taint_propagation_reason * taint_in list
| ReturnedFromUnknown of AbstractValue.t list
| SourceOriginOfCopy of {
source : PulseAbstractValue.t;
is_const_ref : bool;
}
records the source value for a given copy to lookup the appropriate heap in non-disj domain
*)| StaticType of IR.Typ.Name.t
type gotten or inferred from types in SIL instructions (only for Hack frontend)
*)| StdMoved
| StdVectorReserve
| Tainted of TaintedSet.t
| TaintSanitized of TaintSanitizedSet.t
| Uninitialized of UninitializedTyp.t
| UnknownEffect of CallEvent.t * ValueHistory.t
generated by calls to unknown functions to remember that a pointer has been passed to an unknown function and so everything reachable from it has potentially been affected in unknown ways
*)| UnreachableAt of IBase.Location.t
temporary marker to remember where a variable became unreachable; helps with accurately reporting leaks
*)| UsedAsBranchCond of IR.Procname.t * IBase.Location.t * Trace.t
| WrittenTo of Timestamp.t * Trace.t
include Ppx_compare_lib.Comparable.S with type t := t
val compare : t Base__Ppx_compare_lib.compare
val pp : F.formatter -> t -> unit
val filter_unreachable :
AbstractValue.Set.t AbstractValue.Map.t ->
(AbstractValue.t -> bool) ->
t ->
t option
update an attribute to get rid of abstract values that do not satisfy the given predicate; the result is None
if the attribute becomes meaningless as a result
module Attributes : sig ... end