399 Commits (6273b1f445e4f22b70212d4d6f017606950b45a4)

Author SHA1 Message Date
Jules Villard cfa81d168d [pulse] check formula unsat more often
5 years ago
Jules Villard f1e9e28f73 [pudge] delete
5 years ago
Jules Villard 5a39c158c5 [pulse] arithmetic domain: take 4!
5 years ago
Jules Villard c7305245c5 [istd][minor] no need to name ~fold in fold_of_pervasives_map_fold
5 years ago
Ezgi Çiçek 577d4679da [absint][pulse] Remove NeverJoin
5 years ago
Ezgi Çiçek feefda3e59 Wrap Java's PatternMatch into its own module
5 years ago
Daiva Naudziuniene 221d0b62ab [pulse] Model builtin __new as returning non-null
5 years ago
Jules Villard 660eceb20f [pulse] log summary creation
5 years ago
Jules Villard 9578ec74c9 [pulse] model operator== and operator!= for iterators
5 years ago
Jules Villard ae57f217d2 [pulse] don't always mistake equality for aliasing
5 years ago
Daiva Naudziuniene 50d659b750 Update type of procdesc and closure expression to contain information about capture variable mode
5 years ago
Josh Berdine 7e77bad4d2 [sledge] Change: Implement Fol using a solver-independent intermediate type
5 years ago
Josh Berdine eca73cf39b [sledge] Build: Move sledge equality solver to separate lib
5 years ago
Daiva Naudziuniene 35011757dc [pulse] Add a flag to pass functions that we want to model as returning non-null
5 years ago
Jules Villard a89d3db364 [pulse] change recency maps to be backed by lists
5 years ago
Daiva Naudziuniene 0ab3689f1f [infer] NULLPTR_DEREFERENCE false positive caused by thread_local variable
5 years ago
Dulma Churchill 85ee958bf9 [pulse] Add model for NSObject.init
5 years ago
Daiva Naudziuniene 2c48e61031 [pulse] A new issue type OPTIONAL_EMPTY_ACCESS for trying to access folly::Optional when it is folly::none
5 years ago
Dulma Churchill 2d4b3c9acd [builtins] Change the name of __free_cf to the more appropriate _objc_bridge_transfer and delete the biabduction implementation
5 years ago
Daiva Naudziuniene 412d2777eb [pulse] Add a flag to pass functions that we want to model as abort
5 years ago
Ezgi Çiçek c23e0044fc [infer] Remove ppx_compare workaround for nonrec types (2)
5 years ago
Josh Berdine 9c8f2e4a5c [sledge] Build: Move Timer to Nonstdlib
5 years ago
Jules Villard 8a1c10f8a1 remove dynamic severity: Reporting.log_{error,warning} -> log_issue
5 years ago
Dulma Churchill aa6fe7963c [pulse] Add dealloc calls for ObjC objects that are about to become unreachable
5 years ago
Dulma Churchill f638e741ae [pulse] Add DynamicType attribute and use it in the model of ObjC alloc
5 years ago
Ezgi Çiçek 964388f56c [pulse] Brush up Collection/List add and remove models
5 years ago
Daiva Naudziuniene 98092481d4 [pulse] Special case for std::function:operator=( nullptr )
5 years ago
Jules Villard eab7e9aeb7 minor readability improvement in IssueType.ml
5 years ago
Sungkeun Cho 719b72cb4f [pulse] Avoid partitioning abstract values
5 years ago
Jules Villard 4e28980c8e [errlog] reporting asserts checker matches issue-type
5 years ago
Josh Berdine 61566caddf [ocamlformat] Set break-sequences = true
5 years ago
Josh Berdine 65f369cf35 [ocamlformat] Reformat repo with new version
5 years ago
Dulma Churchill ef7bc324e3 [pulse] Add a flag to model methods for memory ownership transfer
5 years ago
Daiva Naudziuniene ca2ec281c7 [pulse] Model for iterator operator--
5 years ago
Daiva Naudziuniene eaf95951f5 [pulse] Modeling std::vector::end()
5 years ago
Ezgi Çiçek faceece120 [pulse] Brush up List.set() model
5 years ago
Ezgi Çiçek 5ff6fc93a0 [pulse] Brush up Java iterator models
5 years ago
Jules Villard 041ecc5b43 rename most libraries to be more consistent
5 years ago
Dulma Churchill 40143ab01c [pulse] Model CFRelease as removing the Allocated attribute rather than as free
5 years ago
Jules Villard e06487868b make Reporting take a Procdesc instead of attributes
5 years ago
Sungkeun Cho d373a81b73 [pulse] Keep only one disjunct from blacklisted function
5 years ago
Jules Villard 7e5dba718a pulse/dune
5 years ago
Jules Villard a34e1a8759 bufferoverrun/dune
5 years ago
Jules Villard f41575411c make pulse take an `InterproceduralAnalysis.t`
5 years ago
Jules Villard d14ff99f45 [pudge] try harder to prove false
5 years ago
Jules Villard 2da04b835d [pulse] require ptr>0 in free()
5 years ago
Jules Villard 385b6fa914 [pulse] revamp arithmetic, put everything in the path condition
5 years ago
Jules Villard 5c453393ff [pulse] recency model for memory accesses
5 years ago
Jules Villard c2ec55fe37 [pulse] remove traces from interval domain
5 years ago
Dulma Churchill 6c044ba2d4 [pulse] Model Core Foundation create and copy functions
5 years ago
Jules Villard 2d8debc562 [pulse] invalidate vector backing array correctly
5 years ago
Jules Villard 0859f61695 make AbstractInterpreter agnostic in ProcData
5 years ago
Jules Villard a144c8e4df split reporting.ml for dependencies
5 years ago
Dulma Churchill f28d75c910 [pulse] Add model for malloc_no_fail
5 years ago
Dulma Churchill fa13577695 [pulse] Model __bridge_transfer
5 years ago
Daiva Naudziuniene 247ecb813d [pulse] Fix traces for iterator invalidation errors
5 years ago
Ezgi Çiçek 269cdb80d9 [pulse] Model `StdVector` allocator
5 years ago
Dulma Churchill c76d59853b [pulse] Model CFBridgingRelease by removing the Allocated attribute
5 years ago
Jules Villard 3332dc1a42 [AI] improve disjunctive domain
5 years ago
Jules Villard edba795825 [AI] move disjunctive scheduling to AbstractInterpreter
5 years ago
Jules Villard 50feb5481c [pudge] only ask unsat when reporting
5 years ago
Jules Villard 822a78c576 [pudge] lazily compute sledge stuff
5 years ago
Jules Villard 3220804ddb [pulse] add a cache of constants to equate them
5 years ago
Daiva Naudziuniene dae7f36339 [pulse] Vector iterator model
5 years ago
Jules Villard 36f44f030d [pudge] spit out sledge replay tests
5 years ago
Jules Villard 7a888170e7 [pudge] it's alive!
5 years ago
Dulma Churchill 2d168f75a6 [pulse] Add options for modelling alloc models and free models from user-defined regexes.
5 years ago
Jules Villard 6247437296 [pulse] unified API for arithmetic
5 years ago
Jules Villard 0a8ad85596 [pulse][minor] rename AbductiveDomain.Domain -> AbductiveDomain.PostDomain
5 years ago
Jules Villard af2aaf2a14 [pulse][minor] remove skipped_calls getter
5 years ago
Jules Villard bb9726bbd7 [pulse] enforce short forms for PulseDomainInterface
5 years ago
Jules Villard 94e3b06900 [pulse] enforce short forms for PulseBasicInterface
5 years ago
Jules Villard a0d1fee1dc [pulse] move SkippedCalls to its own file
5 years ago
Jules Villard c00de7ad27 [pulse] move interproc call to its own file
5 years ago
Jules Villard 9ed10d435b [pulse][minor] simplify rewriting of callee post attributes
5 years ago
Dulma Churchill 2382e3d613 [pulse] Model Core Graphics Create and Copy just like malloc
5 years ago
Dulma Churchill 59ea968de8 [pulse] Model the correct CFAutorelease
5 years ago
Ezgi Çiçek e1093159b0 [pulse] Distinguish error state at top level
5 years ago
Dulma Churchill b29d1a2f5f [pulse] Adding new value history for allocations
5 years ago
Ezgi Çiçek 5a2b285fff [pulse] Distinguish exit state at top level
5 years ago
Dulma Churchill dba4140a7b [pulse] Adding null case to malloc's model
5 years ago
Dulma Churchill 271946a178 [pulse] Model release functions from Core Graphics and Core Foundation
5 years ago
Dulma Churchill 6f2b52fcc7 [pulse] Model Core Graphics create and copy functions
5 years ago
Jules Villard 6dc0894eef [pulse][models] add the proc name being matched to the context
5 years ago
Dulma Churchill 902514dccd [pulse] Add unreachable point to the trace of memory leaks
5 years ago
Ezgi Çiçek d97e1c8fdb [pulse][impurity] Add model for System.exit()
5 years ago
Ezgi Çiçek f7baf845fd [pulse] Fix printing order in contradiction for CItv and add tests
5 years ago
Dulma Churchill e99295e0e9 [pulse] Memory leak check
5 years ago
Ezgi Çiçek 7ca2fcc948 [pulse][purity] Add more naive models for Java
5 years ago
Ezgi Çiçek 25c058f706 [deadcode] Fix deadcode
5 years ago
Ezgi Çiçek cc815f5d20 [pulse] Only propagate existing WrittenTo attributes at function calls
5 years ago
Ezgi Çiçek b372befee4 [pulse] Add more naive Java models
5 years ago
Ezgi Çiçek a65176de22 [pulse] Print SkippedCalls
5 years ago
Dulma Churchill d1923dcd71 [pulse] Changed the name of BaseDomain signature to avoid a name clash
5 years ago
Jules Villard 3ba91fd596 [pulse] refactor of PrePost.t vs AbductiveDomain.t
5 years ago
Jules Villard 7861752bf3 [pulse] rename "PulseArithmetic" to "PulseCItv"
5 years ago
Ezgi Çiçek e3c89b1f10 [impurity] Fix include_value_history
5 years ago
Dulma Churchill 2f90b05c2a [pulse] Add model for malloc
5 years ago
Ezgi Çiçek b90d7c42d3 [impurity] Do not add value history in impurity traces
5 years ago
Ezgi Çiçek c6237f5f9f [pulse] Add model for Object.clone()
5 years ago
Ezgi Çiçek c144761a26 [pulse] Pull skipped calls into AbductiveDomain
5 years ago
Ezgi Çiçek 5f8e6233bb [pulse] Take into account skipped calls for state comparison
5 years ago
Ezgi Çiçek 562a43621c [pulse] Remove NoJoin sig from PulseBaseDomain
5 years ago
Jules Villard 826fd8a999 [pulse] monad, monads everywhere
5 years ago
Jules Villard 72f560036d [pulse] formal/actual length mismatch is a contradiction
5 years ago
Ezgi Çiçek 239a5302f6 [pulse] Add more models for Java
5 years ago
Ezgi Çiçek 040442c93b [pulse] Don't write through pointer arguments in Java
5 years ago
Ezgi Çiçek 4677584018 [pulse] Remove map suffix from SkippedCalls
5 years ago
Ezgi Çiçek a0fd5a0e6a [pulse] Refactor attributes into domain
5 years ago
Jules Villard a8b2c58bfb [pulse] new option to turn pulse back into an intra-procedural analysis
5 years ago
Ezgi Çiçek 426b7dfe51 [pulse] Track skipped functions
5 years ago
Jules Villard 3bf771bff4 [pulse] add model for std::vector<>::at()
5 years ago
Ezgi Çiçek a187d1b0b6 [pulse] Fix unequal length
5 years ago
Ezgi Çiçek 6f64131ae6 [pulse] Do not havoc arguments of unknown functions that are pointers to const
5 years ago
Ezgi Çiçek 4cd595aebd [pulse] Add naive model for array length in Java
5 years ago
Ezgi Çiçek 598a4d5a55 [pulse] Ignore Exceptional CF
5 years ago
Ezgi Çiçek cb9bb2a73c [pulse] Add simplified models for Java iterators and `Object.equals`
5 years ago
Nikos Gorogiannis 91fa6a5404 [typ] extract Procname from Typ
5 years ago
Nikos Gorogiannis 33352623a5 [typ] extract Fieldname from Typ
5 years ago
Nikos Gorogiannis 59a95b316c [typ][fieldname] simplify and streamline interface
5 years ago
Sungkeun Cho bc5f740945 [infer] make deadcode is back
5 years ago
Jules Villard 9366c94bbc [pulse] avoid false positives involving `folly::fbstring`
5 years ago
Jules Villard 0a59e83190 [pulse] debug info about contradictions
5 years ago
Jules Villard e06a43a677 [pulsebo] use inferbo more in summaries
5 years ago
Jules Villard 1bde1ef0f0 [pulse] use inferbo's prune in `PRUNE` nodes
5 years ago
Jules Villard 6a8a811e69 [pulse][minor] simplifications in PulseOperations pruning
5 years ago
Jules Villard dd5adb9791 [pulse] add inferbo information to models
5 years ago
Jules Villard eb52b28f91 [pulsebo] use inferbo in prunes
5 years ago
Jules Villard d9f5d8779b [pulsebo] more binary operators
5 years ago
Jules Villard 2316608b85 [pulsebo] Bottom intervals cannot appear in an abstract state
5 years ago
Jules Villard 70fc1ab44a [pulse] eval unops using inferbo
5 years ago
Josh Berdine 3c6e2469de [ocamlformat] Enable parsing and reformatting docstrings
5 years ago
Sungkeun Cho 82db1c1350 [pulse] Share subst function of itv
5 years ago
Jules Villard 9610ceb4b8 [pulse] substitute inferbo attributes in callee summaries
5 years ago
Jules Villard df49f318f6 [pulse] havoc formals passed by reference to unknown procedures
5 years ago
Jules Villard 32f60f3d3c [pulse] model the fact `free(0)` is a no-op
5 years ago
Jules Villard 3fbefbad34 [pulse] model some of `std::atomic`
5 years ago
Sungkeun Cho da849cc320 [pulse] Add binop arithmetic for BoItv
5 years ago
Sungkeun Cho 61ae040077 [pulse] Add bo_itv to pulse attributes
5 years ago
Ezgi Çiçek fb56f42716 [infer] Rename value to arg_payload in ProcnameDispatcher.Call.FuncArg
5 years ago
Ezgi Çiçek eb8c8af117 [pulse] Move models to ProcnameDispatcher style
5 years ago
Ezgi Çiçek 3d181bd831 [infer] Polymorphic value type for `FuncArg`
5 years ago
Jules Villard 997948914f [IR] remove dead no_return CallFlag
5 years ago
Jules Villard f81c9d56e3 [pulse] arithmetic operations
5 years ago
Jules Villard 6ecf4066e8 [pulse] model std::integral_constant
5 years ago
Jules Villard 6df4fb6a9b [pulse] report dereference of NULL and constants
5 years ago
Jules Villard a107b2dd2d [pulse] do not invalidate object *values* on destruction
5 years ago
Josh Berdine 8d20e4d64d [ocamlformat] Upgrade ocamlformat version
5 years ago
Ezgi Çiçek 9e5307b339 [pulse][impurity] Add Pulse Java models for get and cast
5 years ago
Jules Villard 2358c7b529 [pulse] add tracing of arithmetic facts
5 years ago
Jules Villard 00e5ec5a4c [pulse] separate traces from their action
5 years ago
Jules Villard 2e4fbb7fe5 [pulse] intervals!
5 years ago
Jules Villard b20c22a5ee [pulse] abduce arithmetic facts
5 years ago
Jules Villard 702602dcec [pulse] check MustBeValid from preconditions all at once at the end
5 years ago
Jules Villard 36ffe4722b [pulse] stop the analysis when precondition cannot be applied for reasons others than errors
5 years ago
Nikos Gorogiannis e9b0ca9ce4 [AI] rename Domain.( <= ) to Domain.leq
5 years ago
Jules Villard 127ba72982 [pulse][minor] reduce code duplication for attribute "getters"
5 years ago
Jules Villard 0f625659d0 [pulse][minor] refactor `check_valid` to expose `abduce_attribute`
5 years ago
Jules Villard b6a343f7a0 [pulse] no need to expose `PulseOperations.TBool`
5 years ago
Jules Villard 991685dba0 [pulse][trivial] unused module open
5 years ago
Jules Villard cf6f107b88 [pulse][11/9] carve out PulseBaseStack
5 years ago
Jules Villard 2fd3f9a37b [pulse][10/9] carve out PulseBaseMemory
5 years ago
Jules Villard 1652144176 [pulse][9/9] add PulseDiagnostic to PulseBasicInterface
5 years ago
Jules Villard e3285d1340 [pulse][8/9] Domain interface
5 years ago
Jules Villard 72ee18e445 [pulse][7/9] kill `AddrTracePair`
5 years ago
Jules Villard 4ded39240f [pulse][6/9] add PulseAbstractValue to PulseBasicInterface
5 years ago
Jules Villard 994d35ed38 [pulse][5/9] add PulseAttribute{,s} to PulseBasicInterface
5 years ago
Jules Villard 27c0d7258d [pulse][4/9] add PulseTrace to PulseBasicInterface
5 years ago
Jules Villard 8251e2dea8 [pulse][3/9] add PulseValueHistory to PulseBasicInterface
5 years ago
Jules Villard 168237a605 [pulse][2/9] add PulseInvalidation to PulseBasicInterface
5 years ago
Jules Villard c909d6bd7e [pulse][1/9] create PulseBasicInterface, with CallEvent
5 years ago
Jules Villard 6a738045fd [pulse] interprocedural histories and traces
5 years ago
Jules Villard 4e3188a127 [pulse][minor] reorder arguments of AddressOfStackVariable
5 years ago
Jules Villard 669383d315 [pulse] more details about variable declaration events
5 years ago
Jules Villard 3e0c9809b9 [pulse][minor] alphabetise events and inline single-field record
5 years ago
Jules Villard fcbcfc3913 [pulse][minor] easier-to-understand debug output
5 years ago
Jules Villard 65debe4fe0 [pulse][minor] put call events in a submodule
5 years ago
Jules Villard 96c96a8dc6 [pulse] remember equalities found in branches
5 years ago
Jules Villard 3ac8e27062 [pulse] use constant equality to prune unfeasible paths
5 years ago
Jules Villard 98e27f5c4a [pulse] record equality to constants as attributes
5 years ago
Jules Villard 362e9cc622 [pulse] do not print `()` after functions
5 years ago
Jules Villard 3e2f36bf6d [pulse][trivial] change debug output of addresses to `vN`
5 years ago
Jules Villard f2b4536970 [pulse][trivial] OCaml can infer the modules on its own
5 years ago
Jules Villard 807cc727b5 [pulse] use `Memory.add_attribute` for singleton attributes sets
5 years ago
Jules Villard c455ac02f4 [pulse] array indices need not be valid addresses
5 years ago
Jules Villard b6557ba2b4 [pulse][minor] alphabetise attributes
5 years ago
Ezgi Çiçek c5ca4db8d0 [pulse][impurity] Use pulse for detecting impurity
6 years ago
Sungkeun Cho a50fcaf2dd [infer] Use inline record for Sil.Load and Sil.Store
6 years ago
Ezgi Çiçek a18e22ef7f [pulse] Remove empty edges and their WrittenTo from post
6 years ago
Jules Villard 0911a1297a [pulse] do not record addresses of logical variables
6 years ago
Jules Villard 22c5acd236 [pulse] utility method `PulseDomain.Memory.pp_edges`
6 years ago
Ezgi Çiçek 8081dbfbf1 [pulse] Record the trace of the address written to
6 years ago
Ezgi Çiçek 675c79480d [pulse] Record writes explicitly as Attributes and get rid of heuristic in is_cell_read_only
6 years ago
Ezgi Çiçek 127902222d [pulse] Filter AddressOfStackVariable from read only heuristic check
6 years ago
Ezgi Çiçek 09ab685c7e [pulse] Handle stack refs escaping their scope via pointer
6 years ago
Ezgi Çiçek cb4a16b460 [pulse] Fix marking of AddressOfCppTemporary in the loop
6 years ago
Ezgi Çiçek 4d1b300e5b [pulse] Remove bindings with empty edges in pre
6 years ago
Jules Villard a504a67ec2 [pulse] model some of `std::basic_string`
6 years ago
Jules Villard 14b9975cf3 [pulse] support modelling destructors
6 years ago
Jules Villard d9aadf5df2 [pulse] allow models in invalidation traces
6 years ago