source/interprocedural_analyses/taint/callModel.mli (53 lines of code) (raw):

(* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. *) open Core open Ast open Analysis open Interprocedural open Domains val at_callsite : resolution:Resolution.t -> call_target:[< Target.t ] -> arguments:Expression.Call.Argument.t list -> Model.t module ArgumentMatches : sig type t = { argument: Expression.t; sink_matches: AccessPath.argument_match list; tito_matches: AccessPath.argument_match list; sanitize_matches: AccessPath.argument_match list; } end val match_actuals_to_formals : model:Model.t -> arguments:Expression.Call.Argument.t list -> ArgumentMatches.t list (* A mapping from a taint-in-taint-out kind (e.g, `Sinks.LocalReturn`, `Sinks.ParameterUpdate` or `Sinks.AddFeatureToArgument`) to a tito taint (including features, return paths, depth). *) module TaintInTaintOutMap : sig type t = (Sinks.t, BackwardState.Tree.t) Map.Poly.t val fold : t -> init:'a -> f:(kind:Sinks.t -> tito_tree:BackwardState.Tree.t -> 'a -> 'a) -> 'a end val taint_in_taint_out_mapping : transform_non_leaves:(Features.ReturnAccessPath.t -> BackwardTaint.t -> BackwardTaint.t) -> model:Model.t -> tito_matches:AccessPath.argument_match list -> sanitize_matches:AccessPath.argument_match list -> TaintInTaintOutMap.t val return_paths : kind:Sinks.t -> tito_taint:BackwardTaint.t -> Abstract.TreeDomain.Label.path list val sink_trees_of_argument : resolution:Resolution.t -> transform_non_leaves:(Features.ReturnAccessPath.t -> BackwardTaint.t -> BackwardTaint.t) -> model:Model.t -> location:Location.WithModule.t -> call_target:CallGraph.CallTarget.t -> arguments:Expression.Call.Argument.t list -> sink_matches:AccessPath.argument_match list -> is_self_call:bool -> caller_class_interval:Interprocedural.ClassInterval.t -> receiver_class_interval:Interprocedural.ClassInterval.t -> Issue.SinkTreeWithHandle.t list