PulseAbductiveDomain.AddressAttributes
Safe version of PulseBaseAddressAttributes
val abduce_one :
Pulselib.PulseBasicInterface.AbstractValue.t ->
Pulselib.PulseBasicInterface.Attribute.t ->
t ->
t
add the attribute to the pre, if the address is in pre
val abduce_all :
Pulselib.PulseBasicInterface.AbstractValue.t ->
Pulselib.PulseBasicInterface.Attributes.t ->
t ->
t
abduce_one
on each attribute in the set
val add_one :
Pulselib.PulseBasicInterface.AbstractValue.t ->
Pulselib.PulseBasicInterface.Attribute.t ->
t ->
t
add the attribute only to the post
val add_all :
Pulselib.PulseBasicInterface.AbstractValue.t ->
Pulselib.PulseBasicInterface.Attributes.t ->
t ->
t
add_one
on each attribute in the set
val find_opt :
[ `Pre | `Post ] ->
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
Pulselib.PulseBasicInterface.Attributes.t option
val check_valid :
PathContext.t ->
?must_be_valid_reason:
Pulselib.PulseBasicInterface.Invalidation.must_be_valid_reason ->
Pulselib.PulseBasicInterface.Trace.t ->
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
(t,
Pulselib.PulseBasicInterface.Invalidation.t
* Pulselib.PulseBasicInterface.Trace.t)
IStdlib.IStd.result
val check_initialized :
PathContext.t ->
Pulselib.PulseBasicInterface.Trace.t ->
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
(t, Pulselib.PulseBasicInterface.Attribute.UninitializedTyp.t)
IStdlib.IStd.result
val add_taint_sink :
PathContext.t ->
Pulselib.PulseBasicInterface.TaintItem.t ->
Pulselib.PulseBasicInterface.Trace.t ->
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
t
val invalidate :
(Pulselib.PulseBasicInterface.AbstractValue.t
* Pulselib.PulseBasicInterface.ValueHistory.t) ->
Pulselib.PulseBasicInterface.Invalidation.t ->
IBase.Location.t ->
t ->
t
val initialize : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
Remove "Uninitialized" attribute of the given address
val set_uninitialized :
IR.Tenv.t ->
PathContext.t ->
[ `LocalDecl of
IR.Pvar.t
* (Pulselib.PulseBasicInterface.AbstractValue.t
* Pulselib.PulseBasicInterface.ValueHistory.t)
option
| `Malloc of
Pulselib.PulseBasicInterface.AbstractValue.t
* Pulselib.PulseBasicInterface.ValueHistory.t ] ->
IR.Typ.t ->
IBase.Location.t ->
t ->
t
Add "Uninitialized" attributes when a variable is declared or a memory is allocated by malloc.
val always_reachable : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val allocate :
Pulselib.PulseBasicInterface.Attribute.allocator ->
Pulselib.PulseBasicInterface.AbstractValue.t ->
IBase.Location.t ->
t ->
t
val java_resource_release :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
t
val await_awaitable : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val remove_hack_builder :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
t
val set_hack_builder :
Pulselib.PulseBasicInterface.AbstractValue.t ->
Pulselib.PulseBasicInterface.Attribute.Builder.t ->
t ->
t
val get_hack_builder :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
Pulselib.PulseBasicInterface.Attribute.Builder.t option
val is_java_resource_released :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
bool
val csharp_resource_release :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
t
val is_csharp_resource_released :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
bool
val in_reported_retain_cycle :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
t
val is_in_reported_retain_cycle :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
bool
val add_dict_contain_const_keys :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
t
val remove_dict_contain_const_keys :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
t
val is_dict_contain_const_keys :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
bool
val add_dict_read_const_key :
Pulselib.PulseBasicInterface.Timestamp.t ->
Pulselib.PulseBasicInterface.Trace.t ->
Pulselib.PulseBasicInterface.AbstractValue.t ->
IR.Fieldname.t ->
t ->
t
val add_static_type :
IR.Tenv.t ->
IR.Typ.name ->
Pulselib.PulseBasicInterface.AbstractValue.t ->
IBase.Location.t ->
t ->
t
val remove_allocation_attr :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
t
val remove_taint_attrs : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val get_allocation_attr :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
(Pulselib.PulseBasicInterface.Attribute.allocator
* Pulselib.PulseBasicInterface.Trace.t)
option
val get_static_type :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
IR.Typ.Name.t option
val get_closure_proc_name :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
IR.Procname.t option
val get_copied_into :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
Pulselib.PulseBasicInterface.Attribute.CopiedInto.t option
val get_copied_return :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
(Pulselib.PulseBasicInterface.AbstractValue.t
* bool
* Pulselib.PulseBasicInterface.Attribute.CopyOrigin.t
* IBase.Location.t)
option
val remove_copied_return :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
t
val get_source_origin_of_copy :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
Pulselib.PulseBasicInterface.AbstractValue.t option
val get_taint_sources_and_sanitizers :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
Pulselib.PulseBasicInterface.Attribute.TaintedSet.t
* Pulselib.PulseBasicInterface.Attribute.TaintSanitizedSet.t
val get_propagate_taint_from :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
(Pulselib.PulseBasicInterface.Attribute.taint_propagation_reason
* Pulselib.PulseBasicInterface.Attribute.taint_in list)
option
val is_end_of_collection :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
bool
val mark_as_end_of_collection :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
t
val is_std_vector_reserved :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
bool
val get_last_lookup :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
Pulselib.PulseBasicInterface.AbstractValue.t option
val std_vector_reserve : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val add_copied_return :
Pulselib.PulseBasicInterface.AbstractValue.t ->
source:Pulselib.PulseBasicInterface.AbstractValue.t ->
is_const_ref:bool ->
Pulselib.PulseBasicInterface.Attribute.CopyOrigin.t ->
IBase.Location.t ->
t ->
t
val get_config_usage :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
Pulselib.PulseBasicInterface.Attribute.ConfigUsage.t option
val get_valid_returned_from_unknown :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
Pulselib.PulseBasicInterface.AbstractValue.t list option
val get_written_to :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
(Pulselib.PulseBasicInterface.Timestamp.t
* Pulselib.PulseBasicInterface.Trace.t)
option
val is_copied_from_const_ref :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
bool
val is_std_moved : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> bool
val get_address_of_stack_variable :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
(IR.Var.t * IBase.Location.t * Pulselib.PulseBasicInterface.ValueHistory.t)
option
val has_unknown_effect :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
bool
val is_hack_constinit_called :
Pulselib.PulseBasicInterface.AbstractValue.t ->
t ->
bool