Pulselib.PulseAttributemodule AbstractValue = PulseAbstractValuemodule CallEvent = PulseCallEventmodule ConfigName = OpenSource.FbPulseConfigNamemodule DecompilerExpr = PulseDecompilerExprmodule Invalidation = PulseInvalidationmodule TaintItem = PulseTaintItemmodule TaintConfig = PulseTaintConfigmodule Timestamp = PulseTimestampmodule Trace = PulseTracemodule ValueHistory = PulseValueHistorytype 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| HackAsyncval pp_allocator : F.formatter -> allocator -> unitDescribes the source of taint in taint propagation.
NOTE: history is ignored in equality and comparison.
module Tainted : sig ... endmodule TaintedSet : IStdlib.PrettyPrintable.PPSet with type elt = Tainted.tmodule TaintSink : sig ... endmodule TaintSinkMap :
IStdlib.PrettyPrintable.PPMap with type key = TaintConfig.Kind.tmodule TaintSanitized : sig ... endmodule TaintSanitizedSet :
IStdlib.PrettyPrintable.PPSet with type elt = TaintSanitized.tval pp_taint_propagation_reason :
F.formatter ->
taint_propagation_reason ->
unitmodule CopyOrigin : sig ... endmodule CopiedInto : sig ... endmodule ConfigUsage : sig ... endmodule UninitializedTyp : sig ... endmodule ConstKeys : sig ... endtype 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.trecords 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
*)| DictContainConstKeysthe dictionary contains only constant keys (note: only string constant is supported for now)
*)| DictReadConstKeys of ConstKeys.tconstant 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.ttype 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.tgenerated 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.ttemporary 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.tinclude Ppx_compare_lib.Comparable.S with type t := tval compare : t Base__Ppx_compare_lib.compareval pp : F.formatter -> t -> unitval filter_unreachable :
AbstractValue.Set.t AbstractValue.Map.t ->
(AbstractValue.t -> bool) ->
t ->
t optionupdate 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