package mopsa

  1. Overview
  2. Docs
MOPSA: A Modular and Open Platform for Static Analysis using Abstract Interpretation

Install

dune-project
 Dependency

Authors

Maintainers

Sources

mopsa-analyzer-v1.2.tar.gz
md5=37966e98ffeebcedc09bd6e9b2b81f69
sha512=40d4d826c25f680766c07eccbabdf5e8a4fa023016e8a164e4e4f6b3781c8484dc4df437055721dfd19b9db8fb7fe3b61236c4833186d346fc7204a68d01eaaa

doc/mopsa.mopsa_analyzer/Mopsa_analyzer/Languages/C/Iterators/Program/Domain/index.html

Module Program.Domain

Domain identification

=====================

include sig ... end
val id : unit Mopsa_analyzer__Framework__Core__Id.id
val name : string
val debug : ('a, Format.formatter, unit, unit) format4 -> 'a

Command line options

====================

val opt_entry_function : string ref

Name of the entry function to be analyzed.

val opt_check_memory : bool ref
val opt_symbolic_args : (int * int option) option ref

Symbolic main arguments.

val parse_symbolic_args_spec : string -> int * int option
val opt_arg_max_size : int option ref
val opt_arg_min_size : int option ref
val checks : 'a list

Initialization of environments

==============================

Computation of post-conditions

==============================

val init_globals : (MopsaLib.var * Lang.Ast.c_var_init option) list -> ('a, 'b) MopsaLib.man -> 'a Core.Flow.flow -> 'a Mopsa_analyzer.MopsaLib.Post.post

Initialize global variables

val exec_stub_directives : Stubs.Ast.stub_directive list -> ('a, 'b) MopsaLib.man -> 'a Core.Flow.flow -> 'a Mopsa_analyzer.MopsaLib.Post.post

Execute stub directives

val find_function : string -> Lang.Ast.c_fundec list -> Lang.Ast.c_fundec

Fund a function by name

val find_variable : string -> (MopsaLib.var * 'a) list -> MopsaLib.var

Find a global variable by name

val check_memory_allocation : ('a, 'b) MopsaLib.man -> Mopsa_utils.Core.Location.range -> 'a Core.Flow.flow -> 'a Core.Flow.flow
val exec_exit_functions_with_loop : Z.t -> Z.t -> MopsaLib.expr -> Mopsa_utils.Core.Location.range -> ('a, 'b) MopsaLib.man -> 'a Core.Flow.flow -> ('a, unit) Core.Cases.cases

Execute exit functions using a loop

Execute functions registered with atexit

val exec_entry_body : Lang.Ast.c_fundec -> ('a, 'b) MopsaLib.man -> 'a Core.Flow.flow -> 'a Core.Post.post

Creation of argc and argv

*****************************

val argv_resource : string
val arg_single_resource : int -> string
val arg_smash_resource : int -> string
val is_argv_resource : string -> bool
val is_arg_single_resource : string -> bool
val is_arg_smash_resource : string -> bool
val is_arg_resource : string -> bool

Allocate the argv array

Allocate an address for a concrete argument

val init_concrete_arg : MopsaLib.expr -> string -> Mopsa_utils.Core.Location.range -> ('a, 'b) MopsaLib.man -> 'a Core.Flow.flow -> 'a Core.Post.post

Initialize an argument with a concrete string

val call_main_with_concrete_args : Lang.Ast.c_fundec -> string list -> ('a, 'b) MopsaLib.man -> 'a Core.Flow.flow -> ('a, unit) Mopsa_analyzer.MopsaLib.Cases.cases

Initialize argc and argv with concrete values and execute the body of main

Allocate addresses for symbolic arguments

val call_main_with_symbolic_args : Lang.Ast.c_fundec -> int -> int option -> ('a, 'b) MopsaLib.man -> 'a Mopsa_analyzer.MopsaLib.Flow.flow -> ('a, unit) Core.Cases.cases

Initialize argc and argv with symbolic arguments

val call_main : Lang.Ast.c_fundec -> string list option -> 'a -> ('b, 'c) MopsaLib.man -> 'b Core.Flow.flow -> ('b, unit) Core.Cases.cases
val exec : MopsaLib.stmt -> ('a, 'b) MopsaLib.man -> 'a Core.Flow.flow -> ('a, unit) Core.Cases.cases option

Evaluation of expressions

=========================

Handler of queries

==================

val ask : 'r. ('a, 'r) MopsaLib.query -> ('a, 'b) MopsaLib.man -> 'a MopsaLib.flow -> ('a, 'r) MopsaLib.cases option
val print_expr : 'a -> 'b -> 'c -> 'd -> unit
OCaml

Innovation. Community. Security.