diff --git a/infer/src/pulse/PulseInterproc.ml b/infer/src/pulse/PulseInterproc.ml index 2947b26e79b..9713bdcfa80 100644 --- a/infer/src/pulse/PulseInterproc.ml +++ b/infer/src/pulse/PulseInterproc.ml @@ -729,18 +729,17 @@ let apply_post path callee_proc_name call_location callee_summary call_state = {call_state with subst; rev_subst} in let r = + call_state + |> conjoin_callee_arith `Post (AbductiveDomain.Summary.get_path_condition callee_summary) (* subst was suitable for pre but post may know more equalities, take them into account now *) - normalize_subst_for_post call_state - |> apply_unknown_effects callee_summary - |> apply_post_from_callee_pre path callee_proc_name call_location callee_summary + >>| normalize_subst_for_post + >>| apply_unknown_effects callee_summary + >>= apply_post_from_callee_pre path callee_proc_name call_location callee_summary >>= apply_post_from_callee_post path callee_proc_name call_location callee_summary >>| add_attributes `Post path callee_proc_name call_location (AbductiveDomain.Summary.get_post callee_summary).attrs >>| record_skipped_calls callee_proc_name call_location callee_summary >>| record_need_closure_specialization callee_summary - >>= conjoin_callee_arith `Post (AbductiveDomain.Summary.get_path_condition callee_summary) - (* normalize subst again now that we know more arithmetic facts *) - >>| normalize_subst_for_post >>| read_return_value path callee_proc_name call_location callee_summary in PerfEvent.(log (fun logger -> log_end_event logger ())) ; diff --git a/infer/tests/codetoanalyze/c/pulse/issues.exp b/infer/tests/codetoanalyze/c/pulse/issues.exp index c0513332a56..2f5cd0c1190 100644 --- a/infer/tests/codetoanalyze/c/pulse/issues.exp +++ b/infer/tests/codetoanalyze/c/pulse/issues.exp @@ -11,18 +11,18 @@ codetoanalyze/c/pulse/frontend_compound_literal.c, init_with_compound_literal_np codetoanalyze/c/pulse/frontend_struct_initlistexpr.c, point_coords_set_correctly_npe_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/c/pulse/frontend_struct_initlistexpr.c, field_set_correctly_npe_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/c/pulse/frontend_struct_initlistexpr.c, implicit_expr_set_correctly_npe_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/c/pulse/funptr.c, test_syntactic_specialization_bad, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [parameter `ptr` of test_syntactic_specialization_bad,in call to `call_call_funptr[specialized with functions]`,parameter `ptr` of call_call_funptr[specialized with functions],in call to `call_funptr[specialized with functions]`,parameter `ptr` of call_funptr[specialized with functions],in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,return from call to `call_funptr[specialized with functions]`,return from call to `call_call_funptr[specialized with functions]`,invalid access occurs here] -codetoanalyze/c/pulse/funptr.c, test_returned_funptr_specialization_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [parameter `ptr` of test_returned_funptr_specialization_bad,in call to `call_call_funptr[specialized with functions]`,parameter `ptr` of call_call_funptr[specialized with functions],in call to `call_funptr[specialized with functions]`,parameter `ptr` of call_funptr[specialized with functions],in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,return from call to `call_funptr[specialized with functions]`,return from call to `call_call_funptr[specialized with functions]`,invalid access occurs here] -codetoanalyze/c/pulse/funptr.c, funptr_if_bad, 10, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,invalid access occurs here] -codetoanalyze/c/pulse/funptr.c, funptr_else_bad, 10, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,invalid access occurs here] -codetoanalyze/c/pulse/funptr.c, funptr_conditional_call, 9, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [variable `ptr` declared here,in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,invalid access occurs here] -codetoanalyze/c/pulse/funptr.c, funptr_conditional_call_bad, 0, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,when calling `funptr_conditional_call` here,variable `ptr` declared here,in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,invalid access occurs here] -codetoanalyze/c/pulse/funptr.c, funptr_apply_funptr_with_intptrptr_specialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `apply_funptr_with_intptrptr[specialized with functions]`,parameter `ptr` of apply_funptr_with_intptrptr[specialized with functions],in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,return from call to `apply_funptr_with_intptrptr[specialized with functions]`,invalid access occurs here] -codetoanalyze/c/pulse/funptr.c, apply_funptr_with_intptrptr_and_after[specialized with functions], 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [parameter `ptr` of apply_funptr_with_intptrptr_and_after[specialized with functions],in call to `apply_funptr_with_intptrptr[specialized with functions]`,parameter `ptr` of apply_funptr_with_intptrptr[specialized with functions],in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,return from call to `apply_funptr_with_intptrptr[specialized with functions]`,when calling `dereference_dereference_ptr` here,parameter `ptr` of dereference_dereference_ptr,invalid access occurs here] +codetoanalyze/c/pulse/funptr.c, test_syntactic_specialization_bad, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `call_call_funptr[specialized with functions]`,in call to `call_funptr[specialized with functions]`,in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,return from call to `call_funptr[specialized with functions]`,return from call to `call_call_funptr[specialized with functions]`,invalid access occurs here] +codetoanalyze/c/pulse/funptr.c, test_returned_funptr_specialization_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `call_call_funptr[specialized with functions]`,in call to `call_funptr[specialized with functions]`,in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,return from call to `call_funptr[specialized with functions]`,return from call to `call_call_funptr[specialized with functions]`,invalid access occurs here] +codetoanalyze/c/pulse/funptr.c, funptr_if_bad, 10, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,invalid access occurs here] +codetoanalyze/c/pulse/funptr.c, funptr_else_bad, 10, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,invalid access occurs here] +codetoanalyze/c/pulse/funptr.c, funptr_conditional_call, 9, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,invalid access occurs here] +codetoanalyze/c/pulse/funptr.c, funptr_conditional_call_bad, 0, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,when calling `funptr_conditional_call` here,in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,invalid access occurs here] +codetoanalyze/c/pulse/funptr.c, funptr_apply_funptr_with_intptrptr_specialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `apply_funptr_with_intptrptr[specialized with functions]`,in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,return from call to `apply_funptr_with_intptrptr[specialized with functions]`,invalid access occurs here] +codetoanalyze/c/pulse/funptr.c, apply_funptr_with_intptrptr_and_after[specialized with functions], 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `apply_funptr_with_intptrptr[specialized with functions]`,in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,return from call to `apply_funptr_with_intptrptr[specialized with functions]`,when calling `dereference_dereference_ptr` here,parameter `ptr` of dereference_dereference_ptr,invalid access occurs here] codetoanalyze/c/pulse/funptr.c, funptr_conditionnaly_apply_funptr_with_intptrptr_unspecialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,in call to `conditionnaly_apply_funptr_with_intptrptr`,is assigned to the null pointer,assigned,return from call to `conditionnaly_apply_funptr_with_intptrptr`,invalid access occurs here] -codetoanalyze/c/pulse/funptr.c, funptr_conditionnaly_apply_funptr_with_intptrptr_specialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `conditionnaly_apply_funptr_with_intptrptr[specialized with functions]`,is assigned to the null pointer,assigned,return from call to `conditionnaly_apply_funptr_with_intptrptr[specialized with functions]`,invalid access occurs here] -codetoanalyze/c/pulse/funptr.c, test_assign_NULL_callback_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [parameter `ptr` of test_assign_NULL_callback_bad,in call to `apply_callback[specialized with functions]`,parameter `ptr` of apply_callback[specialized with functions],in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,return from call to `apply_callback[specialized with functions]`,invalid access occurs here] -codetoanalyze/c/pulse/funptr.c, test_update_callback_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [parameter `ptr` of test_update_callback_bad,in call to `apply_callback[specialized with functions]`,parameter `ptr` of apply_callback[specialized with functions],in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,return from call to `apply_callback[specialized with functions]`,invalid access occurs here] +codetoanalyze/c/pulse/funptr.c, funptr_conditionnaly_apply_funptr_with_intptrptr_specialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `conditionnaly_apply_funptr_with_intptrptr[specialized with functions]`,is assigned to the null pointer,assigned,return from call to `conditionnaly_apply_funptr_with_intptrptr[specialized with functions]`,invalid access occurs here] +codetoanalyze/c/pulse/funptr.c, test_assign_NULL_callback_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `apply_callback[specialized with functions]`,in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,return from call to `apply_callback[specialized with functions]`,invalid access occurs here] +codetoanalyze/c/pulse/funptr.c, test_update_callback_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `apply_callback[specialized with functions]`,in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,return from call to `apply_callback[specialized with functions]`,invalid access occurs here] codetoanalyze/c/pulse/integers.c, FPlatent_even_cannot_be_odd_fields_ok, 5, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [parameter `x` of FPlatent_even_cannot_be_odd_fields_ok,taking "else" branch,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/c/pulse/integers.c, float_div_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [assigned,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/c/pulse/integers.c, float_comparison_latent, 3, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [parameter `f` of float_comparison_latent,is assigned to the constant 2,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] @@ -32,8 +32,8 @@ codetoanalyze/c/pulse/interprocedural.c, call_if_freed_invalid2_bad, 0, NULLPTR_ codetoanalyze/c/pulse/interprocedural.c, test_modified_value_then_error_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/c/pulse/interprocedural.c, latent, 3, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [parameter `a` of latent,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/c/pulse/interprocedural.c, make_latent_manifest, 0, NULLPTR_DEREFERENCE, no_bucket, ERROR, [when calling `propagate_latent_3_latent` here,when calling `propagate_latent_2_latent` here,when calling `propagate_latent_1_latent` here,when calling `latent` here,parameter `a` of latent,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/c/pulse/interprocedural.c, follow_value_by_ref_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `y` declared here,in call to `return_null`,is assigned to the null pointer,assigned,assigned,return from call to `return_null`,in call to `return_first`,parameter `x` of return_first,assigned,assigned,return from call to `return_first`,invalid access occurs here] -codetoanalyze/c/pulse/interprocedural.c, follow_value_by_ret_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `dummy1` declared here,in call to `return_null`,is assigned to the null pointer,assigned,returned,return from call to `return_null`,assigned,in call to `return_first`,parameter `x` of return_first,assigned,returned,return from call to `return_first`,assigned,invalid access occurs here] +codetoanalyze/c/pulse/interprocedural.c, follow_value_by_ref_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `return_null`,is assigned to the null pointer,assigned,assigned,return from call to `return_null`,in call to `return_first`,parameter `x` of return_first,assigned,assigned,return from call to `return_first`,invalid access occurs here] +codetoanalyze/c/pulse/interprocedural.c, follow_value_by_ret_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `return_null`,is assigned to the null pointer,assigned,returned,return from call to `return_null`,assigned,in call to `return_first`,parameter `x` of return_first,assigned,returned,return from call to `return_first`,assigned,invalid access occurs here] codetoanalyze/c/pulse/interprocedural.c, trace_correctly_through_wrappers_bad, 4, MEMORY_LEAK_C, no_bucket, ERROR, [allocation part of the trace starts here,when calling `malloc_wrapper_2` here,when calling `malloc_wrapper_1` here,allocated by `malloc` here,memory becomes unreachable here] codetoanalyze/c/pulse/issues_abort_execution.c, FN_uninit_continues_execution_bad, 2, PULSE_UNINITIALIZED_VALUE, no_bucket, ERROR, [variable `x` declared here,read to uninitialized value occurs here] codetoanalyze/c/pulse/issues_abort_execution.c, leak_bad, 2, MEMORY_LEAK_C, no_bucket, ERROR, [allocation part of the trace starts here,allocated by `malloc` here,macro expanded here,memory becomes unreachable here] @@ -77,7 +77,7 @@ codetoanalyze/c/pulse/nullptr.c, unknown_from_parameters_latent, 3, NULLPTR_DERE codetoanalyze/c/pulse/nullptr.c, random_non_functional_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/c/pulse/nullptr.c, random_modelled_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [parameter `y` of random_modelled_bad,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/c/pulse/nullptr.c, FNsuppressed_no_invalidation_compare_to_NULL_bad, 7, NULLPTR_DEREFERENCE, no_bucket, ERROR, [*** SUPPRESSED ***,source of the null value part of the trace starts here,assigned,is assigned to the null pointer,null pointer dereference part of the trace starts here,in call to function `unknown_int_pointer` with no summary,assigned,is assigned to the null pointer,taking "then" branch,assigned,invalid access occurs here] -codetoanalyze/c/pulse/nullptr.c, call_incr_deref_with_alias_bad, 7, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `x` declared here,assigned,in call to `incr_deref`,parameter `x` of incr_deref,is assigned to the constant 1,assigned,is assigned to the constant 1,assigned,return from call to `incr_deref`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/c/pulse/nullptr.c, call_incr_deref_with_alias_bad, 7, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `incr_deref`,parameter `x` of incr_deref,is assigned to the constant 1,assigned,is assigned to the constant 1,assigned,return from call to `incr_deref`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/c/pulse/taint_var_arg.c, printf_source_bad1, 0, TAINT_ERROR, no_bucket, ERROR, [source of the taint here: value returned from `int_source` with kind `Simple`,value passed as argument `#2` to `printf` with kind `Simple`], source: int_source, sink: printf, tainted expression: int_source() codetoanalyze/c/pulse/taint_var_arg.c, printf_source_bad2, 1, TAINT_ERROR, no_bucket, ERROR, [source of the taint here: value returned from `int_source` with kind `Simple`,value passed as argument `#2` to `printf` with kind `Simple`], source: int_source, sink: printf, tainted expression: int_source() codetoanalyze/c/pulse/taint_var_arg.c, printf_source_bad3, 1, TAINT_ERROR, no_bucket, ERROR, [source of the taint here: value returned from `float_source` with kind `Simple`,value passed as argument `#3` to `printf` with kind `Simple`], source: float_source, sink: printf, tainted expression: float_source() diff --git a/infer/tests/codetoanalyze/cpp/pulse-17/issues.exp b/infer/tests/codetoanalyze/cpp/pulse-17/issues.exp index 711042fdbb2..f74b890734c 100644 --- a/infer/tests/codetoanalyze/cpp/pulse-17/issues.exp +++ b/infer/tests/codetoanalyze/cpp/pulse-17/issues.exp @@ -4,8 +4,8 @@ codetoanalyze/cpp/pulse-17/make_shared.cpp, make_shared_ptr::SharedPtr::SharedPt codetoanalyze/cpp/pulse-17/make_shared.cpp, make_shared_ptr::make_shared0_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the constant 42,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse-17/make_shared.cpp, make_shared_ptr::make_shared1_bad, 7, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the constant 42,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse-17/make_shared.cpp, make_shared_ptr::make_shared2_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `std::make_shared()` (modelled),in call to `std::shared_ptr::use_count()` (modelled),taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse-17/make_shared.cpp, make_shared_ptr::make_shared3_bad, 2, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `C++ temporary` declared here,in call to `make_shared_ptr::X::X`,allocated by call to `new` (modelled),assigned,return from call to `make_shared_ptr::X::X`,when calling `make_shared_ptr::X::~X` here,parameter `this` of make_shared_ptr::X::~X,when calling `make_shared_ptr::X::__infer_inner_destructor_~X` here,parameter `this` of make_shared_ptr::X::__infer_inner_destructor_~X,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `C++ temporary` declared here,in call to `make_shared_ptr::X::X`,allocated by call to `new` (modelled),assigned,return from call to `make_shared_ptr::X::X`,in call to `make_shared_ptr::X::X`,parameter `__param_0` of make_shared_ptr::X::X,assigned,return from call to `make_shared_ptr::X::X`,when calling `make_shared_ptr::X::get` here,parameter `this` of make_shared_ptr::X::get,invalid access occurs here] -codetoanalyze/cpp/pulse-17/make_shared.cpp, make_shared_ptr::make_shared4_bad, 6, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `obj` declared here,in call to `make_shared_ptr::X::X`,allocated by call to `new` (modelled),assigned,return from call to `make_shared_ptr::X::X`,in call to `make_shared_ptr::X::X`,parameter `__param_0` of make_shared_ptr::X::X,assigned,return from call to `make_shared_ptr::X::X`,when calling `make_shared_ptr::X::~X` here,parameter `this` of make_shared_ptr::X::~X,when calling `make_shared_ptr::X::__infer_inner_destructor_~X` here,parameter `this` of make_shared_ptr::X::__infer_inner_destructor_~X,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `obj` declared here,in call to `make_shared_ptr::X::X`,allocated by call to `new` (modelled),assigned,return from call to `make_shared_ptr::X::X`,when calling `make_shared_ptr::X::~X` here,parameter `this` of make_shared_ptr::X::~X,when calling `make_shared_ptr::X::__infer_inner_destructor_~X` here,parameter `this` of make_shared_ptr::X::__infer_inner_destructor_~X,invalid access occurs here] +codetoanalyze/cpp/pulse-17/make_shared.cpp, make_shared_ptr::make_shared3_bad, 2, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `make_shared_ptr::X::X`,allocated by call to `new` (modelled),assigned,return from call to `make_shared_ptr::X::X`,when calling `make_shared_ptr::X::~X` here,parameter `this` of make_shared_ptr::X::~X,when calling `make_shared_ptr::X::__infer_inner_destructor_~X` here,parameter `this` of make_shared_ptr::X::__infer_inner_destructor_~X,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `make_shared_ptr::X::X`,allocated by call to `new` (modelled),assigned,return from call to `make_shared_ptr::X::X`,in call to `make_shared_ptr::X::X`,parameter `__param_0` of make_shared_ptr::X::X,assigned,return from call to `make_shared_ptr::X::X`,when calling `make_shared_ptr::X::get` here,parameter `this` of make_shared_ptr::X::get,invalid access occurs here] +codetoanalyze/cpp/pulse-17/make_shared.cpp, make_shared_ptr::make_shared4_bad, 6, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `make_shared_ptr::X::X`,allocated by call to `new` (modelled),assigned,return from call to `make_shared_ptr::X::X`,in call to `make_shared_ptr::X::X`,parameter `__param_0` of make_shared_ptr::X::X,assigned,return from call to `make_shared_ptr::X::X`,when calling `make_shared_ptr::X::~X` here,parameter `this` of make_shared_ptr::X::~X,when calling `make_shared_ptr::X::__infer_inner_destructor_~X` here,parameter `this` of make_shared_ptr::X::__infer_inner_destructor_~X,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `make_shared_ptr::X::X`,allocated by call to `new` (modelled),assigned,return from call to `make_shared_ptr::X::X`,when calling `make_shared_ptr::X::~X` here,parameter `this` of make_shared_ptr::X::~X,when calling `make_shared_ptr::X::__infer_inner_destructor_~X` here,parameter `this` of make_shared_ptr::X::__infer_inner_destructor_~X,invalid access occurs here] codetoanalyze/cpp/pulse-17/make_shared.cpp, make_shared_ptr::make_shared5_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `make_shared_ptr::Integer::Integer`,parameter `value2` of make_shared_ptr::Integer::Integer,assigned,return from call to `make_shared_ptr::Integer::Integer`,in call to `make_shared_ptr::Integer::get`,parameter `this` of make_shared_ptr::Integer::get,returned,return from call to `make_shared_ptr::Integer::get`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse-17/make_shared.cpp, make_shared_ptr::make_shared6_bad, 7, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the constant 42,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse-17/make_shared.cpp, make_shared_ptr::take_shared_ptr_get_fresh_unique_ptr, 2, PULSE_UNNECESSARY_COPY_INTERMEDIATE, no_bucket, ERROR, [copied here (with type `std::shared_ptr&`)] @@ -13,10 +13,10 @@ codetoanalyze/cpp/pulse-17/make_shared.cpp, make_shared_ptr::passed_shared_ptr_a codetoanalyze/cpp/pulse-17/make_shared.cpp, make_shared_ptr::get_unique_ptr_from_shared, 0, PULSE_READONLY_SHARED_PTR_PARAM, no_bucket, ERROR, [Parameter s_ptr with type `std::shared_ptr`,used] codetoanalyze/cpp/pulse-17/make_shared.cpp, make_shared_ptr::doubly_managed_ptr_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `C++ temporary` declared here,in call to `std::make_shared()` (modelled),in call to `std::make_shared()` (modelled),in call to `std::shared_ptr::shared_ptr(std::shared_ptr) (copy)` (modelled),in call to `make_shared_ptr::get_unique_ptr_from_shared`,parameter `s_ptr` of make_shared_ptr::get_unique_ptr_from_shared,in call to `std::shared_ptr::get()` (modelled),in call to `std::unique_ptr::unique_ptr(T*)` (modelled),return from call to `make_shared_ptr::get_unique_ptr_from_shared`,in call to `std::unique_ptr::~unique_ptr()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `C++ temporary` declared here,in call to `std::make_shared()` (modelled),in call to `std::make_shared()` (modelled),in call to `std::shared_ptr::~shared_ptr()` (modelled),invalid access occurs here] codetoanalyze/cpp/pulse-17/make_unique.cpp, make_unique_ptr::make_unique0_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the constant 42,assigned,in call to `std::make_unique`,parameter `__args` of std::make_unique,macro expanded here,in call to `std::forward`,parameter `__t` of std::forward,returned,macro expanded here,return from call to `std::forward`,assigned,return from call to `std::make_unique`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse-17/make_unique.cpp, make_unique_ptr::make_unique1_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,struct field address `pointer_field` created,in call to `make_unique_ptr::X::X`,allocated by call to `new` (modelled),assigned,return from call to `make_unique_ptr::X::X`,when calling `make_unique_ptr::X::~X` here,parameter `this` of make_unique_ptr::X::~X,when calling `make_unique_ptr::X::__infer_inner_destructor_~X` here,parameter `this` of make_unique_ptr::X::__infer_inner_destructor_~X,was invalidated by `delete`,use-after-lifetime part of the trace starts here,struct field address `pointer_field` created,in call to `make_unique_ptr::X::X`,allocated by call to `new` (modelled),assigned,return from call to `make_unique_ptr::X::X`,in call to `std::make_unique`,parameter `__args` of std::make_unique,macro expanded here,in call to `std::forward`,parameter `__t` of std::forward,returned,macro expanded here,return from call to `std::forward`,in call to `make_unique_ptr::X::X`,parameter `__param_0` of make_unique_ptr::X::X,assigned,return from call to `make_unique_ptr::X::X`,return from call to `std::make_unique`,when calling `make_unique_ptr::X::~X` here,parameter `this` of make_unique_ptr::X::~X,when calling `make_unique_ptr::X::__infer_inner_destructor_~X` here,parameter `this` of make_unique_ptr::X::__infer_inner_destructor_~X,invalid access occurs here] -codetoanalyze/cpp/pulse-17/make_unique.cpp, make_unique_ptr::make_unique2_bad, 6, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,struct field address `pointer_field` created,in call to `make_unique_ptr::X::X`,allocated by call to `new` (modelled),assigned,return from call to `make_unique_ptr::X::X`,in call to `std::make_unique<56462c074508ed>`,parameter `__args` of std::make_unique<56462c074508ed>,macro expanded here,in call to `std::forward`,parameter `__t` of std::forward,returned,macro expanded here,return from call to `std::forward`,in call to `make_unique_ptr::X::X`,parameter `__param_0` of make_unique_ptr::X::X,assigned,return from call to `make_unique_ptr::X::X`,return from call to `std::make_unique<56462c074508ed>`,when calling `make_unique_ptr::X::~X` here,parameter `this` of make_unique_ptr::X::~X,when calling `make_unique_ptr::X::__infer_inner_destructor_~X` here,parameter `this` of make_unique_ptr::X::__infer_inner_destructor_~X,was invalidated by `delete`,use-after-lifetime part of the trace starts here,struct field address `pointer_field` created,in call to `make_unique_ptr::X::X`,allocated by call to `new` (modelled),assigned,return from call to `make_unique_ptr::X::X`,when calling `make_unique_ptr::X::~X` here,parameter `this` of make_unique_ptr::X::~X,when calling `make_unique_ptr::X::__infer_inner_destructor_~X` here,parameter `this` of make_unique_ptr::X::__infer_inner_destructor_~X,invalid access occurs here] +codetoanalyze/cpp/pulse-17/make_unique.cpp, make_unique_ptr::make_unique1_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `make_unique_ptr::X::X`,allocated by call to `new` (modelled),assigned,return from call to `make_unique_ptr::X::X`,when calling `make_unique_ptr::X::~X` here,parameter `this` of make_unique_ptr::X::~X,when calling `make_unique_ptr::X::__infer_inner_destructor_~X` here,parameter `this` of make_unique_ptr::X::__infer_inner_destructor_~X,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `make_unique_ptr::X::X`,allocated by call to `new` (modelled),assigned,return from call to `make_unique_ptr::X::X`,in call to `std::make_unique`,parameter `__args` of std::make_unique,macro expanded here,in call to `std::forward`,parameter `__t` of std::forward,returned,macro expanded here,return from call to `std::forward`,in call to `make_unique_ptr::X::X`,parameter `__param_0` of make_unique_ptr::X::X,assigned,return from call to `make_unique_ptr::X::X`,return from call to `std::make_unique`,when calling `make_unique_ptr::X::~X` here,parameter `this` of make_unique_ptr::X::~X,when calling `make_unique_ptr::X::__infer_inner_destructor_~X` here,parameter `this` of make_unique_ptr::X::__infer_inner_destructor_~X,invalid access occurs here] +codetoanalyze/cpp/pulse-17/make_unique.cpp, make_unique_ptr::make_unique2_bad, 6, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `make_unique_ptr::X::X`,allocated by call to `new` (modelled),assigned,return from call to `make_unique_ptr::X::X`,in call to `std::make_unique<56462c074508ed>`,parameter `__args` of std::make_unique<56462c074508ed>,macro expanded here,in call to `std::forward`,parameter `__t` of std::forward,returned,macro expanded here,return from call to `std::forward`,in call to `make_unique_ptr::X::X`,parameter `__param_0` of make_unique_ptr::X::X,assigned,return from call to `make_unique_ptr::X::X`,return from call to `std::make_unique<56462c074508ed>`,when calling `make_unique_ptr::X::~X` here,parameter `this` of make_unique_ptr::X::~X,when calling `make_unique_ptr::X::__infer_inner_destructor_~X` here,parameter `this` of make_unique_ptr::X::__infer_inner_destructor_~X,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `make_unique_ptr::X::X`,allocated by call to `new` (modelled),assigned,return from call to `make_unique_ptr::X::X`,when calling `make_unique_ptr::X::~X` here,parameter `this` of make_unique_ptr::X::~X,when calling `make_unique_ptr::X::__infer_inner_destructor_~X` here,parameter `this` of make_unique_ptr::X::__infer_inner_destructor_~X,invalid access occurs here] codetoanalyze/cpp/pulse-17/make_unique.cpp, make_unique_ptr::make_unique3_bad, 7, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the constant 42,assigned,in call to `std::make_unique`,parameter `__args` of std::make_unique,macro expanded here,in call to `std::forward`,parameter `__t` of std::forward,returned,macro expanded here,return from call to `std::forward`,assigned,return from call to `std::make_unique`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse-17/make_unique.cpp, make_unique_ptr::make_unique_ptr_release_bad, 2, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,variable `x` declared here,when calling `std::make_unique` here,allocated by call to `new` (modelled),when calling `make_unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] +codetoanalyze/cpp/pulse-17/make_unique.cpp, make_unique_ptr::make_unique_ptr_release_bad, 2, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,when calling `std::make_unique` here,when calling `make_unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] codetoanalyze/cpp/pulse-17/shared_lock.cpp, SharedLock::constructor_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `std::shared_lock::shared_lock()` (modelled),is assigned to the null pointer,in call to `std::shared_lock::mutex()` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse-17/shared_lock.cpp, SharedLock::copy_null_deref_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `std::shared_lock::shared_lock()` (modelled),is assigned to the null pointer,in call to `std::shared_lock::shared_lock(std::shared_lock)` (modelled),in call to `std::shared_lock::mutex()` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse-17/shared_lock.cpp, SharedLock::assign_null_deref_bad, 6, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `std::shared_lock::shared_lock()` (modelled),is assigned to the null pointer,in call to `std::shared_lock::operator=(std::shared_lock)` (modelled),in call to `std::shared_lock::mutex()` (modelled),assigned,invalid access occurs here] @@ -32,8 +32,8 @@ codetoanalyze/cpp/pulse-17/std_optional.cpp, std_assign2_bad, 4, OPTIONAL_EMPTY_ codetoanalyze/cpp/pulse-17/std_optional.cpp, std_emplace, 4, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [*** SUPPRESSED ***,source of the null value part of the trace starts here,is assigned to the null pointer,null pointer dereference part of the trace starts here,parameter `state` of std_emplace,invalid access occurs here] codetoanalyze/cpp/pulse-17/std_optional.cpp, std_operator_arrow_bad, 0, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [in call to `std::optional::optional(=nullopt)` (modelled),is assigned an empty value,when calling `std_emplace` here,parameter `state` of std_emplace,invalid access occurs here] codetoanalyze/cpp/pulse-17/std_optional.cpp, might_return_none, 0, PULSE_CONST_REFABLE, no_bucket, ERROR, [Parameter x with type `std::basic_string,std::allocator>`] -codetoanalyze/cpp/pulse-17/std_optional.cpp, FP_cannot_be_empty, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `getEnum`,in call to function `getenv` with no summary,assigned,taking "then" branch,is assigned to the null pointer,returned,return from call to `getEnum`,taking "then" branch,variable `C++ temporary` declared here,in call to `getOptionalValue`,in call to `std::optional::optional(=nullopt)` (modelled),is assigned an empty value,return from call to `getOptionalValue`,invalid access occurs here] -codetoanalyze/cpp/pulse-17/std_optional.cpp, inside_try_catch_FP, 3, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [variable `foo` accessed here,in call to `might_return_none`,parameter `b` of might_return_none,taking "then" branch,in call to `std::optional::optional(=nullopt)` (modelled),is assigned an empty value,return from call to `might_return_none`,invalid access occurs here] +codetoanalyze/cpp/pulse-17/std_optional.cpp, FP_cannot_be_empty, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `getEnum`,in call to function `getenv` with no summary,assigned,taking "then" branch,is assigned to the null pointer,returned,return from call to `getEnum`,taking "then" branch,in call to `getOptionalValue`,in call to `std::optional::optional(=nullopt)` (modelled),is assigned an empty value,return from call to `getOptionalValue`,invalid access occurs here] +codetoanalyze/cpp/pulse-17/std_optional.cpp, inside_try_catch_FP, 3, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [in call to `might_return_none`,parameter `b` of might_return_none,taking "then" branch,in call to `std::optional::optional(=nullopt)` (modelled),is assigned an empty value,return from call to `might_return_none`,invalid access occurs here] codetoanalyze/cpp/pulse-17/unnecessary_copy.cpp, unnecessary_copy::call_get_optional_const_ref_bad, 2, PULSE_UNNECESSARY_COPY_OPTIONAL, no_bucket, ERROR, [copied by Optional value construction here (with type `unnecessary_copy::Arr&`)] codetoanalyze/cpp/pulse-17/unnecessary_copy.cpp, unnecessary_copy::call_get_optional_value_bad, 2, PULSE_UNNECESSARY_COPY_OPTIONAL, no_bucket, ERROR, [copied by Optional value construction here (with type `unnecessary_copy::Arr&`)] codetoanalyze/cpp/pulse-17/unnecessary_copy.cpp, unnecessary_copy::structured_binding_bad, 4, PULSE_UNNECESSARY_COPY_INTERMEDIATE, no_bucket, ERROR, [copied here (with type `std::tuple&`)] diff --git a/infer/tests/codetoanalyze/cpp/pulse/issues.exp b/infer/tests/codetoanalyze/cpp/pulse/issues.exp index 9b8be263c6a..b20bddadd0c 100644 --- a/infer/tests/codetoanalyze/cpp/pulse/issues.exp +++ b/infer/tests/codetoanalyze/cpp/pulse/issues.exp @@ -1,7 +1,7 @@ codetoanalyze/cpp/pulse/aliasing.cpp, call_ifthenderef_true_null_bad, 0, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,when calling `ifthenderef` here,parameter `x` of ifthenderef,invalid access occurs here] codetoanalyze/cpp/pulse/aliasing.cpp, call_ifnotthenderef_false_null_bad, 0, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,when calling `ifnotthenderef` here,parameter `x` of ifnotthenderef,invalid access occurs here] codetoanalyze/cpp/pulse/aliasing.cpp, null_test_after_deref_latent_FN, 1, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [*** SUPPRESSED ***,source of the null value part of the trace starts here,is assigned to the null pointer,null pointer dereference part of the trace starts here,parameter `x` of null_test_after_deref_latent_FN,invalid access occurs here] -codetoanalyze/cpp/pulse/basic_string.cpp, use_range_of_invalidated_temporary_string_bad, 2, USE_AFTER_DELETE_LATENT, no_bucket, ERROR, [invalidation part of the trace starts here,struct field address `b_` created,when calling `setLanguage` here,assigned,in call to `Range::Range`,parameter `str` of Range::Range,return from call to `Range::Range`,in call to `std::basic_string::~basic_string()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,struct field address `b_` created,in call to `setLanguage`,assigned,in call to `Range::Range`,parameter `str` of Range::Range,in call to `std::basic_string::data()` (modelled),assigned,return from call to `Range::Range`,return from call to `setLanguage`,when calling `Range::operator[]` here,parameter `this` of Range::operator[],invalid access occurs here] +codetoanalyze/cpp/pulse/basic_string.cpp, use_range_of_invalidated_temporary_string_bad, 2, USE_AFTER_DELETE_LATENT, no_bucket, ERROR, [invalidation part of the trace starts here,when calling `setLanguage` here,assigned,in call to `Range::Range`,parameter `str` of Range::Range,return from call to `Range::Range`,in call to `std::basic_string::~basic_string()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `setLanguage`,assigned,in call to `Range::Range`,parameter `str` of Range::Range,in call to `std::basic_string::data()` (modelled),assigned,return from call to `Range::Range`,return from call to `setLanguage`,when calling `Range::operator[]` here,parameter `this` of Range::operator[],invalid access occurs here] codetoanalyze/cpp/pulse/basic_string.cpp, copy_string_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [assigned,in call to `std::basic_string::length()` (modelled),is assigned to the constant 3,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/basic_string.cpp, copy_string_ok, 2, PULSE_UNNECESSARY_COPY, no_bucket, ERROR, [copied here (with type `std::basic_string,std::allocator>&`)] codetoanalyze/cpp/pulse/basics.cpp, multiple_invalidations_branch_latent, 6, USE_AFTER_DELETE_LATENT, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `ptr` of multiple_invalidations_branch_latent,was invalidated by `delete`,use-after-lifetime part of the trace starts here,parameter `ptr` of multiple_invalidations_branch_latent,invalid access occurs here] @@ -40,8 +40,8 @@ codetoanalyze/cpp/pulse/closures.cpp, call_argument, 0, PULSE_CONST_REFABLE, no_ codetoanalyze/cpp/pulse/closures.cpp, FP_update_inside_lambda_visible_outside_ok, 10, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the constant 7,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/conditional_temporaries.cpp, condtemp::Counter::Counter, 1, PULSE_UNNECESSARY_COPY_INTERMEDIATE, no_bucket, ERROR, [copied here (with type `std::basic_string,std::allocator>&`)] codetoanalyze/cpp/pulse/conditional_temporaries.cpp, condtemp::X::__infer_inner_destructor_~X, 1, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [*** SUPPRESSED ***,source of the null value part of the trace starts here,is assigned to the null pointer,null pointer dereference part of the trace starts here,parameter `this` of condtemp::X::__infer_inner_destructor_~X,when calling `condtemp::X::name` here,parameter `this` of condtemp::X::name,invalid access occurs here] -codetoanalyze/cpp/pulse/conditional_temporaries.cpp, condtemp::FP_track_copy_operations_one_copy_ok, 17, NULLPTR_DEREFERENCE, no_bucket, ERROR, [struct field address `copies` created,in call to `condtemp::Counter::Counter`,parameter `this` of condtemp::Counter::Counter,return from call to `condtemp::Counter::Counter`,condition is false,in call to `condtemp::X::X`,parameter `x` of condtemp::X::X,in call to `condtemp::X::copy_from`,parameter `x` of condtemp::X::copy_from,taking "then" branch,assigned,is assigned to the constant 1,assigned,return from call to `condtemp::X::copy_from`,return from call to `condtemp::X::X`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/conditional_temporaries.cpp, condtemp::FP_track_copy_operations_complex_ok, 16, NULLPTR_DEREFERENCE, no_bucket, ERROR, [struct field address `copies` created,in call to `condtemp::Counter::Counter`,parameter `this` of condtemp::Counter::Counter,return from call to `condtemp::Counter::Counter`,condition is true,in call to `condtemp::copy`,parameter `x` of condtemp::copy,in call to `condtemp::X::X`,parameter `x` of condtemp::X::X,in call to `condtemp::X::copy_from`,parameter `x` of condtemp::X::copy_from,taking "then" branch,assigned,is assigned to the constant 1,assigned,return from call to `condtemp::X::copy_from`,return from call to `condtemp::X::X`,return from call to `condtemp::copy`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/conditional_temporaries.cpp, condtemp::FP_track_copy_operations_one_copy_ok, 17, NULLPTR_DEREFERENCE, no_bucket, ERROR, [condition is false,in call to `condtemp::X::X`,in call to `condtemp::X::copy_from`,parameter `x` of condtemp::X::copy_from,taking "then" branch,assigned,is assigned to the constant 1,assigned,return from call to `condtemp::X::copy_from`,return from call to `condtemp::X::X`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/conditional_temporaries.cpp, condtemp::FP_track_copy_operations_complex_ok, 16, NULLPTR_DEREFERENCE, no_bucket, ERROR, [condition is true,in call to `condtemp::copy`,in call to `condtemp::X::X`,in call to `condtemp::X::copy_from`,parameter `x` of condtemp::X::copy_from,taking "then" branch,assigned,is assigned to the constant 1,assigned,return from call to `condtemp::X::copy_from`,return from call to `condtemp::X::X`,return from call to `condtemp::copy`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/conditionals.cpp, add_test3_latent, 3, USE_AFTER_FREE_LATENT, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `x` of add_test3_latent,was invalidated by call to `free()`,use-after-lifetime part of the trace starts here,parameter `x` of add_test3_latent,invalid access occurs here] codetoanalyze/cpp/pulse/conditionals.cpp, add_test5_latent, 5, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [*** SUPPRESSED ***,source of the null value part of the trace starts here,assigned,is assigned to the null pointer,null pointer dereference part of the trace starts here,parameter `x` of add_test5_latent,invalid access occurs here] codetoanalyze/cpp/pulse/conditionals.cpp, add_test5_latent, 5, USE_AFTER_FREE_LATENT, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `x` of add_test5_latent,was invalidated by call to `free()`,use-after-lifetime part of the trace starts here,parameter `x` of add_test5_latent,invalid access occurs here] @@ -71,7 +71,7 @@ codetoanalyze/cpp/pulse/deduplication.cpp, deduplication::SomeTemplatedClass::lifetime_error_bad, 2, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `a` of deduplication::SomeTemplatedClass::lifetime_error_bad,when calling `deduplication::SomeTemplatedClass::templated_wrapper_delete_ok` here,parameter `a` of deduplication::SomeTemplatedClass::templated_wrapper_delete_ok,was invalidated by `delete`,use-after-lifetime part of the trace starts here,parameter `a` of deduplication::SomeTemplatedClass::lifetime_error_bad,when calling `deduplication::SomeTemplatedClass::templated_wrapper_access_ok` here,parameter `a` of deduplication::SomeTemplatedClass::templated_wrapper_access_ok,invalid access occurs here] codetoanalyze/cpp/pulse/deduplication.cpp, deduplication::templated_function_bad<_Bool>, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,when calling `deduplication::templated_delete_function<_Bool>` here,parameter `a` of deduplication::templated_delete_function<_Bool>,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,when calling `deduplication::templated_access_function<_Bool>` here,parameter `a` of deduplication::templated_access_function<_Bool>,invalid access occurs here] codetoanalyze/cpp/pulse/deduplication.cpp, deduplication::templated_function_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,when calling `deduplication::templated_delete_function` here,parameter `a` of deduplication::templated_delete_function,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,when calling `deduplication::templated_access_function` here,parameter `a` of deduplication::templated_access_function,invalid access occurs here] -codetoanalyze/cpp/pulse/deref_after_move_example.cpp, deref_after_move_example::deref_after_move_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `p` declared here,in call to `deref_after_move_example::Person::Person`,parameter `this` of deref_after_move_example::Person::Person,return from call to `deref_after_move_example::Person::Person`,in call to `deref_after_move_example::Person::move_age`,in call to `std::unique_ptr::unique_ptr(std::unique_ptr)` (modelled),is assigned to the null pointer,return from call to `deref_after_move_example::Person::move_age`,when calling `deref_after_move_example::Person::access_age` here,parameter `this` of deref_after_move_example::Person::access_age,invalid access occurs here] +codetoanalyze/cpp/pulse/deref_after_move_example.cpp, deref_after_move_example::deref_after_move_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `deref_after_move_example::Person::move_age`,in call to `std::unique_ptr::unique_ptr(std::unique_ptr)` (modelled),is assigned to the null pointer,return from call to `deref_after_move_example::Person::move_age`,when calling `deref_after_move_example::Person::access_age` here,parameter `this` of deref_after_move_example::Person::access_age,invalid access occurs here] codetoanalyze/cpp/pulse/destructor.cpp, destructor::destruct_unique_deletes_pointer_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `destructor::UniquePtr::UniquePtr`,parameter `y` of destructor::UniquePtr::UniquePtr,assigned,return from call to `destructor::UniquePtr::UniquePtr`,when calling `destructor::UniquePtr::~UniquePtr` here,parameter `this` of destructor::UniquePtr::~UniquePtr,when calling `destructor::UniquePtr::__infer_inner_destructor_~UniquePtr` here,parameter `this` of destructor::UniquePtr::__infer_inner_destructor_~UniquePtr,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/destructor.cpp, destructor::destruct_unique_ref_deletes_pointer_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `destructor::UniquePtr::UniquePtr`,parameter `y` of destructor::UniquePtr::UniquePtr,assigned,return from call to `destructor::UniquePtr::UniquePtr`,when calling `destructor::UniquePtr::~UniquePtr` here,parameter `this` of destructor::UniquePtr::~UniquePtr,when calling `destructor::UniquePtr::__infer_inner_destructor_~UniquePtr` here,parameter `this` of destructor::UniquePtr::__infer_inner_destructor_~UniquePtr,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/destructor.cpp, destructor::destruct_unique_ptr_deletes_pointer_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `destructor::UniquePtr::UniquePtr`,parameter `y` of destructor::UniquePtr::UniquePtr,assigned,return from call to `destructor::UniquePtr::UniquePtr`,when calling `destructor::UniquePtr::~UniquePtr` here,parameter `this` of destructor::UniquePtr::~UniquePtr,when calling `destructor::UniquePtr::__infer_inner_destructor_~UniquePtr` here,parameter `this` of destructor::UniquePtr::__infer_inner_destructor_~UniquePtr,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,invalid access occurs here] @@ -81,28 +81,28 @@ codetoanalyze/cpp/pulse/exit_test.cpp, store_exit_null_bad, 0, NULLPTR_DEREFEREN codetoanalyze/cpp/pulse/folly_DestructorGuard.cpp, UsingDelayedDestruction::double_delete_bad, 2, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `this` of UsingDelayedDestruction::double_delete_bad,was invalidated by `delete`,use-after-lifetime part of the trace starts here,parameter `this` of UsingDelayedDestruction::double_delete_bad,invalid access occurs here] codetoanalyze/cpp/pulse/frontend.cpp, frontend::deref_null_namespace_alias_ptr_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,when calling `frontend::some::thing::bad_ptr` here,allocated by call to `new` (modelled),assigned,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `frontend::some::thing::bad_ptr`,allocated by call to `new` (modelled),assigned,returned,return from call to `frontend::some::thing::bad_ptr`,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/frontend.cpp, frontend::conditional_expression_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,condition is false,is assigned to the null pointer,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/frontend.cpp, frontend::call_Frontend_constructor_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `x` declared here,in call to `frontend::Frontend::Frontend`,parameter `n` of frontend::Frontend::Frontend,condition is false,is assigned to the constant 1,assigned,return from call to `frontend::Frontend::Frontend`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/frontend.cpp, frontend::call_Frontend_constructor2_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `y` declared here,in call to `frontend::Frontend::Frontend`,parameter `n` of frontend::Frontend::Frontend,condition is false,is assigned to the constant 1,assigned,assigned,return from call to `frontend::Frontend::Frontend`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/frontend.cpp, frontend::call_set_field_via_local_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `x` declared here,in call to `frontend::Frontend::Frontend`,parameter `this` of frontend::Frontend::Frontend,return from call to `frontend::Frontend::Frontend`,in call to `frontend::Frontend::set_field_via_local`,parameter `n` of frontend::Frontend::set_field_via_local,in call to `malloc (null case)` (modelled),is assigned to the null pointer,assigned,taking "else" branch,condition is false,is assigned to the constant 1,assigned,return from call to `frontend::Frontend::set_field_via_local`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/frontend.cpp, frontend::call_Frontend_constructor_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `frontend::Frontend::Frontend`,parameter `n` of frontend::Frontend::Frontend,condition is false,is assigned to the constant 1,assigned,return from call to `frontend::Frontend::Frontend`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/frontend.cpp, frontend::call_Frontend_constructor2_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `frontend::Frontend::Frontend`,parameter `n` of frontend::Frontend::Frontend,condition is false,is assigned to the constant 1,assigned,assigned,return from call to `frontend::Frontend::Frontend`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/frontend.cpp, frontend::call_set_field_via_local_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `frontend::Frontend::set_field_via_local`,parameter `n` of frontend::Frontend::set_field_via_local,in call to `malloc (null case)` (modelled),is assigned to the null pointer,assigned,taking "else" branch,condition is false,is assigned to the constant 1,assigned,return from call to `frontend::Frontend::set_field_via_local`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/frontend.cpp, frontend::not_boolean_bad, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,allocated by call to `malloc` (modelled),assigned,taking "then" branch,condition is false,is assigned to the constant 1,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/frontend.cpp, frontend::FP_init_single_field_struct_ok, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `y` declared here,in call to `frontend::get_single_field_struct`,parameter `__return_param` of frontend::get_single_field_struct,in call to `frontend::single_field_struct::single_field_struct`,parameter `this` of frontend::single_field_struct::single_field_struct,return from call to `frontend::single_field_struct::single_field_struct`,return from call to `frontend::get_single_field_struct`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, test_syntactic_specialization_bad, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [parameter `ptr` of test_syntactic_specialization_bad,in call to `call_call_funptr[specialized with functions]`,parameter `ptr` of call_call_funptr[specialized with functions],in call to `call_funptr[specialized with functions]`,parameter `ptr` of call_funptr[specialized with functions],in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `call_funptr[specialized with functions]`,return from call to `call_call_funptr[specialized with functions]`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, test_returned_funptr_specialization_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [parameter `ptr` of test_returned_funptr_specialization_bad,in call to `call_call_funptr[specialized with functions]`,parameter `ptr` of call_call_funptr[specialized with functions],in call to `call_funptr[specialized with functions]`,parameter `ptr` of call_funptr[specialized with functions],in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `call_funptr[specialized with functions]`,return from call to `call_call_funptr[specialized with functions]`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, funptr_if_bad, 10, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, funptr_else_bad, 10, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, funptr_conditional_call, 9, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [variable `ptr` declared here,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, funptr_conditional_call_bad, 0, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,when calling `funptr_conditional_call` here,variable `ptr` declared here,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, funptr_apply_funptr_with_intptrptr_specialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `apply_funptr_with_intptrptr[specialized with functions]`,parameter `ptr` of apply_funptr_with_intptrptr[specialized with functions],in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `apply_funptr_with_intptrptr[specialized with functions]`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, apply_funptr_with_intptrptr_and_after[specialized with functions], 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [parameter `ptr` of apply_funptr_with_intptrptr_and_after[specialized with functions],in call to `apply_funptr_with_intptrptr[specialized with functions]`,parameter `ptr` of apply_funptr_with_intptrptr[specialized with functions],in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `apply_funptr_with_intptrptr[specialized with functions]`,when calling `dereference_dereference_ptr` here,parameter `ptr` of dereference_dereference_ptr,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, test_syntactic_specialization_bad, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `call_call_funptr[specialized with functions]`,in call to `call_funptr[specialized with functions]`,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `call_funptr[specialized with functions]`,return from call to `call_call_funptr[specialized with functions]`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, test_returned_funptr_specialization_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `call_call_funptr[specialized with functions]`,in call to `call_funptr[specialized with functions]`,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `call_funptr[specialized with functions]`,return from call to `call_call_funptr[specialized with functions]`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, funptr_if_bad, 10, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, funptr_else_bad, 10, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, funptr_conditional_call, 9, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, funptr_conditional_call_bad, 0, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,when calling `funptr_conditional_call` here,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, funptr_apply_funptr_with_intptrptr_specialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `apply_funptr_with_intptrptr[specialized with functions]`,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `apply_funptr_with_intptrptr[specialized with functions]`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, apply_funptr_with_intptrptr_and_after[specialized with functions], 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `apply_funptr_with_intptrptr[specialized with functions]`,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `apply_funptr_with_intptrptr[specialized with functions]`,when calling `dereference_dereference_ptr` here,parameter `ptr` of dereference_dereference_ptr,invalid access occurs here] codetoanalyze/cpp/pulse/funptr.cpp, funptr_conditionnaly_apply_funptr_with_intptrptr_unspecialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,in call to `conditionnaly_apply_funptr_with_intptrptr`,is assigned to the null pointer,assigned,return from call to `conditionnaly_apply_funptr_with_intptrptr`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, funptr_conditionnaly_apply_funptr_with_intptrptr_specialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `conditionnaly_apply_funptr_with_intptrptr[specialized with functions]`,is assigned to the null pointer,assigned,return from call to `conditionnaly_apply_funptr_with_intptrptr[specialized with functions]`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, test_assign_nullptr_callback_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [parameter `ptr` of test_assign_nullptr_callback_bad,in call to `apply_callback[specialized with functions]`,parameter `ptr` of apply_callback[specialized with functions],in call to `FunPtrCallback::apply[specialized with functions]`,parameter `ptr` of FunPtrCallback::apply[specialized with functions],in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `FunPtrCallback::apply[specialized with functions]`,return from call to `apply_callback[specialized with functions]`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, test_update_callback_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [parameter `ptr` of test_update_callback_bad,in call to `apply_callback[specialized with functions]`,parameter `ptr` of apply_callback[specialized with functions],in call to `FunPtrCallback::apply[specialized with functions]`,parameter `ptr` of FunPtrCallback::apply[specialized with functions],in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `FunPtrCallback::apply[specialized with functions]`,return from call to `apply_callback[specialized with functions]`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, funptr_conditionnaly_apply_funptr_with_intptrptr_specialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `conditionnaly_apply_funptr_with_intptrptr[specialized with functions]`,is assigned to the null pointer,assigned,return from call to `conditionnaly_apply_funptr_with_intptrptr[specialized with functions]`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, test_assign_nullptr_callback_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `apply_callback[specialized with functions]`,in call to `FunPtrCallback::apply[specialized with functions]`,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `FunPtrCallback::apply[specialized with functions]`,return from call to `apply_callback[specialized with functions]`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, test_update_callback_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `apply_callback[specialized with functions]`,in call to `FunPtrCallback::apply[specialized with functions]`,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `FunPtrCallback::apply[specialized with functions]`,return from call to `apply_callback[specialized with functions]`,invalid access occurs here] codetoanalyze/cpp/pulse/globals.cpp, several_instantiations_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the constant 1,in call to `set_templated_global_int`,parameter `b` of set_templated_global_int,assigned,return from call to `set_templated_global_int`,is assigned to the null pointer,in call to `set_templated_global_bool`,parameter `b` of set_templated_global_bool,assigned,return from call to `set_templated_global_bool`,taking "then" branch,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/globals.cpp, read_templated_const_global_then_crash_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [global variable `yes` accessed here,in call to `__infer_globals_initializer_yes`,is assigned to the constant 1,assigned,return from call to `__infer_globals_initializer_yes`,taking "then" branch,global variable `templated_const_global` accessed here,in call to `__infer_globals_initializer_templated_const_global`,is assigned to the constant 1,assigned,return from call to `__infer_globals_initializer_templated_const_global`,taking "then" branch,global variable `templated_const_global` accessed here,in call to `__infer_globals_initializer_templated_const_global`,is assigned to the null pointer,assigned,return from call to `__infer_globals_initializer_templated_const_global`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/globals.cpp, read_templated_const_global_then_crash_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `__infer_globals_initializer_yes`,is assigned to the constant 1,assigned,return from call to `__infer_globals_initializer_yes`,taking "then" branch,in call to `__infer_globals_initializer_templated_const_global`,is assigned to the constant 1,assigned,return from call to `__infer_globals_initializer_templated_const_global`,taking "then" branch,in call to `__infer_globals_initializer_templated_const_global`,is assigned to the null pointer,assigned,return from call to `__infer_globals_initializer_templated_const_global`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/header.h, copy_in_header_bad, 1, PULSE_UNNECESSARY_COPY, no_bucket, ERROR, [first instantiated at,copied here (with type `std::vector> const &`)] codetoanalyze/cpp/pulse/header.h, copy_in_header_bad, 1, PULSE_UNNECESSARY_COPY, no_bucket, ERROR, [first instantiated at,copied here (with type `std::vector,std::allocator>,std::allocator,std::allocator>>> const &`)] -codetoanalyze/cpp/pulse/instantiate_pre_addresses.cpp, set_inner_pointer_bad, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `new` (modelled),in call to `mutate_deep_pointers`,is assigned to the constant 24,assigned,return from call to `mutate_deep_pointers`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/instantiate_pre_addresses.cpp, set_inner_pointer_bad, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `mutate_deep_pointers`,is assigned to the constant 24,assigned,return from call to `mutate_deep_pointers`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/interprocedural.cpp, delete_then_read_bad, 2, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `x` of delete_then_read_bad,was invalidated by `delete`,use-after-lifetime part of the trace starts here,parameter `x` of delete_then_read_bad,when calling `wraps_read` here,parameter `x` of wraps_read,when calling `wraps_read_inner` here,parameter `x` of wraps_read_inner,invalid access occurs here] codetoanalyze/cpp/pulse/interprocedural.cpp, delete_aliased_then_read_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `x` of delete_aliased_then_read_bad,assigned,was invalidated by `delete`,use-after-lifetime part of the trace starts here,parameter `x` of delete_aliased_then_read_bad,assigned,when calling `wraps_read` here,parameter `x` of wraps_read,when calling `wraps_read_inner` here,parameter `x` of wraps_read_inner,invalid access occurs here] codetoanalyze/cpp/pulse/interprocedural.cpp, delete_then_write_bad, 2, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `x` of delete_then_write_bad,when calling `wraps_delete` here,parameter `x` of wraps_delete,when calling `wraps_delete_inner` here,parameter `x` of wraps_delete_inner,was invalidated by `delete`,use-after-lifetime part of the trace starts here,parameter `x` of delete_then_write_bad,when calling `wraps_read` here,parameter `x` of wraps_read,when calling `wraps_read_inner` here,parameter `x` of wraps_read_inner,invalid access occurs here] @@ -140,8 +140,8 @@ codetoanalyze/cpp/pulse/nullptr.cpp, call_test_after_dereference2_bad, 1, NULLPT codetoanalyze/cpp/pulse/nullptr.cpp, SomeDerivedClass::SomeDerivedClass, 0, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [*** SUPPRESSED ***,source of the null value part of the trace starts here,parameter `ptr` of SomeDerivedClass::SomeDerivedClass,when calling `SomeClass::SomeClass` here,assigned,is assigned to the null pointer,null pointer dereference part of the trace starts here,parameter `ptr` of SomeDerivedClass::SomeDerivedClass,invalid access occurs here] codetoanalyze/cpp/pulse/nullptr.cpp, createSomeDerivedClass_from_unknown_function_ok, 1, NULLPTR_DEREFERENCE, no_bucket, ERROR, [*** SUPPRESSED ***,source of the null value part of the trace starts here,parameter `ptr` of SomeDerivedClass::SomeDerivedClass,when calling `SomeClass::SomeClass` here,assigned,is assigned to the null pointer,null pointer dereference part of the trace starts here,in call to function `unknown_function_X` with no summary,when calling `SomeDerivedClass::SomeDerivedClass` here,parameter `ptr` of SomeDerivedClass::SomeDerivedClass,invalid access occurs here] codetoanalyze/cpp/pulse/nullptr.cpp, test_call_nullptr_bad, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/nullptr.cpp, call_incr_deref_with_alias_bad, 7, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `x` declared here,assigned,in call to `incr_deref`,parameter `x` of incr_deref,is assigned to the constant 1,assigned,is assigned to the constant 1,assigned,return from call to `incr_deref`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/nullptr.cpp, test_capture_alias_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `x` declared here,assigned,in call to `lambda_nullptr.cpp:343_88652387::operator()`,value captured by value as `ptr`,is assigned to the constant 1,assigned,is assigned to the constant 1,assigned,return from call to `lambda_nullptr.cpp:343_88652387::operator()`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/nullptr.cpp, call_incr_deref_with_alias_bad, 7, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `incr_deref`,parameter `x` of incr_deref,is assigned to the constant 1,assigned,is assigned to the constant 1,assigned,return from call to `incr_deref`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/nullptr.cpp, test_capture_alias_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `lambda_nullptr.cpp:343_88652387::operator()`,value captured by value as `ptr`,is assigned to the constant 1,assigned,is assigned to the constant 1,assigned,return from call to `lambda_nullptr.cpp:343_88652387::operator()`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/optional.cpp, not_none_check_value0_bad, 4, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [is assigned to the constant 5,assigned,taking "then" branch,in call to `folly::Optional::Optional(=None)` (modelled),is assigned an empty value,invalid access occurs here] codetoanalyze/cpp/pulse/optional.cpp, not_none_check_value1_bad, 5, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [is assigned to the constant 5,in call to `Integer::Integer`,parameter `x` of Integer::Integer,assigned,return from call to `Integer::Integer`,in call to `Integer::Integer`,parameter `__param_0` of Integer::Integer,assigned,return from call to `Integer::Integer`,in call to `Integer::get`,parameter `this` of Integer::get,returned,return from call to `Integer::get`,taking "then" branch,in call to `folly::Optional::Optional(=None)` (modelled),is assigned an empty value,invalid access occurs here] codetoanalyze/cpp/pulse/optional.cpp, not_none_check_value2_bad, 6, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [is assigned to the constant 5,in call to `Integer::Integer`,parameter `x` of Integer::Integer,assigned,return from call to `Integer::Integer`,in call to `Integer::Integer`,parameter `__param_0` of Integer::Integer,assigned,return from call to `Integer::Integer`,in call to `Integer::get`,parameter `this` of Integer::get,returned,return from call to `Integer::get`,taking "then" branch,in call to `folly::Optional::Optional(=None)` (modelled),is assigned an empty value,invalid access occurs here] @@ -149,14 +149,14 @@ codetoanalyze/cpp/pulse/optional.cpp, none_no_check_bad, 2, OPTIONAL_EMPTY_ACCES codetoanalyze/cpp/pulse/optional.cpp, not_none_copy0_bad, 5, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [is assigned to the constant 5,assigned,taking "then" branch,in call to `folly::Optional::Optional(=None)` (modelled),is assigned an empty value,invalid access occurs here] codetoanalyze/cpp/pulse/optional.cpp, none_copy_bad, 3, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [in call to `folly::Optional::Optional(=None)` (modelled),is assigned an empty value,in call to `folly::Optional::Optional(folly::Optional arg)` (modelled),is assigned an empty value,invalid access occurs here] codetoanalyze/cpp/pulse/optional.cpp, assign_bad, 5, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [in call to `folly::Optional::Optional(=None)` (modelled),is assigned an empty value,in call to `folly::Optional::operator=`,parameter `other` of folly::Optional::operator=,in call to `folly::Optional::assign(folly::Optional arg)` (modelled),is assigned an empty value,return from call to `folly::Optional::operator=`,invalid access occurs here] -codetoanalyze/cpp/pulse/optional.cpp, assign2_bad, 4, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [variable `foo` declared here,in call to `folly::Optional::operator=`,in call to `folly::Optional::reset()` (modelled),is assigned an empty value,return from call to `folly::Optional::operator=`,invalid access occurs here] +codetoanalyze/cpp/pulse/optional.cpp, assign2_bad, 4, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [in call to `folly::Optional::operator=`,in call to `folly::Optional::reset()` (modelled),is assigned an empty value,return from call to `folly::Optional::operator=`,invalid access occurs here] codetoanalyze/cpp/pulse/optional.cpp, has_value_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,in call to `folly::Optional::has_value()` (modelled),taking "then" branch,taking "then" branch,in call to `folly::Optional::Optional(=None)` (modelled),is assigned an empty value,invalid access occurs here] codetoanalyze/cpp/pulse/optional.cpp, emplace, 4, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [*** SUPPRESSED ***,source of the null value part of the trace starts here,is assigned to the null pointer,null pointer dereference part of the trace starts here,parameter `state` of emplace,in call to `folly::Optional::operator_bool`,parameter `this` of folly::Optional::operator_bool,return from call to `folly::Optional::operator_bool`,invalid access occurs here] codetoanalyze/cpp/pulse/optional.cpp, operator_arrow_bad, 0, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [in call to `folly::Optional::Optional(=None)` (modelled),is assigned an empty value,when calling `emplace` here,parameter `state` of emplace,in call to `folly::Optional::operator_bool`,parameter `this` of folly::Optional::operator_bool,return from call to `folly::Optional::operator_bool`,invalid access occurs here] codetoanalyze/cpp/pulse/optional.cpp, get_pointer_no_check_none_check_bad, 3, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [in call to `folly::Optional::get_pointer() empty case` (modelled),is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/optional.cpp, test_trace_ref, 4, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [variable `foo` declared here,in call to `folly::Optional::operator=`,in call to `folly::Optional::reset()` (modelled),is assigned an empty value,return from call to `folly::Optional::operator=`,invalid access occurs here] -codetoanalyze/cpp/pulse/pair.cpp, pair::deref_makepair_constants0_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `p` declared here,in call to `pair::pairOfZeroNull3`,is assigned to the constant 58,assigned,return from call to `pair::pairOfZeroNull3`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/pair.cpp, pair::deref_makepair_constants1_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `p` declared here,in call to `pair::pairOfZeroNull3`,is assigned to the constant 42,assigned,return from call to `pair::pairOfZeroNull3`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/optional.cpp, test_trace_ref, 4, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [in call to `folly::Optional::operator=`,in call to `folly::Optional::reset()` (modelled),is assigned an empty value,return from call to `folly::Optional::operator=`,invalid access occurs here] +codetoanalyze/cpp/pulse/pair.cpp, pair::deref_makepair_constants0_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `pair::pairOfZeroNull3`,is assigned to the constant 58,assigned,return from call to `pair::pairOfZeroNull3`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/pair.cpp, pair::deref_makepair_constants1_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `pair::pairOfZeroNull3`,is assigned to the constant 42,assigned,return from call to `pair::pairOfZeroNull3`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/path.cpp, FP_only_bad_on_42_latent, 2, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [in call to `may_return_null`,parameter `x` of may_return_null,taking "then" branch,is assigned to the null pointer,returned,return from call to `may_return_null`,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/path.cpp, FN_faulty_call_bad, 0, NULLPTR_DEREFERENCE, no_bucket, ERROR, [when calling `FP_only_bad_on_42_latent` here,in call to `may_return_null`,parameter `x` of may_return_null,taking "then" branch,is assigned to the null pointer,returned,return from call to `may_return_null`,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/readonly_shared_ptr_param.cpp, read_shared_ptr_param_bad, 0, PULSE_READONLY_SHARED_PTR_PARAM, no_bucket, ERROR, [Parameter x with type `std::shared_ptr`,used] @@ -181,7 +181,7 @@ codetoanalyze/cpp/pulse/reference_stability.cpp, folly_fastmap_big_find_star_bad codetoanalyze/cpp/pulse/reference_stability.cpp, folly_fastmap_begin_bad, 3, PULSE_REFERENCE_STABILITY, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `map` of folly_fastmap_begin_bad,was potentially invalidated by `folly::F14FastMap::clear`,use-after-lifetime part of the trace starts here,parameter `map` of folly_fastmap_begin_bad,in call to `folly::F14FastMap::begin` (modelled),in call to `folly::f14::detail::ValueContainerIterator::operator->` (modelled),invalid access occurs here] codetoanalyze/cpp/pulse/reference_stability.cpp, folly_fastmap_cbegin_bad, 3, PULSE_REFERENCE_STABILITY, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `map` of folly_fastmap_cbegin_bad,was potentially invalidated by `folly::F14FastMap::clear`,use-after-lifetime part of the trace starts here,parameter `map` of folly_fastmap_cbegin_bad,in call to `folly::F14FastMap::cbegin` (modelled),in call to `folly::f14::detail::ValueContainerIterator::operator->` (modelled),invalid access occurs here] codetoanalyze/cpp/pulse/reference_stability.cpp, folly_fastmap_iterator_increment_bad, 5, PULSE_REFERENCE_STABILITY, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `map` of folly_fastmap_iterator_increment_bad,was potentially invalidated by `folly::F14FastMap::clear`,use-after-lifetime part of the trace starts here,parameter `map` of folly_fastmap_iterator_increment_bad,in call to `folly::F14FastMap::begin` (modelled),in call to `folly::f14::detail::ValueContainerIterator::operator->` (modelled),assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/reference_wrapper.cpp, reference_wrapper_heap_bad, 2, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `rw` declared here,when calling `getwrapperHeap` here,variable `a` declared here,in call to `WrapsB::WrapsB`,allocated by call to `new` (modelled),assigned,return from call to `WrapsB::WrapsB`,when calling `WrapsB::~WrapsB` here,parameter `this` of WrapsB::~WrapsB,when calling `WrapsB::__infer_inner_destructor_~WrapsB` here,parameter `this` of WrapsB::__infer_inner_destructor_~WrapsB,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `rw` declared here,in call to `getwrapperHeap`,variable `a` declared here,in call to `WrapsB::WrapsB`,allocated by call to `new` (modelled),assigned,return from call to `WrapsB::WrapsB`,in call to `ReferenceWrapperHeap::ReferenceWrapperHeap`,parameter `a` of ReferenceWrapperHeap::ReferenceWrapperHeap,in call to `WrapsB::getb`,parameter `this` of WrapsB::getb,returned,return from call to `WrapsB::getb`,assigned,return from call to `ReferenceWrapperHeap::ReferenceWrapperHeap`,return from call to `getwrapperHeap`,invalid access occurs here] +codetoanalyze/cpp/pulse/reference_wrapper.cpp, reference_wrapper_heap_bad, 2, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,when calling `getwrapperHeap` here,in call to `WrapsB::WrapsB`,allocated by call to `new` (modelled),assigned,return from call to `WrapsB::WrapsB`,when calling `WrapsB::~WrapsB` here,parameter `this` of WrapsB::~WrapsB,when calling `WrapsB::__infer_inner_destructor_~WrapsB` here,parameter `this` of WrapsB::__infer_inner_destructor_~WrapsB,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `getwrapperHeap`,in call to `WrapsB::WrapsB`,allocated by call to `new` (modelled),assigned,return from call to `WrapsB::WrapsB`,in call to `ReferenceWrapperHeap::ReferenceWrapperHeap`,parameter `a` of ReferenceWrapperHeap::ReferenceWrapperHeap,in call to `WrapsB::getb`,parameter `this` of WrapsB::getb,returned,return from call to `WrapsB::getb`,assigned,return from call to `ReferenceWrapperHeap::ReferenceWrapperHeap`,return from call to `getwrapperHeap`,invalid access occurs here] codetoanalyze/cpp/pulse/reference_wrapper.cpp, reference_wrapper_stack_bad, 2, USE_AFTER_LIFETIME, no_bucket, ERROR, [invalidation part of the trace starts here,variable `rw` declared here,when calling `getwrapperStack` here,variable `b` declared here,is the address of a stack variable `b` whose lifetime has ended,use-after-lifetime part of the trace starts here,variable `rw` declared here,in call to `getwrapperStack`,variable `b` declared here,in call to `ReferenceWrapperStack::ReferenceWrapperStack`,parameter `bref` of ReferenceWrapperStack::ReferenceWrapperStack,assigned,return from call to `ReferenceWrapperStack::ReferenceWrapperStack`,return from call to `getwrapperStack`,invalid access occurs here] codetoanalyze/cpp/pulse/returns.cpp, returns::return_literal_stack_reference_bad, 0, STACK_VARIABLE_ADDRESS_ESCAPE, no_bucket, ERROR, [variable `C++ temporary` declared here,returned here] codetoanalyze/cpp/pulse/returns.cpp, returns::return_variable_stack_reference1_bad, 2, STACK_VARIABLE_ADDRESS_ESCAPE, no_bucket, ERROR, [variable `C++ temporary` declared here,assigned,returned here] @@ -210,9 +210,9 @@ codetoanalyze/cpp/pulse/shared_ptr_deref.cpp, shared_ptr::shared_ptr_move_null_d codetoanalyze/cpp/pulse/shared_ptr_destructor.cpp, destructor_shared_ptr::destructor0_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `std::shared_ptr::shared_ptr(T*)` (modelled),in call to `std::shared_ptr::~shared_ptr()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/shared_ptr_destructor.cpp, destructor_shared_ptr::destructor1_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `std::shared_ptr::shared_ptr(T*)` (modelled),in call to `std::shared_ptr::~shared_ptr()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/shared_ptr_destructor.cpp, destructor_shared_ptr::destructor2_bad, 7, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `std::shared_ptr::shared_ptr(T*)` (modelled),in call to `std::shared_ptr::~shared_ptr()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/shared_ptr_destructor.cpp, destructor_shared_ptr::destructor3_bad, 4, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,allocated by call to `new` (modelled),when calling `destructor_shared_ptr::Y::Y` here,allocated by call to `new` (modelled),when calling `destructor_shared_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] -codetoanalyze/cpp/pulse/shared_ptr_destructor.cpp, destructor_shared_ptr::destructor4_bad, 5, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,allocated by call to `new` (modelled),when calling `destructor_shared_ptr::Y::Y` here,allocated by call to `new` (modelled),when calling `destructor_shared_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] -codetoanalyze/cpp/pulse/shared_ptr_destructor.cpp, destructor_shared_ptr::destructor5_bad, 5, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,allocated by call to `new` (modelled),when calling `destructor_shared_ptr::Y::Y` here,allocated by call to `new` (modelled),when calling `destructor_shared_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] +codetoanalyze/cpp/pulse/shared_ptr_destructor.cpp, destructor_shared_ptr::destructor3_bad, 4, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,when calling `destructor_shared_ptr::Y::Y` here,when calling `destructor_shared_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] +codetoanalyze/cpp/pulse/shared_ptr_destructor.cpp, destructor_shared_ptr::destructor4_bad, 5, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,when calling `destructor_shared_ptr::Y::Y` here,when calling `destructor_shared_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] +codetoanalyze/cpp/pulse/shared_ptr_destructor.cpp, destructor_shared_ptr::destructor5_bad, 5, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,when calling `destructor_shared_ptr::Y::Y` here,when calling `destructor_shared_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] codetoanalyze/cpp/pulse/shared_ptr_semantics.cpp, shared_ptr_semantics::constructor0_bad, 6, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the constant 42,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/shared_ptr_semantics.cpp, shared_ptr_semantics::move_constructor0_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the constant 42,assigned,in call to `std::shared_ptr::shared_ptr(T*)` (modelled),taking "then" branch,in call to `std::shared_ptr::use_count()` (modelled),taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/shared_ptr_semantics.cpp, shared_ptr_semantics::move_constructor1_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the constant 42,assigned,in call to `std::shared_ptr::shared_ptr(T*)` (modelled),taking "then" branch,in call to `std::shared_ptr::use_count()` (modelled),taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] @@ -389,8 +389,8 @@ codetoanalyze/cpp/pulse/taint/unknown_code.cpp, unknown_code::skip_indirect_bad, codetoanalyze/cpp/pulse/taint/unknown_code.cpp, unknown_code::skip_indirect_bad, 3, PULSE_UNNECESSARY_COPY_INTERMEDIATE, no_bucket, ERROR, [copied here (with type `std::basic_string,std::allocator>&`)] codetoanalyze/cpp/pulse/taint/unknown_code.cpp, unknown_code::FN_via_skip_by_ref_bad, 3, PULSE_UNNECESSARY_COPY_INTERMEDIATE, no_bucket, ERROR, [copied here (with type `std::basic_string,std::allocator>&`)] codetoanalyze/cpp/pulse/taint/unknown_code.cpp, unknown_code::FN_via_skip_by_ref_bad, 4, PULSE_UNNECESSARY_COPY_INTERMEDIATE, no_bucket, ERROR, [copied here (with type `std::basic_string,std::allocator>&`)] -codetoanalyze/cpp/pulse/temporaries.cpp, temporaries::call_mk_UniquePtr_A_deref_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `C++ temporary` declared here,in call to `temporaries::mk_UniquePtr_A`,allocated by call to `new` (modelled),in call to `temporaries::UniquePtr::UniquePtr`,parameter `y` of temporaries::UniquePtr::UniquePtr,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,return from call to `temporaries::mk_UniquePtr_A`,when calling `temporaries::UniquePtr::~UniquePtr` here,parameter `this` of temporaries::UniquePtr::~UniquePtr,when calling `temporaries::UniquePtr::__infer_inner_destructor_~UniquePtr` here,parameter `this` of temporaries::UniquePtr::__infer_inner_destructor_~UniquePtr,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `C++ temporary` declared here,in call to `temporaries::mk_UniquePtr_A`,allocated by call to `new` (modelled),in call to `temporaries::UniquePtr::UniquePtr`,parameter `y` of temporaries::UniquePtr::UniquePtr,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,return from call to `temporaries::mk_UniquePtr_A`,in call to `temporaries::UniquePtr::get`,parameter `this` of temporaries::UniquePtr::get,returned,return from call to `temporaries::UniquePtr::get`,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/temporaries.cpp, temporaries::bind_temporary_to_const_bad, 6, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `C++ temporary` declared here,in call to `temporaries::mk_UniquePtr_A`,allocated by call to `new` (modelled),in call to `temporaries::UniquePtr::UniquePtr`,parameter `y` of temporaries::UniquePtr::UniquePtr,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,return from call to `temporaries::mk_UniquePtr_A`,when calling `temporaries::UniquePtr::~UniquePtr` here,parameter `this` of temporaries::UniquePtr::~UniquePtr,when calling `temporaries::UniquePtr::__infer_inner_destructor_~UniquePtr` here,parameter `this` of temporaries::UniquePtr::__infer_inner_destructor_~UniquePtr,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `C++ temporary` declared here,in call to `temporaries::mk_UniquePtr_A`,allocated by call to `new` (modelled),in call to `temporaries::UniquePtr::UniquePtr`,parameter `y` of temporaries::UniquePtr::UniquePtr,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,return from call to `temporaries::mk_UniquePtr_A`,in call to `temporaries::UniquePtr::get`,parameter `this` of temporaries::UniquePtr::get,returned,return from call to `temporaries::UniquePtr::get`,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/temporaries.cpp, temporaries::call_mk_UniquePtr_A_deref_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `temporaries::mk_UniquePtr_A`,allocated by call to `new` (modelled),in call to `temporaries::UniquePtr::UniquePtr`,parameter `y` of temporaries::UniquePtr::UniquePtr,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,return from call to `temporaries::mk_UniquePtr_A`,when calling `temporaries::UniquePtr::~UniquePtr` here,parameter `this` of temporaries::UniquePtr::~UniquePtr,when calling `temporaries::UniquePtr::__infer_inner_destructor_~UniquePtr` here,parameter `this` of temporaries::UniquePtr::__infer_inner_destructor_~UniquePtr,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `temporaries::mk_UniquePtr_A`,allocated by call to `new` (modelled),in call to `temporaries::UniquePtr::UniquePtr`,parameter `y` of temporaries::UniquePtr::UniquePtr,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,return from call to `temporaries::mk_UniquePtr_A`,in call to `temporaries::UniquePtr::get`,parameter `this` of temporaries::UniquePtr::get,returned,return from call to `temporaries::UniquePtr::get`,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/temporaries.cpp, temporaries::bind_temporary_to_const_bad, 6, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `temporaries::mk_UniquePtr_A`,allocated by call to `new` (modelled),in call to `temporaries::UniquePtr::UniquePtr`,parameter `y` of temporaries::UniquePtr::UniquePtr,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,return from call to `temporaries::mk_UniquePtr_A`,when calling `temporaries::UniquePtr::~UniquePtr` here,parameter `this` of temporaries::UniquePtr::~UniquePtr,when calling `temporaries::UniquePtr::__infer_inner_destructor_~UniquePtr` here,parameter `this` of temporaries::UniquePtr::__infer_inner_destructor_~UniquePtr,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `temporaries::mk_UniquePtr_A`,allocated by call to `new` (modelled),in call to `temporaries::UniquePtr::UniquePtr`,parameter `y` of temporaries::UniquePtr::UniquePtr,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,return from call to `temporaries::mk_UniquePtr_A`,in call to `temporaries::UniquePtr::get`,parameter `this` of temporaries::UniquePtr::get,returned,return from call to `temporaries::UniquePtr::get`,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/trace.cpp, trace_free_bad, 4, USE_AFTER_FREE, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `x` of trace_free_bad,in call to `make_alias`,parameter `src` of make_alias,assigned,return from call to `make_alias`,when calling `do_free` here,parameter `x` of do_free,assigned,was invalidated by call to `free()`,use-after-lifetime part of the trace starts here,parameter `x` of trace_free_bad,invalid access occurs here] codetoanalyze/cpp/pulse/traces.cpp, access_destructed_string, 6, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,assigned,in call to `std::basic_string::~basic_string()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,assigned,in call to `std::basic_string::data()` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/uninit.cpp, Uninit::call_init_by_store_ok, 3, PULSE_UNINITIALIZED_VALUE, no_bucket, ERROR, [struct field address `i` created,read to uninitialized value occurs here] @@ -421,9 +421,9 @@ codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::empty_ptr_field_deref_ codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::empty_ptr_field_deref2_bad, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `std::unique_ptr::unique_ptr()` (modelled),is assigned to the null pointer,invalid access occurs here] codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::empty_ptr_method_deref_bad, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `std::unique_ptr::unique_ptr()` (modelled),is assigned to the null pointer,invalid access occurs here] codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::unique_ptr_release0_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `std::unique_ptr::release()` (modelled),is assigned to the null pointer,invalid access occurs here] -codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::unique_ptr_release1_bad, 2, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,allocated by call to `new` (modelled),when calling `unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] +codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::unique_ptr_release1_bad, 2, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,when calling `unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::reset_ptr_null_deref_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,in call to `std::unique_ptr::reset(T*)` (modelled),invalid access occurs here] -codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::unique_ptr_release_get0_bad, 2, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,allocated by call to `new` (modelled),when calling `unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] +codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::unique_ptr_release_get0_bad, 2, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,when calling `unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::unique_ptr_release_get1_bad, 6, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `std::unique_ptr::release()` (modelled),is assigned to the null pointer,invalid access occurs here] codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::reset_ptr_null_deref2_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,in call to `std::unique_ptr::reset(T*)` (modelled),invalid access occurs here] codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::unique_ptr_copy_null_deref_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `std::unique_ptr::unique_ptr()` (modelled),is assigned to the null pointer,in call to `std::unique_ptr::unique_ptr(std::unique_ptr)` (modelled),invalid access occurs here] @@ -436,9 +436,9 @@ codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::operator_bool1_bad, 5, codetoanalyze/cpp/pulse/unique_ptr_destructor.cpp, destructor_unique_ptr::destructor0_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `std::unique_ptr::unique_ptr(T*)` (modelled),in call to `std::unique_ptr::~unique_ptr()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/unique_ptr_destructor.cpp, destructor_unique_ptr::destructor1_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `std::unique_ptr::unique_ptr(T*)` (modelled),in call to `std::unique_ptr::~unique_ptr()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/unique_ptr_destructor.cpp, destructor_unique_ptr::destructor2_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `std::unique_ptr::unique_ptr(T*)` (modelled),in call to `std::unique_ptr::~unique_ptr()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,when calling `destructor_unique_ptr::X::X` here,parameter `__param_0` of destructor_unique_ptr::X::X,invalid access occurs here] -codetoanalyze/cpp/pulse/unique_ptr_destructor.cpp, destructor_unique_ptr::destructor3_bad, 4, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,allocated by call to `new` (modelled),when calling `destructor_unique_ptr::Y::Y` here,allocated by call to `new` (modelled),when calling `destructor_unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] -codetoanalyze/cpp/pulse/unique_ptr_destructor.cpp, destructor_unique_ptr::destructor4_bad, 5, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,allocated by call to `new` (modelled),when calling `destructor_unique_ptr::Y::Y` here,allocated by call to `new` (modelled),when calling `destructor_unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] -codetoanalyze/cpp/pulse/unique_ptr_destructor.cpp, destructor_unique_ptr::destructor5_bad, 5, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,allocated by call to `new` (modelled),when calling `destructor_unique_ptr::Y::Y` here,allocated by call to `new` (modelled),when calling `destructor_unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] +codetoanalyze/cpp/pulse/unique_ptr_destructor.cpp, destructor_unique_ptr::destructor3_bad, 4, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,when calling `destructor_unique_ptr::Y::Y` here,when calling `destructor_unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] +codetoanalyze/cpp/pulse/unique_ptr_destructor.cpp, destructor_unique_ptr::destructor4_bad, 5, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,when calling `destructor_unique_ptr::Y::Y` here,when calling `destructor_unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] +codetoanalyze/cpp/pulse/unique_ptr_destructor.cpp, destructor_unique_ptr::destructor5_bad, 5, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,when calling `destructor_unique_ptr::Y::Y` here,when calling `destructor_unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] codetoanalyze/cpp/pulse/unknown_functions.cpp, const_no_init_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/unknown_functions.cpp, call_init_with_pointer_value_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/unnecessary_copy.cpp, copy_decl_bad, 1, PULSE_UNNECESSARY_COPY, no_bucket, ERROR, [copied here (with type `Arr&`)] @@ -534,13 +534,13 @@ codetoanalyze/cpp/pulse/use_after_delete.cpp, delete_allocated_then_error_bad, 3 codetoanalyze/cpp/pulse/use_after_delete.cpp, null_call_delete_allocated_then_error_bad, 1, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,when calling `delete_allocated_then_error_bad` here,parameter `x` of delete_allocated_then_error_bad,invalid access occurs here] codetoanalyze/cpp/pulse/use_after_delete.cpp, access_field_after_delete_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::S::reinit, 0, PULSE_CONST_REFABLE, no_bucket, ERROR, [Parameter s with type `use_after_destructor::S`] -codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::reinit_after_explicit_destructor_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `C++ temporary` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `C++ temporary` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::operator=`,parameter `__param_0` of use_after_destructor::S::operator=,assigned,return from call to `use_after_destructor::S::operator=`,invalid access occurs here] -codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::reinit_after_explicit_destructor2_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `s2` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `s2` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::operator=`,parameter `__param_0` of use_after_destructor::S::operator=,assigned,return from call to `use_after_destructor::S::operator=`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] -codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::double_destructor_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `s` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `s` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] -codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::use_after_destructor_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `s` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `s` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,invalid access occurs here] -codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::use_after_scope1_bad, 7, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `tmp` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `tmp` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::operator=`,parameter `__param_0` of use_after_destructor::S::operator=,assigned,return from call to `use_after_destructor::S::operator=`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] -codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::use_after_scope2_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `C++ temporary` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `C++ temporary` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::operator=`,parameter `__param_0` of use_after_destructor::S::operator=,assigned,return from call to `use_after_destructor::S::operator=`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] -codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::placement_new_wrong_order_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),in call to `use_after_destructor::S::S`,parameter `this` of use_after_destructor::S::S,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),in call to `use_after_destructor::S::S`,parameter `this` of use_after_destructor::S::S,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::reinit_after_explicit_destructor_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::operator=`,parameter `__param_0` of use_after_destructor::S::operator=,assigned,return from call to `use_after_destructor::S::operator=`,invalid access occurs here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::reinit_after_explicit_destructor2_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::operator=`,parameter `__param_0` of use_after_destructor::S::operator=,assigned,return from call to `use_after_destructor::S::operator=`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::double_destructor_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::use_after_destructor_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,invalid access occurs here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::use_after_scope1_bad, 7, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::operator=`,parameter `__param_0` of use_after_destructor::S::operator=,assigned,return from call to `use_after_destructor::S::operator=`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::use_after_scope2_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::operator=`,parameter `__param_0` of use_after_destructor::S::operator=,assigned,return from call to `use_after_destructor::S::operator=`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::placement_new_wrong_order_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::placement_new_aliasing1_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `()` (modelled),assigned,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::placement_new_aliasing2_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `()` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::placement_new_aliasing3_bad, 6, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,assigned,invalid access occurs here] diff --git a/infer/tests/codetoanalyze/cpp/pulse/issues.exp-11 b/infer/tests/codetoanalyze/cpp/pulse/issues.exp-11 index c66e31548e8..807f0bd5e29 100644 --- a/infer/tests/codetoanalyze/cpp/pulse/issues.exp-11 +++ b/infer/tests/codetoanalyze/cpp/pulse/issues.exp-11 @@ -1,7 +1,7 @@ codetoanalyze/cpp/pulse/aliasing.cpp, call_ifthenderef_true_null_bad, 0, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,when calling `ifthenderef` here,parameter `x` of ifthenderef,invalid access occurs here] codetoanalyze/cpp/pulse/aliasing.cpp, call_ifnotthenderef_false_null_bad, 0, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,when calling `ifnotthenderef` here,parameter `x` of ifnotthenderef,invalid access occurs here] codetoanalyze/cpp/pulse/aliasing.cpp, null_test_after_deref_latent_FN, 1, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [*** SUPPRESSED ***,source of the null value part of the trace starts here,is assigned to the null pointer,null pointer dereference part of the trace starts here,parameter `x` of null_test_after_deref_latent_FN,invalid access occurs here] -codetoanalyze/cpp/pulse/basic_string.cpp, use_range_of_invalidated_temporary_string_bad, 2, USE_AFTER_DELETE_LATENT, no_bucket, ERROR, [invalidation part of the trace starts here,struct field address `b_` created,when calling `setLanguage` here,assigned,in call to `Range::Range`,parameter `str` of Range::Range,return from call to `Range::Range`,in call to `std::basic_string::~basic_string()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,struct field address `b_` created,in call to `setLanguage`,assigned,in call to `Range::Range`,parameter `str` of Range::Range,in call to `std::basic_string::data()` (modelled),assigned,return from call to `Range::Range`,in call to `Range::Range`,parameter `__param_0` of Range::Range,assigned,return from call to `Range::Range`,return from call to `setLanguage`,in call to `Range::Range`,parameter `__param_0` of Range::Range,assigned,return from call to `Range::Range`,when calling `Range::operator[]` here,parameter `this` of Range::operator[],invalid access occurs here] +codetoanalyze/cpp/pulse/basic_string.cpp, use_range_of_invalidated_temporary_string_bad, 2, USE_AFTER_DELETE_LATENT, no_bucket, ERROR, [invalidation part of the trace starts here,when calling `setLanguage` here,assigned,in call to `Range::Range`,parameter `str` of Range::Range,return from call to `Range::Range`,in call to `std::basic_string::~basic_string()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `setLanguage`,assigned,in call to `Range::Range`,parameter `str` of Range::Range,in call to `std::basic_string::data()` (modelled),assigned,return from call to `Range::Range`,in call to `Range::Range`,parameter `__param_0` of Range::Range,assigned,return from call to `Range::Range`,return from call to `setLanguage`,in call to `Range::Range`,parameter `__param_0` of Range::Range,assigned,return from call to `Range::Range`,when calling `Range::operator[]` here,parameter `this` of Range::operator[],invalid access occurs here] codetoanalyze/cpp/pulse/basic_string.cpp, copy_string_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [assigned,in call to `std::basic_string::length()` (modelled),is assigned to the constant 3,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/basic_string.cpp, copy_string_ok, 2, PULSE_UNNECESSARY_COPY, no_bucket, ERROR, [copied here (with type `std::basic_string,std::allocator>&`)] codetoanalyze/cpp/pulse/basics.cpp, multiple_invalidations_branch_latent, 6, USE_AFTER_DELETE_LATENT, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `ptr` of multiple_invalidations_branch_latent,was invalidated by `delete`,use-after-lifetime part of the trace starts here,parameter `ptr` of multiple_invalidations_branch_latent,invalid access occurs here] @@ -81,7 +81,7 @@ codetoanalyze/cpp/pulse/deduplication.cpp, deduplication::SomeTemplatedClass::lifetime_error_bad, 2, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `a` of deduplication::SomeTemplatedClass::lifetime_error_bad,when calling `deduplication::SomeTemplatedClass::templated_wrapper_delete_ok` here,parameter `a` of deduplication::SomeTemplatedClass::templated_wrapper_delete_ok,was invalidated by `delete`,use-after-lifetime part of the trace starts here,parameter `a` of deduplication::SomeTemplatedClass::lifetime_error_bad,when calling `deduplication::SomeTemplatedClass::templated_wrapper_access_ok` here,parameter `a` of deduplication::SomeTemplatedClass::templated_wrapper_access_ok,invalid access occurs here] codetoanalyze/cpp/pulse/deduplication.cpp, deduplication::templated_function_bad<_Bool>, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,when calling `deduplication::templated_delete_function<_Bool>` here,parameter `a` of deduplication::templated_delete_function<_Bool>,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,when calling `deduplication::templated_access_function<_Bool>` here,parameter `a` of deduplication::templated_access_function<_Bool>,invalid access occurs here] codetoanalyze/cpp/pulse/deduplication.cpp, deduplication::templated_function_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,when calling `deduplication::templated_delete_function` here,parameter `a` of deduplication::templated_delete_function,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,when calling `deduplication::templated_access_function` here,parameter `a` of deduplication::templated_access_function,invalid access occurs here] -codetoanalyze/cpp/pulse/deref_after_move_example.cpp, deref_after_move_example::deref_after_move_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `p` declared here,in call to `deref_after_move_example::Person::Person`,parameter `this` of deref_after_move_example::Person::Person,return from call to `deref_after_move_example::Person::Person`,in call to `deref_after_move_example::Person::move_age`,in call to `std::unique_ptr::unique_ptr(std::unique_ptr)` (modelled),is assigned to the null pointer,return from call to `deref_after_move_example::Person::move_age`,when calling `deref_after_move_example::Person::access_age` here,parameter `this` of deref_after_move_example::Person::access_age,invalid access occurs here] +codetoanalyze/cpp/pulse/deref_after_move_example.cpp, deref_after_move_example::deref_after_move_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `deref_after_move_example::Person::move_age`,in call to `std::unique_ptr::unique_ptr(std::unique_ptr)` (modelled),is assigned to the null pointer,return from call to `deref_after_move_example::Person::move_age`,when calling `deref_after_move_example::Person::access_age` here,parameter `this` of deref_after_move_example::Person::access_age,invalid access occurs here] codetoanalyze/cpp/pulse/destructor.cpp, destructor::destruct_unique_deletes_pointer_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `destructor::UniquePtr::UniquePtr`,parameter `y` of destructor::UniquePtr::UniquePtr,assigned,return from call to `destructor::UniquePtr::UniquePtr`,in call to `destructor::UniquePtr::UniquePtr`,parameter `p` of destructor::UniquePtr::UniquePtr,in call to `destructor::UniquePtr::get`,parameter `this` of destructor::UniquePtr::get,returned,return from call to `destructor::UniquePtr::get`,assigned,return from call to `destructor::UniquePtr::UniquePtr`,when calling `destructor::UniquePtr::~UniquePtr` here,parameter `this` of destructor::UniquePtr::~UniquePtr,when calling `destructor::UniquePtr::__infer_inner_destructor_~UniquePtr` here,parameter `this` of destructor::UniquePtr::__infer_inner_destructor_~UniquePtr,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/destructor.cpp, destructor::destruct_unique_ref_deletes_pointer_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `destructor::UniquePtr::UniquePtr`,parameter `y` of destructor::UniquePtr::UniquePtr,assigned,return from call to `destructor::UniquePtr::UniquePtr`,when calling `destructor::UniquePtr::~UniquePtr` here,parameter `this` of destructor::UniquePtr::~UniquePtr,when calling `destructor::UniquePtr::__infer_inner_destructor_~UniquePtr` here,parameter `this` of destructor::UniquePtr::__infer_inner_destructor_~UniquePtr,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/destructor.cpp, destructor::destruct_unique_ptr_deletes_pointer_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `destructor::UniquePtr::UniquePtr`,parameter `y` of destructor::UniquePtr::UniquePtr,assigned,return from call to `destructor::UniquePtr::UniquePtr`,when calling `destructor::UniquePtr::~UniquePtr` here,parameter `this` of destructor::UniquePtr::~UniquePtr,when calling `destructor::UniquePtr::__infer_inner_destructor_~UniquePtr` here,parameter `this` of destructor::UniquePtr::__infer_inner_destructor_~UniquePtr,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,invalid access occurs here] @@ -91,27 +91,27 @@ codetoanalyze/cpp/pulse/exit_test.cpp, store_exit_null_bad, 0, NULLPTR_DEREFEREN codetoanalyze/cpp/pulse/folly_DestructorGuard.cpp, UsingDelayedDestruction::double_delete_bad, 2, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `this` of UsingDelayedDestruction::double_delete_bad,was invalidated by `delete`,use-after-lifetime part of the trace starts here,parameter `this` of UsingDelayedDestruction::double_delete_bad,invalid access occurs here] codetoanalyze/cpp/pulse/frontend.cpp, frontend::deref_null_namespace_alias_ptr_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,when calling `frontend::some::thing::bad_ptr` here,allocated by call to `new` (modelled),assigned,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `frontend::some::thing::bad_ptr`,allocated by call to `new` (modelled),assigned,returned,return from call to `frontend::some::thing::bad_ptr`,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/frontend.cpp, frontend::conditional_expression_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,condition is false,is assigned to the null pointer,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/frontend.cpp, frontend::call_Frontend_constructor_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `C++ temporary` declared here,in call to `frontend::Frontend::Frontend`,parameter `n` of frontend::Frontend::Frontend,condition is false,is assigned to the constant 1,assigned,return from call to `frontend::Frontend::Frontend`,in call to `frontend::Frontend::Frontend`,parameter `__param_0` of frontend::Frontend::Frontend,assigned,return from call to `frontend::Frontend::Frontend`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/frontend.cpp, frontend::call_Frontend_constructor2_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `C++ temporary` declared here,in call to `frontend::Frontend::Frontend`,parameter `n` of frontend::Frontend::Frontend,condition is false,is assigned to the constant 1,assigned,assigned,return from call to `frontend::Frontend::Frontend`,in call to `frontend::Frontend::Frontend`,parameter `__param_0` of frontend::Frontend::Frontend,assigned,return from call to `frontend::Frontend::Frontend`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/frontend.cpp, frontend::call_set_field_via_local_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `x` declared here,in call to `frontend::Frontend::Frontend`,parameter `this` of frontend::Frontend::Frontend,return from call to `frontend::Frontend::Frontend`,in call to `frontend::Frontend::set_field_via_local`,parameter `n` of frontend::Frontend::set_field_via_local,in call to `malloc (null case)` (modelled),is assigned to the null pointer,assigned,taking "else" branch,condition is false,is assigned to the constant 1,assigned,return from call to `frontend::Frontend::set_field_via_local`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/frontend.cpp, frontend::call_Frontend_constructor_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `frontend::Frontend::Frontend`,parameter `n` of frontend::Frontend::Frontend,condition is false,is assigned to the constant 1,assigned,return from call to `frontend::Frontend::Frontend`,in call to `frontend::Frontend::Frontend`,parameter `__param_0` of frontend::Frontend::Frontend,assigned,return from call to `frontend::Frontend::Frontend`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/frontend.cpp, frontend::call_Frontend_constructor2_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `frontend::Frontend::Frontend`,parameter `n` of frontend::Frontend::Frontend,condition is false,is assigned to the constant 1,assigned,assigned,return from call to `frontend::Frontend::Frontend`,in call to `frontend::Frontend::Frontend`,parameter `__param_0` of frontend::Frontend::Frontend,assigned,return from call to `frontend::Frontend::Frontend`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/frontend.cpp, frontend::call_set_field_via_local_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `frontend::Frontend::set_field_via_local`,parameter `n` of frontend::Frontend::set_field_via_local,in call to `malloc (null case)` (modelled),is assigned to the null pointer,assigned,taking "else" branch,condition is false,is assigned to the constant 1,assigned,return from call to `frontend::Frontend::set_field_via_local`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/frontend.cpp, frontend::not_boolean_bad, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,allocated by call to `malloc` (modelled),assigned,taking "then" branch,condition is false,is assigned to the constant 1,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, test_syntactic_specialization_bad, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [parameter `ptr` of test_syntactic_specialization_bad,in call to `call_call_funptr[specialized with functions]`,parameter `ptr` of call_call_funptr[specialized with functions],in call to `call_funptr[specialized with functions]`,parameter `ptr` of call_funptr[specialized with functions],in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `call_funptr[specialized with functions]`,return from call to `call_call_funptr[specialized with functions]`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, test_returned_funptr_specialization_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [parameter `ptr` of test_returned_funptr_specialization_bad,in call to `call_call_funptr[specialized with functions]`,parameter `ptr` of call_call_funptr[specialized with functions],in call to `call_funptr[specialized with functions]`,parameter `ptr` of call_funptr[specialized with functions],in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `call_funptr[specialized with functions]`,return from call to `call_call_funptr[specialized with functions]`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, funptr_if_bad, 10, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, funptr_else_bad, 10, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, funptr_conditional_call, 9, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [variable `ptr` declared here,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, funptr_conditional_call_bad, 0, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,when calling `funptr_conditional_call` here,variable `ptr` declared here,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, funptr_apply_funptr_with_intptrptr_specialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `apply_funptr_with_intptrptr[specialized with functions]`,parameter `ptr` of apply_funptr_with_intptrptr[specialized with functions],in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `apply_funptr_with_intptrptr[specialized with functions]`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, apply_funptr_with_intptrptr_and_after[specialized with functions], 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [parameter `ptr` of apply_funptr_with_intptrptr_and_after[specialized with functions],in call to `apply_funptr_with_intptrptr[specialized with functions]`,parameter `ptr` of apply_funptr_with_intptrptr[specialized with functions],in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `apply_funptr_with_intptrptr[specialized with functions]`,when calling `dereference_dereference_ptr` here,parameter `ptr` of dereference_dereference_ptr,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, test_syntactic_specialization_bad, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `call_call_funptr[specialized with functions]`,in call to `call_funptr[specialized with functions]`,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `call_funptr[specialized with functions]`,return from call to `call_call_funptr[specialized with functions]`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, test_returned_funptr_specialization_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `call_call_funptr[specialized with functions]`,in call to `call_funptr[specialized with functions]`,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `call_funptr[specialized with functions]`,return from call to `call_call_funptr[specialized with functions]`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, funptr_if_bad, 10, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, funptr_else_bad, 10, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, funptr_conditional_call, 9, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, funptr_conditional_call_bad, 0, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,when calling `funptr_conditional_call` here,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, funptr_apply_funptr_with_intptrptr_specialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `apply_funptr_with_intptrptr[specialized with functions]`,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `apply_funptr_with_intptrptr[specialized with functions]`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, apply_funptr_with_intptrptr_and_after[specialized with functions], 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `apply_funptr_with_intptrptr[specialized with functions]`,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `apply_funptr_with_intptrptr[specialized with functions]`,when calling `dereference_dereference_ptr` here,parameter `ptr` of dereference_dereference_ptr,invalid access occurs here] codetoanalyze/cpp/pulse/funptr.cpp, funptr_conditionnaly_apply_funptr_with_intptrptr_unspecialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,in call to `conditionnaly_apply_funptr_with_intptrptr`,is assigned to the null pointer,assigned,return from call to `conditionnaly_apply_funptr_with_intptrptr`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, funptr_conditionnaly_apply_funptr_with_intptrptr_specialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `conditionnaly_apply_funptr_with_intptrptr[specialized with functions]`,is assigned to the null pointer,assigned,return from call to `conditionnaly_apply_funptr_with_intptrptr[specialized with functions]`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, test_assign_nullptr_callback_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [parameter `ptr` of test_assign_nullptr_callback_bad,in call to `apply_callback[specialized with functions]`,parameter `ptr` of apply_callback[specialized with functions],in call to `FunPtrCallback::apply[specialized with functions]`,parameter `ptr` of FunPtrCallback::apply[specialized with functions],in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `FunPtrCallback::apply[specialized with functions]`,return from call to `apply_callback[specialized with functions]`,invalid access occurs here] -codetoanalyze/cpp/pulse/funptr.cpp, test_update_callback_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [parameter `ptr` of test_update_callback_bad,in call to `apply_callback[specialized with functions]`,parameter `ptr` of apply_callback[specialized with functions],in call to `FunPtrCallback::apply[specialized with functions]`,parameter `ptr` of FunPtrCallback::apply[specialized with functions],in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `FunPtrCallback::apply[specialized with functions]`,return from call to `apply_callback[specialized with functions]`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, funptr_conditionnaly_apply_funptr_with_intptrptr_specialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `conditionnaly_apply_funptr_with_intptrptr[specialized with functions]`,is assigned to the null pointer,assigned,return from call to `conditionnaly_apply_funptr_with_intptrptr[specialized with functions]`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, test_assign_nullptr_callback_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `apply_callback[specialized with functions]`,in call to `FunPtrCallback::apply[specialized with functions]`,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `FunPtrCallback::apply[specialized with functions]`,return from call to `apply_callback[specialized with functions]`,invalid access occurs here] +codetoanalyze/cpp/pulse/funptr.cpp, test_update_callback_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `apply_callback[specialized with functions]`,in call to `FunPtrCallback::apply[specialized with functions]`,in call to `assign_nullptr`,is assigned to the null pointer,assigned,return from call to `assign_nullptr`,return from call to `FunPtrCallback::apply[specialized with functions]`,return from call to `apply_callback[specialized with functions]`,invalid access occurs here] codetoanalyze/cpp/pulse/globals.cpp, several_instantiations_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the constant 1,in call to `set_templated_global_int`,parameter `b` of set_templated_global_int,assigned,return from call to `set_templated_global_int`,is assigned to the null pointer,in call to `set_templated_global_bool`,parameter `b` of set_templated_global_bool,assigned,return from call to `set_templated_global_bool`,taking "then" branch,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/globals.cpp, read_templated_const_global_then_crash_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [global variable `yes` accessed here,in call to `__infer_globals_initializer_yes`,is assigned to the constant 1,assigned,return from call to `__infer_globals_initializer_yes`,taking "then" branch,global variable `templated_const_global` accessed here,in call to `__infer_globals_initializer_templated_const_global`,is assigned to the constant 1,assigned,return from call to `__infer_globals_initializer_templated_const_global`,taking "then" branch,global variable `templated_const_global` accessed here,in call to `__infer_globals_initializer_templated_const_global`,is assigned to the null pointer,assigned,return from call to `__infer_globals_initializer_templated_const_global`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/globals.cpp, read_templated_const_global_then_crash_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `__infer_globals_initializer_yes`,is assigned to the constant 1,assigned,return from call to `__infer_globals_initializer_yes`,taking "then" branch,in call to `__infer_globals_initializer_templated_const_global`,is assigned to the constant 1,assigned,return from call to `__infer_globals_initializer_templated_const_global`,taking "then" branch,in call to `__infer_globals_initializer_templated_const_global`,is assigned to the null pointer,assigned,return from call to `__infer_globals_initializer_templated_const_global`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/header.h, copy_in_header_bad, 1, PULSE_UNNECESSARY_COPY, no_bucket, ERROR, [first instantiated at,copied here (with type `std::vector> const &`)] codetoanalyze/cpp/pulse/header.h, copy_in_header_bad, 1, PULSE_UNNECESSARY_COPY, no_bucket, ERROR, [first instantiated at,copied here (with type `std::vector,std::allocator>,std::allocator,std::allocator>>> const &`)] -codetoanalyze/cpp/pulse/instantiate_pre_addresses.cpp, set_inner_pointer_bad, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `new` (modelled),in call to `mutate_deep_pointers`,is assigned to the constant 24,assigned,return from call to `mutate_deep_pointers`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/instantiate_pre_addresses.cpp, set_inner_pointer_bad, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `mutate_deep_pointers`,is assigned to the constant 24,assigned,return from call to `mutate_deep_pointers`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/interprocedural.cpp, delete_then_read_bad, 2, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `x` of delete_then_read_bad,was invalidated by `delete`,use-after-lifetime part of the trace starts here,parameter `x` of delete_then_read_bad,when calling `wraps_read` here,parameter `x` of wraps_read,when calling `wraps_read_inner` here,parameter `x` of wraps_read_inner,invalid access occurs here] codetoanalyze/cpp/pulse/interprocedural.cpp, delete_aliased_then_read_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `x` of delete_aliased_then_read_bad,assigned,was invalidated by `delete`,use-after-lifetime part of the trace starts here,parameter `x` of delete_aliased_then_read_bad,assigned,when calling `wraps_read` here,parameter `x` of wraps_read,when calling `wraps_read_inner` here,parameter `x` of wraps_read_inner,invalid access occurs here] codetoanalyze/cpp/pulse/interprocedural.cpp, delete_then_write_bad, 2, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `x` of delete_then_write_bad,when calling `wraps_delete` here,parameter `x` of wraps_delete,when calling `wraps_delete_inner` here,parameter `x` of wraps_delete_inner,was invalidated by `delete`,use-after-lifetime part of the trace starts here,parameter `x` of delete_then_write_bad,when calling `wraps_read` here,parameter `x` of wraps_read,when calling `wraps_read_inner` here,parameter `x` of wraps_read_inner,invalid access occurs here] @@ -151,8 +151,8 @@ codetoanalyze/cpp/pulse/nullptr.cpp, call_test_after_dereference2_bad, 1, NULLPT codetoanalyze/cpp/pulse/nullptr.cpp, SomeDerivedClass::SomeDerivedClass, 0, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [*** SUPPRESSED ***,source of the null value part of the trace starts here,parameter `ptr` of SomeDerivedClass::SomeDerivedClass,when calling `SomeClass::SomeClass` here,assigned,is assigned to the null pointer,null pointer dereference part of the trace starts here,parameter `ptr` of SomeDerivedClass::SomeDerivedClass,invalid access occurs here] codetoanalyze/cpp/pulse/nullptr.cpp, createSomeDerivedClass_from_unknown_function_ok, 1, NULLPTR_DEREFERENCE, no_bucket, ERROR, [*** SUPPRESSED ***,source of the null value part of the trace starts here,parameter `ptr` of SomeDerivedClass::SomeDerivedClass,when calling `SomeClass::SomeClass` here,assigned,is assigned to the null pointer,null pointer dereference part of the trace starts here,in call to function `unknown_function_X` with no summary,when calling `SomeDerivedClass::SomeDerivedClass` here,parameter `ptr` of SomeDerivedClass::SomeDerivedClass,invalid access occurs here] codetoanalyze/cpp/pulse/nullptr.cpp, test_call_nullptr_bad, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/nullptr.cpp, call_incr_deref_with_alias_bad, 7, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `x` declared here,assigned,in call to `incr_deref`,parameter `x` of incr_deref,is assigned to the constant 1,assigned,is assigned to the constant 1,assigned,return from call to `incr_deref`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/nullptr.cpp, test_capture_alias_good, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `x` declared here,assigned,in call to `lambda_nullptr.cpp:359_197208bc::operator()`,parameter `ptr2` of lambda_nullptr.cpp:359_197208bc::operator(),is assigned to the constant 1,assigned,return from call to `lambda_nullptr.cpp:359_197208bc::operator()`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/nullptr.cpp, call_incr_deref_with_alias_bad, 7, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `incr_deref`,parameter `x` of incr_deref,is assigned to the constant 1,assigned,is assigned to the constant 1,assigned,return from call to `incr_deref`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/nullptr.cpp, test_capture_alias_good, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `lambda_nullptr.cpp:359_197208bc::operator()`,parameter `ptr2` of lambda_nullptr.cpp:359_197208bc::operator(),is assigned to the constant 1,assigned,return from call to `lambda_nullptr.cpp:359_197208bc::operator()`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/optional.cpp, not_none_check_value0_bad, 4, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [is assigned to the constant 5,assigned,taking "then" branch,in call to `folly::Optional::Optional(=None)` (modelled),is assigned an empty value,invalid access occurs here] codetoanalyze/cpp/pulse/optional.cpp, not_none_check_value1_bad, 5, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [is assigned to the constant 5,in call to `Integer::Integer`,parameter `x` of Integer::Integer,assigned,return from call to `Integer::Integer`,in call to `Integer::Integer`,parameter `__param_0` of Integer::Integer,assigned,return from call to `Integer::Integer`,in call to `Integer::Integer`,parameter `__param_0` of Integer::Integer,assigned,return from call to `Integer::Integer`,in call to `Integer::get`,parameter `this` of Integer::get,returned,return from call to `Integer::get`,taking "then" branch,in call to `folly::Optional::Optional(=None)` (modelled),is assigned an empty value,invalid access occurs here] codetoanalyze/cpp/pulse/optional.cpp, not_none_check_value2_bad, 6, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [is assigned to the constant 5,in call to `Integer::Integer`,parameter `x` of Integer::Integer,assigned,return from call to `Integer::Integer`,in call to `Integer::Integer`,parameter `__param_0` of Integer::Integer,assigned,return from call to `Integer::Integer`,in call to `Integer::Integer`,parameter `__param_0` of Integer::Integer,assigned,return from call to `Integer::Integer`,in call to `Integer::get`,parameter `this` of Integer::get,returned,return from call to `Integer::get`,taking "then" branch,in call to `folly::Optional::Optional(=None)` (modelled),is assigned an empty value,invalid access occurs here] @@ -160,14 +160,14 @@ codetoanalyze/cpp/pulse/optional.cpp, none_no_check_bad, 2, OPTIONAL_EMPTY_ACCES codetoanalyze/cpp/pulse/optional.cpp, not_none_copy0_bad, 5, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [is assigned to the constant 5,assigned,taking "then" branch,in call to `folly::Optional::Optional(=None)` (modelled),is assigned an empty value,invalid access occurs here] codetoanalyze/cpp/pulse/optional.cpp, none_copy_bad, 3, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [in call to `folly::Optional::Optional(=None)` (modelled),is assigned an empty value,in call to `folly::Optional::Optional(folly::Optional arg)` (modelled),is assigned an empty value,invalid access occurs here] codetoanalyze/cpp/pulse/optional.cpp, assign_bad, 5, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [in call to `folly::Optional::Optional(=None)` (modelled),is assigned an empty value,in call to `folly::Optional::operator=`,parameter `other` of folly::Optional::operator=,in call to `folly::Optional::assign(folly::Optional arg)` (modelled),is assigned an empty value,return from call to `folly::Optional::operator=`,invalid access occurs here] -codetoanalyze/cpp/pulse/optional.cpp, assign2_bad, 4, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [variable `foo` declared here,in call to `folly::Optional::operator=`,in call to `folly::Optional::reset()` (modelled),is assigned an empty value,return from call to `folly::Optional::operator=`,invalid access occurs here] +codetoanalyze/cpp/pulse/optional.cpp, assign2_bad, 4, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [in call to `folly::Optional::operator=`,in call to `folly::Optional::reset()` (modelled),is assigned an empty value,return from call to `folly::Optional::operator=`,invalid access occurs here] codetoanalyze/cpp/pulse/optional.cpp, has_value_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,in call to `folly::Optional::has_value()` (modelled),taking "then" branch,taking "then" branch,in call to `folly::Optional::Optional(=None)` (modelled),is assigned an empty value,invalid access occurs here] codetoanalyze/cpp/pulse/optional.cpp, emplace, 4, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [*** SUPPRESSED ***,source of the null value part of the trace starts here,is assigned to the null pointer,null pointer dereference part of the trace starts here,parameter `state` of emplace,in call to `folly::Optional::operator_bool`,parameter `this` of folly::Optional::operator_bool,return from call to `folly::Optional::operator_bool`,invalid access occurs here] codetoanalyze/cpp/pulse/optional.cpp, operator_arrow_bad, 0, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [in call to `folly::Optional::Optional(=None)` (modelled),is assigned an empty value,in call to `folly::Optional::Optional(folly::Optional arg)` (modelled),is assigned an empty value,when calling `emplace` here,parameter `state` of emplace,in call to `folly::Optional::operator_bool`,parameter `this` of folly::Optional::operator_bool,return from call to `folly::Optional::operator_bool`,invalid access occurs here] codetoanalyze/cpp/pulse/optional.cpp, get_pointer_no_check_none_check_bad, 3, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [in call to `folly::Optional::get_pointer() empty case` (modelled),is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/optional.cpp, test_trace_ref, 4, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [variable `foo` declared here,in call to `folly::Optional::operator=`,in call to `folly::Optional::reset()` (modelled),is assigned an empty value,return from call to `folly::Optional::operator=`,invalid access occurs here] -codetoanalyze/cpp/pulse/pair.cpp, pair::deref_makepair_constants0_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [struct field address `first` created,in call to `pair::pairOfZeroNull3`,is assigned to the constant 58,assigned,in call to `std::pair::pair`,parameter `__param_0` of std::pair::pair,assigned,return from call to `std::pair::pair`,return from call to `pair::pairOfZeroNull3`,in call to `std::pair::pair`,parameter `__param_0` of std::pair::pair,assigned,return from call to `std::pair::pair`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/pair.cpp, pair::deref_makepair_constants1_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [struct field address `second` created,in call to `pair::pairOfZeroNull3`,is assigned to the constant 42,assigned,in call to `std::pair::pair`,parameter `__param_0` of std::pair::pair,assigned,return from call to `std::pair::pair`,return from call to `pair::pairOfZeroNull3`,in call to `std::pair::pair`,parameter `__param_0` of std::pair::pair,assigned,return from call to `std::pair::pair`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/optional.cpp, test_trace_ref, 4, OPTIONAL_EMPTY_ACCESS, no_bucket, ERROR, [in call to `folly::Optional::operator=`,in call to `folly::Optional::reset()` (modelled),is assigned an empty value,return from call to `folly::Optional::operator=`,invalid access occurs here] +codetoanalyze/cpp/pulse/pair.cpp, pair::deref_makepair_constants0_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `pair::pairOfZeroNull3`,is assigned to the constant 58,assigned,in call to `std::pair::pair`,parameter `__param_0` of std::pair::pair,assigned,return from call to `std::pair::pair`,return from call to `pair::pairOfZeroNull3`,in call to `std::pair::pair`,parameter `__param_0` of std::pair::pair,assigned,return from call to `std::pair::pair`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/pair.cpp, pair::deref_makepair_constants1_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `pair::pairOfZeroNull3`,is assigned to the constant 42,assigned,in call to `std::pair::pair`,parameter `__param_0` of std::pair::pair,assigned,return from call to `std::pair::pair`,return from call to `pair::pairOfZeroNull3`,in call to `std::pair::pair`,parameter `__param_0` of std::pair::pair,assigned,return from call to `std::pair::pair`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/path.cpp, FP_only_bad_on_42_latent, 2, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [in call to `may_return_null`,parameter `x` of may_return_null,taking "then" branch,is assigned to the null pointer,returned,return from call to `may_return_null`,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/path.cpp, FN_faulty_call_bad, 0, NULLPTR_DEREFERENCE, no_bucket, ERROR, [when calling `FP_only_bad_on_42_latent` here,in call to `may_return_null`,parameter `x` of may_return_null,taking "then" branch,is assigned to the null pointer,returned,return from call to `may_return_null`,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/readonly_shared_ptr_param.cpp, read_shared_ptr_param_bad, 0, PULSE_READONLY_SHARED_PTR_PARAM, no_bucket, ERROR, [Parameter x with type `std::shared_ptr`,used] @@ -181,7 +181,7 @@ codetoanalyze/cpp/pulse/reference_stability.cpp, folly_fastmap_clear_bad, 4, PUL codetoanalyze/cpp/pulse/reference_stability.cpp, folly_fastmap_rehash_bad, 4, PULSE_REFERENCE_STABILITY, no_bucket, ERROR, [invalidation part of the trace starts here,variable `map` declared here,was potentially invalidated by `folly::F14FastMap::rehash`,use-after-lifetime part of the trace starts here,variable `map` declared here,in call to `folly::F14FastMap::at` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/reference_stability.cpp, folly_fastmap_reserve_bad, 4, PULSE_REFERENCE_STABILITY, no_bucket, ERROR, [invalidation part of the trace starts here,variable `map` declared here,was potentially invalidated by `folly::F14FastMap::reserve`,use-after-lifetime part of the trace starts here,variable `map` declared here,in call to `folly::F14FastMap::at` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/reference_stability.cpp, folly_fastmap_operator_equal_bad, 4, PULSE_REFERENCE_STABILITY, no_bucket, ERROR, [invalidation part of the trace starts here,variable `map` declared here,when calling `folly::F14FastMap::operator=` here,parameter `this` of folly::F14FastMap::operator=,when calling `folly::F14ValueMap::operator=` here,parameter `this` of folly::F14ValueMap::operator=,was potentially invalidated by `folly::F14ValueMap::operator=`,use-after-lifetime part of the trace starts here,variable `map` declared here,in call to `folly::F14FastMap::at` (modelled),assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/reference_wrapper.cpp, reference_wrapper_heap_bad, 2, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `C++ temporary` declared here,when calling `getwrapperHeap` here,variable `a` declared here,in call to `WrapsB::WrapsB`,allocated by call to `new` (modelled),assigned,return from call to `WrapsB::WrapsB`,when calling `WrapsB::~WrapsB` here,parameter `this` of WrapsB::~WrapsB,when calling `WrapsB::__infer_inner_destructor_~WrapsB` here,parameter `this` of WrapsB::__infer_inner_destructor_~WrapsB,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `C++ temporary` declared here,in call to `getwrapperHeap`,variable `a` declared here,in call to `WrapsB::WrapsB`,allocated by call to `new` (modelled),assigned,return from call to `WrapsB::WrapsB`,in call to `ReferenceWrapperHeap::ReferenceWrapperHeap`,parameter `a` of ReferenceWrapperHeap::ReferenceWrapperHeap,in call to `WrapsB::getb`,parameter `this` of WrapsB::getb,returned,return from call to `WrapsB::getb`,assigned,return from call to `ReferenceWrapperHeap::ReferenceWrapperHeap`,in call to `ReferenceWrapperHeap::ReferenceWrapperHeap`,parameter `__param_0` of ReferenceWrapperHeap::ReferenceWrapperHeap,assigned,return from call to `ReferenceWrapperHeap::ReferenceWrapperHeap`,return from call to `getwrapperHeap`,in call to `ReferenceWrapperHeap::ReferenceWrapperHeap`,parameter `__param_0` of ReferenceWrapperHeap::ReferenceWrapperHeap,assigned,return from call to `ReferenceWrapperHeap::ReferenceWrapperHeap`,invalid access occurs here] +codetoanalyze/cpp/pulse/reference_wrapper.cpp, reference_wrapper_heap_bad, 2, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,when calling `getwrapperHeap` here,in call to `WrapsB::WrapsB`,allocated by call to `new` (modelled),assigned,return from call to `WrapsB::WrapsB`,when calling `WrapsB::~WrapsB` here,parameter `this` of WrapsB::~WrapsB,when calling `WrapsB::__infer_inner_destructor_~WrapsB` here,parameter `this` of WrapsB::__infer_inner_destructor_~WrapsB,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `getwrapperHeap`,in call to `WrapsB::WrapsB`,allocated by call to `new` (modelled),assigned,return from call to `WrapsB::WrapsB`,in call to `ReferenceWrapperHeap::ReferenceWrapperHeap`,parameter `a` of ReferenceWrapperHeap::ReferenceWrapperHeap,in call to `WrapsB::getb`,parameter `this` of WrapsB::getb,returned,return from call to `WrapsB::getb`,assigned,return from call to `ReferenceWrapperHeap::ReferenceWrapperHeap`,in call to `ReferenceWrapperHeap::ReferenceWrapperHeap`,parameter `__param_0` of ReferenceWrapperHeap::ReferenceWrapperHeap,assigned,return from call to `ReferenceWrapperHeap::ReferenceWrapperHeap`,return from call to `getwrapperHeap`,in call to `ReferenceWrapperHeap::ReferenceWrapperHeap`,parameter `__param_0` of ReferenceWrapperHeap::ReferenceWrapperHeap,assigned,return from call to `ReferenceWrapperHeap::ReferenceWrapperHeap`,invalid access occurs here] codetoanalyze/cpp/pulse/reference_wrapper.cpp, reference_wrapper_stack_bad, 2, USE_AFTER_LIFETIME, no_bucket, ERROR, [invalidation part of the trace starts here,variable `C++ temporary` declared here,when calling `getwrapperStack` here,variable `b` declared here,is the address of a stack variable `b` whose lifetime has ended,use-after-lifetime part of the trace starts here,variable `C++ temporary` declared here,in call to `getwrapperStack`,variable `b` declared here,in call to `ReferenceWrapperStack::ReferenceWrapperStack`,parameter `bref` of ReferenceWrapperStack::ReferenceWrapperStack,assigned,return from call to `ReferenceWrapperStack::ReferenceWrapperStack`,in call to `ReferenceWrapperStack::ReferenceWrapperStack`,parameter `__param_0` of ReferenceWrapperStack::ReferenceWrapperStack,assigned,return from call to `ReferenceWrapperStack::ReferenceWrapperStack`,return from call to `getwrapperStack`,in call to `ReferenceWrapperStack::ReferenceWrapperStack`,parameter `__param_0` of ReferenceWrapperStack::ReferenceWrapperStack,assigned,return from call to `ReferenceWrapperStack::ReferenceWrapperStack`,invalid access occurs here] codetoanalyze/cpp/pulse/returns.cpp, returns::return_literal_stack_reference_bad, 0, STACK_VARIABLE_ADDRESS_ESCAPE, no_bucket, ERROR, [variable `C++ temporary` declared here,returned here] codetoanalyze/cpp/pulse/returns.cpp, returns::return_variable_stack_reference1_bad, 2, STACK_VARIABLE_ADDRESS_ESCAPE, no_bucket, ERROR, [variable `C++ temporary` declared here,assigned,returned here] @@ -210,9 +210,9 @@ codetoanalyze/cpp/pulse/shared_ptr_deref.cpp, shared_ptr::shared_ptr_move_null_d codetoanalyze/cpp/pulse/shared_ptr_destructor.cpp, destructor_shared_ptr::destructor0_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `std::shared_ptr::shared_ptr(T*)` (modelled),in call to `std::shared_ptr::~shared_ptr()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/shared_ptr_destructor.cpp, destructor_shared_ptr::destructor1_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `std::shared_ptr::shared_ptr(T*)` (modelled),in call to `std::shared_ptr::~shared_ptr()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/shared_ptr_destructor.cpp, destructor_shared_ptr::destructor2_bad, 7, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `std::shared_ptr::shared_ptr(T*)` (modelled),in call to `std::shared_ptr::~shared_ptr()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/shared_ptr_destructor.cpp, destructor_shared_ptr::destructor3_bad, 4, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,allocated by call to `new` (modelled),when calling `destructor_shared_ptr::Y::Y` here,allocated by call to `new` (modelled),when calling `destructor_shared_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] -codetoanalyze/cpp/pulse/shared_ptr_destructor.cpp, destructor_shared_ptr::destructor4_bad, 5, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,allocated by call to `new` (modelled),when calling `destructor_shared_ptr::Y::Y` here,allocated by call to `new` (modelled),when calling `destructor_shared_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] -codetoanalyze/cpp/pulse/shared_ptr_destructor.cpp, destructor_shared_ptr::destructor5_bad, 5, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,allocated by call to `new` (modelled),when calling `destructor_shared_ptr::Y::Y` here,allocated by call to `new` (modelled),when calling `destructor_shared_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] +codetoanalyze/cpp/pulse/shared_ptr_destructor.cpp, destructor_shared_ptr::destructor3_bad, 4, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,when calling `destructor_shared_ptr::Y::Y` here,when calling `destructor_shared_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] +codetoanalyze/cpp/pulse/shared_ptr_destructor.cpp, destructor_shared_ptr::destructor4_bad, 5, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,when calling `destructor_shared_ptr::Y::Y` here,when calling `destructor_shared_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] +codetoanalyze/cpp/pulse/shared_ptr_destructor.cpp, destructor_shared_ptr::destructor5_bad, 5, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,when calling `destructor_shared_ptr::Y::Y` here,when calling `destructor_shared_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] codetoanalyze/cpp/pulse/shared_ptr_semantics.cpp, shared_ptr_semantics::constructor0_bad, 6, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the constant 42,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/shared_ptr_semantics.cpp, shared_ptr_semantics::move_constructor0_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the constant 42,assigned,in call to `std::shared_ptr::shared_ptr(T*)` (modelled),taking "then" branch,in call to `std::shared_ptr::use_count()` (modelled),taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/shared_ptr_semantics.cpp, shared_ptr_semantics::move_constructor1_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the constant 42,assigned,in call to `std::shared_ptr::shared_ptr(T*)` (modelled),taking "then" branch,in call to `std::shared_ptr::use_count()` (modelled),taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] @@ -389,8 +389,8 @@ codetoanalyze/cpp/pulse/taint/unknown_code.cpp, unknown_code::skip_indirect_bad, codetoanalyze/cpp/pulse/taint/unknown_code.cpp, unknown_code::skip_indirect_bad, 3, PULSE_UNNECESSARY_COPY_INTERMEDIATE, no_bucket, ERROR, [copied here (with type `std::basic_string,std::allocator>&`)] codetoanalyze/cpp/pulse/taint/unknown_code.cpp, unknown_code::FN_via_skip_by_ref_bad, 3, PULSE_UNNECESSARY_COPY_INTERMEDIATE, no_bucket, ERROR, [copied here (with type `std::basic_string,std::allocator>&`)] codetoanalyze/cpp/pulse/taint/unknown_code.cpp, unknown_code::FN_via_skip_by_ref_bad, 4, PULSE_UNNECESSARY_COPY_INTERMEDIATE, no_bucket, ERROR, [copied here (with type `std::basic_string,std::allocator>&`)] -codetoanalyze/cpp/pulse/temporaries.cpp, temporaries::call_mk_UniquePtr_A_deref_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `C++ temporary` declared here,in call to `temporaries::mk_UniquePtr_A`,allocated by call to `new` (modelled),in call to `temporaries::UniquePtr::UniquePtr`,parameter `y` of temporaries::UniquePtr::UniquePtr,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,in call to `temporaries::UniquePtr::UniquePtr`,parameter `p` of temporaries::UniquePtr::UniquePtr,in call to `temporaries::UniquePtr::get`,parameter `this` of temporaries::UniquePtr::get,returned,return from call to `temporaries::UniquePtr::get`,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,return from call to `temporaries::mk_UniquePtr_A`,when calling `temporaries::UniquePtr::~UniquePtr` here,parameter `this` of temporaries::UniquePtr::~UniquePtr,when calling `temporaries::UniquePtr::__infer_inner_destructor_~UniquePtr` here,parameter `this` of temporaries::UniquePtr::__infer_inner_destructor_~UniquePtr,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `C++ temporary` declared here,in call to `temporaries::mk_UniquePtr_A`,allocated by call to `new` (modelled),in call to `temporaries::UniquePtr::UniquePtr`,parameter `y` of temporaries::UniquePtr::UniquePtr,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,in call to `temporaries::UniquePtr::UniquePtr`,parameter `p` of temporaries::UniquePtr::UniquePtr,in call to `temporaries::UniquePtr::get`,parameter `this` of temporaries::UniquePtr::get,returned,return from call to `temporaries::UniquePtr::get`,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,return from call to `temporaries::mk_UniquePtr_A`,in call to `temporaries::UniquePtr::get`,parameter `this` of temporaries::UniquePtr::get,returned,return from call to `temporaries::UniquePtr::get`,assigned,invalid access occurs here] -codetoanalyze/cpp/pulse/temporaries.cpp, temporaries::bind_temporary_to_const_bad, 6, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `C++ temporary` declared here,in call to `temporaries::mk_UniquePtr_A`,allocated by call to `new` (modelled),in call to `temporaries::UniquePtr::UniquePtr`,parameter `y` of temporaries::UniquePtr::UniquePtr,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,in call to `temporaries::UniquePtr::UniquePtr`,parameter `p` of temporaries::UniquePtr::UniquePtr,in call to `temporaries::UniquePtr::get`,parameter `this` of temporaries::UniquePtr::get,returned,return from call to `temporaries::UniquePtr::get`,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,return from call to `temporaries::mk_UniquePtr_A`,when calling `temporaries::UniquePtr::~UniquePtr` here,parameter `this` of temporaries::UniquePtr::~UniquePtr,when calling `temporaries::UniquePtr::__infer_inner_destructor_~UniquePtr` here,parameter `this` of temporaries::UniquePtr::__infer_inner_destructor_~UniquePtr,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `C++ temporary` declared here,in call to `temporaries::mk_UniquePtr_A`,allocated by call to `new` (modelled),in call to `temporaries::UniquePtr::UniquePtr`,parameter `y` of temporaries::UniquePtr::UniquePtr,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,in call to `temporaries::UniquePtr::UniquePtr`,parameter `p` of temporaries::UniquePtr::UniquePtr,in call to `temporaries::UniquePtr::get`,parameter `this` of temporaries::UniquePtr::get,returned,return from call to `temporaries::UniquePtr::get`,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,return from call to `temporaries::mk_UniquePtr_A`,in call to `temporaries::UniquePtr::get`,parameter `this` of temporaries::UniquePtr::get,returned,return from call to `temporaries::UniquePtr::get`,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/temporaries.cpp, temporaries::call_mk_UniquePtr_A_deref_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `temporaries::mk_UniquePtr_A`,allocated by call to `new` (modelled),in call to `temporaries::UniquePtr::UniquePtr`,parameter `y` of temporaries::UniquePtr::UniquePtr,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,in call to `temporaries::UniquePtr::UniquePtr`,parameter `p` of temporaries::UniquePtr::UniquePtr,in call to `temporaries::UniquePtr::get`,parameter `this` of temporaries::UniquePtr::get,returned,return from call to `temporaries::UniquePtr::get`,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,return from call to `temporaries::mk_UniquePtr_A`,when calling `temporaries::UniquePtr::~UniquePtr` here,parameter `this` of temporaries::UniquePtr::~UniquePtr,when calling `temporaries::UniquePtr::__infer_inner_destructor_~UniquePtr` here,parameter `this` of temporaries::UniquePtr::__infer_inner_destructor_~UniquePtr,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `temporaries::mk_UniquePtr_A`,allocated by call to `new` (modelled),in call to `temporaries::UniquePtr::UniquePtr`,parameter `y` of temporaries::UniquePtr::UniquePtr,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,in call to `temporaries::UniquePtr::UniquePtr`,parameter `p` of temporaries::UniquePtr::UniquePtr,in call to `temporaries::UniquePtr::get`,parameter `this` of temporaries::UniquePtr::get,returned,return from call to `temporaries::UniquePtr::get`,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,return from call to `temporaries::mk_UniquePtr_A`,in call to `temporaries::UniquePtr::get`,parameter `this` of temporaries::UniquePtr::get,returned,return from call to `temporaries::UniquePtr::get`,assigned,invalid access occurs here] +codetoanalyze/cpp/pulse/temporaries.cpp, temporaries::bind_temporary_to_const_bad, 6, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `temporaries::mk_UniquePtr_A`,allocated by call to `new` (modelled),in call to `temporaries::UniquePtr::UniquePtr`,parameter `y` of temporaries::UniquePtr::UniquePtr,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,in call to `temporaries::UniquePtr::UniquePtr`,parameter `p` of temporaries::UniquePtr::UniquePtr,in call to `temporaries::UniquePtr::get`,parameter `this` of temporaries::UniquePtr::get,returned,return from call to `temporaries::UniquePtr::get`,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,return from call to `temporaries::mk_UniquePtr_A`,when calling `temporaries::UniquePtr::~UniquePtr` here,parameter `this` of temporaries::UniquePtr::~UniquePtr,when calling `temporaries::UniquePtr::__infer_inner_destructor_~UniquePtr` here,parameter `this` of temporaries::UniquePtr::__infer_inner_destructor_~UniquePtr,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `temporaries::mk_UniquePtr_A`,allocated by call to `new` (modelled),in call to `temporaries::UniquePtr::UniquePtr`,parameter `y` of temporaries::UniquePtr::UniquePtr,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,in call to `temporaries::UniquePtr::UniquePtr`,parameter `p` of temporaries::UniquePtr::UniquePtr,in call to `temporaries::UniquePtr::get`,parameter `this` of temporaries::UniquePtr::get,returned,return from call to `temporaries::UniquePtr::get`,assigned,return from call to `temporaries::UniquePtr::UniquePtr`,return from call to `temporaries::mk_UniquePtr_A`,in call to `temporaries::UniquePtr::get`,parameter `this` of temporaries::UniquePtr::get,returned,return from call to `temporaries::UniquePtr::get`,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/trace.cpp, trace_free_bad, 4, USE_AFTER_FREE, no_bucket, ERROR, [invalidation part of the trace starts here,parameter `x` of trace_free_bad,in call to `make_alias`,parameter `src` of make_alias,assigned,return from call to `make_alias`,when calling `do_free` here,parameter `x` of do_free,assigned,was invalidated by call to `free()`,use-after-lifetime part of the trace starts here,parameter `x` of trace_free_bad,invalid access occurs here] codetoanalyze/cpp/pulse/traces.cpp, access_destructed_string, 6, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,assigned,in call to `std::basic_string::~basic_string()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,assigned,in call to `std::basic_string::data()` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/uninit.cpp, Uninit::call_init_by_store_ok, 3, PULSE_UNINITIALIZED_VALUE, no_bucket, ERROR, [struct field address `i` created,read to uninitialized value occurs here] @@ -421,9 +421,9 @@ codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::empty_ptr_field_deref_ codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::empty_ptr_field_deref2_bad, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `std::unique_ptr::unique_ptr()` (modelled),is assigned to the null pointer,invalid access occurs here] codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::empty_ptr_method_deref_bad, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `std::unique_ptr::unique_ptr()` (modelled),is assigned to the null pointer,invalid access occurs here] codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::unique_ptr_release0_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `std::unique_ptr::release()` (modelled),is assigned to the null pointer,invalid access occurs here] -codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::unique_ptr_release1_bad, 2, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,allocated by call to `new` (modelled),when calling `unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] +codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::unique_ptr_release1_bad, 2, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,when calling `unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::reset_ptr_null_deref_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,in call to `std::unique_ptr::reset(T*)` (modelled),invalid access occurs here] -codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::unique_ptr_release_get0_bad, 2, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,allocated by call to `new` (modelled),when calling `unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] +codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::unique_ptr_release_get0_bad, 2, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,when calling `unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::unique_ptr_release_get1_bad, 6, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `std::unique_ptr::release()` (modelled),is assigned to the null pointer,invalid access occurs here] codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::reset_ptr_null_deref2_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,in call to `std::unique_ptr::reset(T*)` (modelled),invalid access occurs here] codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::unique_ptr_copy_null_deref_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `std::unique_ptr::unique_ptr()` (modelled),is assigned to the null pointer,in call to `std::unique_ptr::unique_ptr(std::unique_ptr)` (modelled),invalid access occurs here] @@ -436,9 +436,9 @@ codetoanalyze/cpp/pulse/unique_ptr_deref.cpp, unique_ptr::operator_bool1_bad, 5, codetoanalyze/cpp/pulse/unique_ptr_destructor.cpp, destructor_unique_ptr::destructor0_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `std::unique_ptr::unique_ptr(T*)` (modelled),in call to `std::unique_ptr::~unique_ptr()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/unique_ptr_destructor.cpp, destructor_unique_ptr::destructor1_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `std::unique_ptr::unique_ptr(T*)` (modelled),in call to `std::unique_ptr::~unique_ptr()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/unique_ptr_destructor.cpp, destructor_unique_ptr::destructor2_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `std::unique_ptr::unique_ptr(T*)` (modelled),in call to `std::unique_ptr::~unique_ptr()` (modelled),was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,when calling `destructor_unique_ptr::X::X` here,parameter `__param_0` of destructor_unique_ptr::X::X,invalid access occurs here] -codetoanalyze/cpp/pulse/unique_ptr_destructor.cpp, destructor_unique_ptr::destructor3_bad, 4, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,allocated by call to `new` (modelled),when calling `destructor_unique_ptr::Y::Y` here,allocated by call to `new` (modelled),when calling `destructor_unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] -codetoanalyze/cpp/pulse/unique_ptr_destructor.cpp, destructor_unique_ptr::destructor4_bad, 5, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,allocated by call to `new` (modelled),when calling `destructor_unique_ptr::Y::Y` here,allocated by call to `new` (modelled),when calling `destructor_unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] -codetoanalyze/cpp/pulse/unique_ptr_destructor.cpp, destructor_unique_ptr::destructor5_bad, 5, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,allocated by call to `new` (modelled),when calling `destructor_unique_ptr::Y::Y` here,allocated by call to `new` (modelled),when calling `destructor_unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] +codetoanalyze/cpp/pulse/unique_ptr_destructor.cpp, destructor_unique_ptr::destructor3_bad, 4, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,when calling `destructor_unique_ptr::Y::Y` here,when calling `destructor_unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] +codetoanalyze/cpp/pulse/unique_ptr_destructor.cpp, destructor_unique_ptr::destructor4_bad, 5, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,when calling `destructor_unique_ptr::Y::Y` here,when calling `destructor_unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] +codetoanalyze/cpp/pulse/unique_ptr_destructor.cpp, destructor_unique_ptr::destructor5_bad, 5, MEMORY_LEAK_CPP, no_bucket, ERROR, [allocation part of the trace starts here,when calling `destructor_unique_ptr::Y::Y` here,when calling `destructor_unique_ptr::X::X` here,allocated by `new` here,memory becomes unreachable here] codetoanalyze/cpp/pulse/unknown_functions.cpp, const_no_init_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/unknown_functions.cpp, call_init_with_pointer_value_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/unnecessary_copy.cpp, copy_decl_bad, 1, PULSE_UNNECESSARY_COPY, no_bucket, ERROR, [copied here (with type `Arr&`)] @@ -532,14 +532,14 @@ codetoanalyze/cpp/pulse/use_after_delete.cpp, delete_allocated_then_error_bad, 3 codetoanalyze/cpp/pulse/use_after_delete.cpp, null_call_delete_allocated_then_error_bad, 1, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,when calling `delete_allocated_then_error_bad` here,parameter `x` of delete_allocated_then_error_bad,invalid access occurs here] codetoanalyze/cpp/pulse/use_after_delete.cpp, access_field_after_delete_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,assigned,invalid access occurs here] codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::S::reinit, 0, PULSE_CONST_REFABLE, no_bucket, ERROR, [Parameter s with type `use_after_destructor::S`] -codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::reinit_after_explicit_destructor_ok, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `C++ temporary` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `C++ temporary` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::S`,parameter `__param_0` of use_after_destructor::S::S,assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] -codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::reinit_after_explicit_destructor_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `C++ temporary` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `C++ temporary` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::operator=`,parameter `__param_0` of use_after_destructor::S::operator=,assigned,return from call to `use_after_destructor::S::operator=`,invalid access occurs here] -codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::reinit_after_explicit_destructor2_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `s2` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `s2` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::operator=`,parameter `__param_0` of use_after_destructor::S::operator=,assigned,return from call to `use_after_destructor::S::operator=`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] -codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::double_destructor_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `s` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `s` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] -codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::use_after_destructor_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `s` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `s` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,invalid access occurs here] -codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::use_after_scope1_bad, 7, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `tmp` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `tmp` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::operator=`,parameter `__param_0` of use_after_destructor::S::operator=,assigned,return from call to `use_after_destructor::S::operator=`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] -codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::use_after_scope2_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,variable `C++ temporary` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,variable `C++ temporary` declared here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::operator=`,parameter `__param_0` of use_after_destructor::S::operator=,assigned,return from call to `use_after_destructor::S::operator=`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] -codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::placement_new_wrong_order_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),in call to `use_after_destructor::S::S`,parameter `this` of use_after_destructor::S::S,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),in call to `use_after_destructor::S::S`,parameter `this` of use_after_destructor::S::S,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::reinit_after_explicit_destructor_ok, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::S`,parameter `__param_0` of use_after_destructor::S::S,assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::reinit_after_explicit_destructor_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::operator=`,parameter `__param_0` of use_after_destructor::S::operator=,assigned,return from call to `use_after_destructor::S::operator=`,invalid access occurs here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::reinit_after_explicit_destructor2_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::operator=`,parameter `__param_0` of use_after_destructor::S::operator=,assigned,return from call to `use_after_destructor::S::operator=`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::double_destructor_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::use_after_destructor_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,invalid access occurs here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::use_after_scope1_bad, 7, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::operator=`,parameter `__param_0` of use_after_destructor::S::operator=,assigned,return from call to `use_after_destructor::S::operator=`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::use_after_scope2_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,in call to `use_after_destructor::S::operator=`,parameter `__param_0` of use_after_destructor::S::operator=,assigned,return from call to `use_after_destructor::S::operator=`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::placement_new_wrong_order_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,was invalidated by `delete`,use-after-lifetime part of the trace starts here,in call to `use_after_destructor::S::S`,allocated by call to `new` (modelled),assigned,return from call to `use_after_destructor::S::S`,when calling `use_after_destructor::S::~S` here,parameter `this` of use_after_destructor::S::~S,when calling `use_after_destructor::S::__infer_inner_destructor_~S` here,parameter `this` of use_after_destructor::S::__infer_inner_destructor_~S,invalid access occurs here] codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::placement_new_aliasing1_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `()` (modelled),assigned,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::placement_new_aliasing2_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,in call to `()` (modelled),assigned,invalid access occurs here] codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::placement_new_aliasing3_bad, 6, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,allocated by call to `new` (modelled),assigned,was invalidated by `delete`,use-after-lifetime part of the trace starts here,allocated by call to `new` (modelled),assigned,assigned,invalid access occurs here] diff --git a/infer/tests/codetoanalyze/java/pulse/issues.exp b/infer/tests/codetoanalyze/java/pulse/issues.exp index 70d9af7d6f2..f46b5f032e3 100644 --- a/infer/tests/codetoanalyze/java/pulse/issues.exp +++ b/infer/tests/codetoanalyze/java/pulse/issues.exp @@ -119,9 +119,9 @@ codetoanalyze/java/pulse/NullPointerExceptions.java, codetoanalyze.java.infer.Nu codetoanalyze/java/pulse/NullPointerExceptions.java, codetoanalyze.java.infer.NullPointerExceptions.call_incr_deref2_bad():void, 12, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/java/pulse/NullPointerExceptions.java, codetoanalyze.java.infer.NullPointerExceptions.call_incr_deref3_bad():void, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,when calling `void NullPointerExceptions.incr_deref3(NullPointerExceptions$A,NullPointerExceptions$A,NullPointerExceptions$A)` here,parameter `a1` of void NullPointerExceptions.incr_deref3(NullPointerExceptions$A,NullPointerExceptions$A,NullPointerExceptions$A),invalid access occurs here] codetoanalyze/java/pulse/NullPointerExceptionsMoreTests.java, codetoanalyze.java.infer.NullPointerExceptionsMoreTests.testNullStringDereferencedBad():int, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/java/pulse/NullSafeExample.java, OtherClass.buggyMethodBad():java.lang.String, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `new` (modelled),in call to `OtherClass.()`,is assigned to the null pointer,assigned,return from call to `OtherClass.()`,in call to `OtherClass OtherClass.canReturnNull()`,parameter `this` of OtherClass OtherClass.canReturnNull(),returned,return from call to `OtherClass OtherClass.canReturnNull()`,assigned,invalid access occurs here] -codetoanalyze/java/pulse/NullSafeExample.java, NullsafeExampleLocal.testingNullsafeLocalMode():void, 3, NULLPTR_DEREFERENCE_IN_NULLSAFE_CLASS, no_bucket, ERROR, [allocated by call to `new` (modelled),in call to `OtherClass.()`,is assigned to the null pointer,assigned,return from call to `OtherClass.()`,in call to `OtherClass OtherClass.canReturnNull()`,parameter `this` of OtherClass OtherClass.canReturnNull(),returned,return from call to `OtherClass OtherClass.canReturnNull()`,assigned,assigned,invalid access occurs here] -codetoanalyze/java/pulse/NullSafeExample.java, NullsafeExampleStrict.testingNullsafeStrictMode():void, 3, NULLPTR_DEREFERENCE_IN_NULLSAFE_CLASS, no_bucket, ERROR, [allocated by call to `new` (modelled),in call to `OtherClass.()`,is assigned to the null pointer,assigned,return from call to `OtherClass.()`,in call to `OtherClass OtherClass.canReturnNull()`,parameter `this` of OtherClass OtherClass.canReturnNull(),returned,return from call to `OtherClass OtherClass.canReturnNull()`,assigned,assigned,invalid access occurs here] +codetoanalyze/java/pulse/NullSafeExample.java, OtherClass.buggyMethodBad():java.lang.String, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `OtherClass.()`,is assigned to the null pointer,assigned,return from call to `OtherClass.()`,in call to `OtherClass OtherClass.canReturnNull()`,parameter `this` of OtherClass OtherClass.canReturnNull(),returned,return from call to `OtherClass OtherClass.canReturnNull()`,assigned,invalid access occurs here] +codetoanalyze/java/pulse/NullSafeExample.java, NullsafeExampleLocal.testingNullsafeLocalMode():void, 3, NULLPTR_DEREFERENCE_IN_NULLSAFE_CLASS, no_bucket, ERROR, [in call to `OtherClass.()`,is assigned to the null pointer,assigned,return from call to `OtherClass.()`,in call to `OtherClass OtherClass.canReturnNull()`,parameter `this` of OtherClass OtherClass.canReturnNull(),returned,return from call to `OtherClass OtherClass.canReturnNull()`,assigned,assigned,invalid access occurs here] +codetoanalyze/java/pulse/NullSafeExample.java, NullsafeExampleStrict.testingNullsafeStrictMode():void, 3, NULLPTR_DEREFERENCE_IN_NULLSAFE_CLASS, no_bucket, ERROR, [in call to `OtherClass.()`,is assigned to the null pointer,assigned,return from call to `OtherClass.()`,in call to `OtherClass OtherClass.canReturnNull()`,parameter `this` of OtherClass OtherClass.canReturnNull(),returned,return from call to `OtherClass OtherClass.canReturnNull()`,assigned,assigned,invalid access occurs here] codetoanalyze/java/pulse/PreconditionsExample.java, codetoanalyze.java.infer.PreconditionsExample.testCheckNotNullArgLatent(java.lang.Object):void, 3, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/java/pulse/PreconditionsExample.java, codetoanalyze.java.infer.PreconditionsExample.checkStateConditionSatBad():void, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/java/pulse/PreconditionsExample.java, codetoanalyze.java.infer.PreconditionsExample.checkArgumentSatBad():void, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] diff --git a/infer/tests/codetoanalyze/objc/pulse/issues.exp b/infer/tests/codetoanalyze/objc/pulse/issues.exp index c7f15e049c4..e61670120cc 100644 --- a/infer/tests/codetoanalyze/objc/pulse/issues.exp +++ b/infer/tests/codetoanalyze/objc/pulse/issues.exp @@ -1,5 +1,5 @@ codetoanalyze/objc/pulse/dynamic_dispatch/testDynamicDispatch.m, testDynamicDispatch_NPEBad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `MyViewController.getViewControllerNumber`,is assigned to the null pointer,assigned,returned,return from call to `MyViewController.getViewControllerNumber`,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/memory_leaks/DeallocCalls.m, memory_leak_raii_leak_bad, 1, MEMORY_LEAK_C, no_bucket, ERROR, [allocation part of the trace starts here,allocated by call to `alloc` (modelled),when calling `BufferContainer2.init` here,allocated by `malloc` here,memory becomes unreachable here] +codetoanalyze/objc/pulse/memory_leaks/DeallocCalls.m, memory_leak_raii_leak_bad, 1, MEMORY_LEAK_C, no_bucket, ERROR, [allocation part of the trace starts here,when calling `BufferContainer2.init` here,allocated by `malloc` here,memory becomes unreachable here] codetoanalyze/objc/pulse/memory_leaks/MallocInObjC.m, leak_bad, 0, MEMORY_LEAK_C, no_bucket, ERROR, [allocation part of the trace starts here,allocated by `malloc` here,memory becomes unreachable here] codetoanalyze/objc/pulse/memory_leaks/MemoryLeaks.m, MemoryLeaks.cg_path_create_with_rect_leak_bad, 3, MEMORY_LEAK_C, no_bucket, ERROR, [allocation part of the trace starts here,allocated by `CGPathCreateWithRect (custom malloc)` here,memory becomes unreachable here] codetoanalyze/objc/pulse/memory_leaks/MemoryLeaks.m, MemoryLeaks.cg_path_create_mutable_leak_bad:, 2, MEMORY_LEAK_C, no_bucket, ERROR, [allocation part of the trace starts here,allocated by `CGPathCreateMutable (custom malloc)` here,memory becomes unreachable here] @@ -12,9 +12,9 @@ codetoanalyze/objc/pulse/memory_leaks/MemoryLeaksInBlocks.m, objc_block_block_fr codetoanalyze/objc/pulse/null_deref/BlockVar.m, BlockVar.callBlockNPEBad, 7, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/BlockVar.m, BlockVar.blockPostNullDerefBad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,in call to `objc_block_BlockVar.blockPostNullDerefBad_2`,value captured by value as `x`,returned,return from call to `objc_block_BlockVar.blockPostNullDerefBad_2`,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/BlockVar.m, BlockVar.capturedNullDerefBad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,when calling `objc_block_BlockVar.capturedNullDerefBad_4` here,value captured by value as `x`,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/Blocks_as_parameter.m, call_f_npe_bad, 6, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `B.f`,in call to `B.call_block:[specialized with blocks]`,value captured by value as `self`,in call to `objc_block_B.f_1`,is assigned to the constant 5,assigned,return from call to `objc_block_B.f_1`,return from call to `B.call_block:[specialized with blocks]`,returned,return from call to `B.f`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/ControllerTest.m, build_view_controller_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `alloc` (modelled),in call to `ViewController.initWithAValue:`,parameter `self` of ViewController.initWithAValue:,in call to `UIViewController.initWithNibName:bundle:` (modelled),assigned,return from call to `ViewController.initWithAValue:`,in call to `ViewController.viewDidLoad`,is assigned to the null pointer,assigned,return from call to `ViewController.viewDidLoad`,in call to `ViewController.a`,parameter `self` of ViewController.a,returned,return from call to `ViewController.a`,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/ControllerTest.m, build_view_controller2_good, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `alloc` (modelled),in call to `ViewController2.initWithAValue:`,parameter `self` of ViewController2.initWithAValue:,in call to `UIViewController.initWithNibName:bundle:` (modelled),assigned,return from call to `ViewController2.initWithAValue:`,in call to `ViewController2.viewDidLoad`,is assigned to the null pointer,assigned,return from call to `ViewController2.viewDidLoad`,in call to `ViewController2.a`,parameter `self` of ViewController2.a,returned,return from call to `ViewController2.a`,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/Blocks_as_parameter.m, call_f_npe_bad, 6, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `B.f`,in call to `B.call_block:[specialized with blocks]`,in call to `objc_block_B.f_1`,is assigned to the constant 5,assigned,return from call to `objc_block_B.f_1`,return from call to `B.call_block:[specialized with blocks]`,returned,return from call to `B.f`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/ControllerTest.m, build_view_controller_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `ViewController.viewDidLoad`,is assigned to the null pointer,assigned,return from call to `ViewController.viewDidLoad`,in call to `ViewController.a`,parameter `self` of ViewController.a,returned,return from call to `ViewController.a`,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/ControllerTest.m, build_view_controller2_good, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `ViewController2.viewDidLoad`,is assigned to the null pointer,assigned,return from call to `ViewController2.viewDidLoad`,in call to `ViewController2.a`,parameter `self` of ViewController2.a,returned,return from call to `ViewController2.a`,assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/CustomControllerTest.m, _ViewWillAppear, 3, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [parameter `animated` of _ViewWillAppear,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/FrontendCategoryPerson.m, categoryMethodsOkIsChildNPEBad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `CategoryPerson.isChild`,parameter `self` of CategoryPerson.isChild,taking "then" branch,is assigned to the constant 1,returned,return from call to `CategoryPerson.isChild`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/FrontendEqualNames.m, EqualNamesInstanceNPEBad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `EqualNamesA.meth`,is assigned to the null pointer,returned,return from call to `EqualNamesA.meth`,assigned,invalid access occurs here] @@ -23,7 +23,7 @@ codetoanalyze/objc/pulse/null_deref/FrontendExplicitIvarName.m, ExplicitIvarName codetoanalyze/objc/pulse/null_deref/FunPtrVar.m, FunPtrVar.callFunPtrNPEBad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/FunPtrVar.m, FunPtrVar.funptrPostNullDerefBad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,in call to `intptr_id`,parameter `x` of intptr_id,returned,return from call to `intptr_id`,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/FunPtrVar.m, FunPtrVar.argNullDerefBad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,when calling `deref_intptr` here,parameter `x` of deref_intptr,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/FunPtr_as_parameter.m, call_BFunPtr_f_npe_bad, 6, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `BFunPtr.f`,in call to `BFunPtr.call_funptr:[specialized with functions]`,parameter `self` of BFunPtr.call_funptr:[specialized with functions],in call to `assign_5_to_x`,is assigned to the constant 5,assigned,return from call to `assign_5_to_x`,return from call to `BFunPtr.call_funptr:[specialized with functions]`,returned,return from call to `BFunPtr.f`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/FunPtr_as_parameter.m, call_BFunPtr_f_npe_bad, 6, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `BFunPtr.f`,in call to `BFunPtr.call_funptr:[specialized with functions]`,in call to `assign_5_to_x`,is assigned to the constant 5,assigned,return from call to `assign_5_to_x`,return from call to `BFunPtr.call_funptr:[specialized with functions]`,returned,return from call to `BFunPtr.f`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/IvarsInheritanceNPE.m, fields_set_up_correctly_npe_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/KindOfClassExample.m, isKindOfClassUnknown, 3, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [parameter `b` of isKindOfClassUnknown,in call to `Java.instanceof` (modelled),taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/KindOfClassExample.m, isKindOfClassBaseNPEBad, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [when calling `isKindOfClassUnknown` here,parameter `b` of isKindOfClassUnknown,in call to `Java.instanceof` (modelled),taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] @@ -33,46 +33,46 @@ codetoanalyze/objc/pulse/null_deref/ModelFromConfig.m, release_method_model_foun codetoanalyze/objc/pulse/null_deref/ModelFromConfig.m, bridge_method_model_found_bad, 4, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `get_ctyperef`,is assigned to the null pointer,assigned,returned,return from call to `get_ctyperef`,assigned,in call to `modelled as returning the first argument due to configuration option` (modelled),assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/ModelFromConfig.m, release_fst_found_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `get_ctyperef`,is assigned to the null pointer,assigned,returned,return from call to `get_ctyperef`,assigned,in call to `modelled as returning the first argument due to configuration option` (modelled),assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/NPEBlockProperty.m, test_explicitCaptured_no_specialization_bad, 14, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,in call to `objc_block_ExplicitCaptured.init_1`,parameter `x` of objc_block_ExplicitCaptured.init_1,in call to `ExplicitCaptured.setExplicit:`,parameter `explicit` of ExplicitCaptured.setExplicit:,assigned,return from call to `ExplicitCaptured.setExplicit:`,return from call to `objc_block_ExplicitCaptured.init_1`,in call to `objc_block_ExplicitCaptured.init_2`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,returned,return from call to `objc_block_ExplicitCaptured.init_2`,assigned,is assigned to the constant 1,in call to `objc_block_ExplicitCaptured.init_1`,parameter `x` of objc_block_ExplicitCaptured.init_1,in call to `ExplicitCaptured.setExplicit:`,parameter `explicit` of ExplicitCaptured.setExplicit:,assigned,return from call to `ExplicitCaptured.setExplicit:`,return from call to `objc_block_ExplicitCaptured.init_1`,in call to `objc_block_ExplicitCaptured.init_2`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,returned,return from call to `objc_block_ExplicitCaptured.init_2`,assigned,is assigned to the constant 1,in call to `objc_block_ExplicitCaptured.init_1`,parameter `x` of objc_block_ExplicitCaptured.init_1,in call to `ExplicitCaptured.setExplicit:`,parameter `explicit` of ExplicitCaptured.setExplicit:,assigned,return from call to `ExplicitCaptured.setExplicit:`,return from call to `objc_block_ExplicitCaptured.init_1`,in call to `objc_block_ExplicitCaptured.init_2`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,returned,return from call to `objc_block_ExplicitCaptured.init_2`,assigned,is assigned to the constant 1,in call to `objc_block_ExplicitCaptured.init_1`,parameter `x` of objc_block_ExplicitCaptured.init_1,in call to `ExplicitCaptured.setExplicit:`,parameter `explicit` of ExplicitCaptured.setExplicit:,assigned,return from call to `ExplicitCaptured.setExplicit:`,return from call to `objc_block_ExplicitCaptured.init_1`,in call to `objc_block_ExplicitCaptured.init_2`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,returned,return from call to `objc_block_ExplicitCaptured.init_2`,assigned,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,taking "then" branch,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEBlockProperty.m, test_explicitCaptured_specialized_no_alias_bad, 17, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `alloc` (modelled),in call to `ExplicitCaptured.init`,parameter `self` of ExplicitCaptured.init,in call to `NSObject.init` (modelled),assigned,taking "then" branch,assigned,value captured by value as `weakSelf`,return from call to `ExplicitCaptured.init`,in call to `objc_block_ExplicitCaptured.init_1`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.setExplicit:`,parameter `self` of ExplicitCaptured.setExplicit:,return from call to `ExplicitCaptured.setExplicit:`,return from call to `objc_block_ExplicitCaptured.init_1`,in call to `test_explicitCaptured_specializable[specialized with blocks]`,value captured by value as `weakSelf`,in call to `objc_block_ExplicitCaptured.init_2`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,returned,return from call to `objc_block_ExplicitCaptured.init_2`,assigned,is assigned to the constant 1,in call to `objc_block_ExplicitCaptured.init_1`,parameter `x` of objc_block_ExplicitCaptured.init_1,in call to `ExplicitCaptured.setExplicit:`,parameter `explicit` of ExplicitCaptured.setExplicit:,assigned,return from call to `ExplicitCaptured.setExplicit:`,return from call to `objc_block_ExplicitCaptured.init_1`,return from call to `test_explicitCaptured_specializable[specialized with blocks]`,in call to `test_explicitCaptured_specializable[specialized with blocks]`,value captured by value as `weakSelf`,in call to `objc_block_ExplicitCaptured.changeBehavior_3`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,returned,return from call to `objc_block_ExplicitCaptured.changeBehavior_3`,assigned,in call to `objc_block_ExplicitCaptured.changeBehavior_4`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,in call to `ExplicitCaptured.setExplicit:`,parameter `explicit` of ExplicitCaptured.setExplicit:,assigned,return from call to `ExplicitCaptured.setExplicit:`,return from call to `objc_block_ExplicitCaptured.changeBehavior_4`,returned,return from call to `test_explicitCaptured_specializable[specialized with blocks]`,assigned,taking "then" branch,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEBlockProperty.m, test_explicitCaptured_specialized_with_alias_bad, 12, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `alloc` (modelled),in call to `ExplicitCaptured.init`,parameter `self` of ExplicitCaptured.init,in call to `NSObject.init` (modelled),assigned,taking "then" branch,assigned,value captured by value as `weakSelf`,return from call to `ExplicitCaptured.init`,in call to `objc_block_ExplicitCaptured.init_1`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.setExplicit:`,parameter `self` of ExplicitCaptured.setExplicit:,return from call to `ExplicitCaptured.setExplicit:`,return from call to `objc_block_ExplicitCaptured.init_1`,in call to `test_explicitCaptured_specializable[specialized with blocks]`,value captured by value as `weakSelf`,in call to `objc_block_ExplicitCaptured.init_2`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,returned,return from call to `objc_block_ExplicitCaptured.init_2`,assigned,is assigned to the constant 1,in call to `objc_block_ExplicitCaptured.init_1`,parameter `x` of objc_block_ExplicitCaptured.init_1,in call to `ExplicitCaptured.setExplicit:`,parameter `explicit` of ExplicitCaptured.setExplicit:,assigned,return from call to `ExplicitCaptured.setExplicit:`,return from call to `objc_block_ExplicitCaptured.init_1`,return from call to `test_explicitCaptured_specializable[specialized with blocks]`,in call to `test_explicitCaptured_specializable[specialized with blocks]`,value captured by value as `weakSelf`,in call to `objc_block_ExplicitCaptured.changeBehavior_3`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,returned,return from call to `objc_block_ExplicitCaptured.changeBehavior_3`,assigned,in call to `objc_block_ExplicitCaptured.changeBehavior_4`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,in call to `ExplicitCaptured.setExplicit:`,parameter `explicit` of ExplicitCaptured.setExplicit:,assigned,return from call to `ExplicitCaptured.setExplicit:`,return from call to `objc_block_ExplicitCaptured.changeBehavior_4`,returned,return from call to `test_explicitCaptured_specializable[specialized with blocks]`,assigned,taking "then" branch,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEBlockProperty.m, test_retainCycle_unused_cycle_bad, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `alloc` (modelled),in call to `RetainCycle.init`,parameter `self` of RetainCycle.init,in call to `NSObject.init` (modelled),assigned,taking "then" branch,variable `counter` declared here,value captured by ref as `counter`,return from call to `RetainCycle.init`,in call to `call_counter_3times[specialized with blocks]`,value captured by ref as `counter`,in call to `objc_block_RetainCycle.init_5`,value captured by ref as `counter`,is assigned to the constant 1,assigned,returned,return from call to `objc_block_RetainCycle.init_5`,returned,return from call to `call_counter_3times[specialized with blocks]`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEBlockProperty.m, test_captured_in_captured_specialized_bad, 13, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `captured_in_captured_specializable[specialized with blocks]`,value captured by ref as `ptr`,in call to `call_block_captured_in_captured[specialized with blocks]`,value captured by ref as `ptr`,in call to `objc_block_captured_in_captured_specializable_6[specialized with blocks]`,value captured by ref as `ptr`,in call to `objc_block_test_captured_in_captured_specialized_bad_7`,is assigned to the null pointer,assigned,return from call to `objc_block_test_captured_in_captured_specialized_bad_7`,return from call to `objc_block_captured_in_captured_specializable_6[specialized with blocks]`,return from call to `call_block_captured_in_captured[specialized with blocks]`,return from call to `captured_in_captured_specializable[specialized with blocks]`,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEBlockProperty.m, test_localization_bad, 14, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `alloc` (modelled),in call to `ExplicitCaptured.init`,parameter `self` of ExplicitCaptured.init,in call to `NSObject.init` (modelled),assigned,taking "then" branch,assigned,value captured by value as `weakSelf`,return from call to `ExplicitCaptured.init`,in call to `call_callback[specialized with blocks]`,value captured by value as `weakSelf`,in call to `objc_block_test_localization_bad_9[specialized with blocks]`,is assigned to the constant 3,in call to `objc_block_ExplicitCaptured.init_1`,parameter `x` of objc_block_ExplicitCaptured.init_1,in call to `ExplicitCaptured.setExplicit:`,parameter `explicit` of ExplicitCaptured.setExplicit:,assigned,return from call to `ExplicitCaptured.setExplicit:`,return from call to `objc_block_ExplicitCaptured.init_1`,return from call to `objc_block_test_localization_bad_9[specialized with blocks]`,return from call to `call_callback[specialized with blocks]`,in call to `objc_block_ExplicitCaptured.init_2`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,returned,return from call to `objc_block_ExplicitCaptured.init_2`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEBlockProperty.m, test_explicitCaptured_specialized_no_alias_bad, 17, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `test_explicitCaptured_specializable[specialized with blocks]`,value captured by value as `weakSelf`,in call to `objc_block_ExplicitCaptured.init_2`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,returned,return from call to `objc_block_ExplicitCaptured.init_2`,assigned,is assigned to the constant 1,in call to `objc_block_ExplicitCaptured.init_1`,parameter `x` of objc_block_ExplicitCaptured.init_1,in call to `ExplicitCaptured.setExplicit:`,parameter `explicit` of ExplicitCaptured.setExplicit:,assigned,return from call to `ExplicitCaptured.setExplicit:`,return from call to `objc_block_ExplicitCaptured.init_1`,return from call to `test_explicitCaptured_specializable[specialized with blocks]`,in call to `test_explicitCaptured_specializable[specialized with blocks]`,value captured by value as `weakSelf`,in call to `objc_block_ExplicitCaptured.changeBehavior_3`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,returned,return from call to `objc_block_ExplicitCaptured.changeBehavior_3`,assigned,in call to `objc_block_ExplicitCaptured.changeBehavior_4`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,in call to `ExplicitCaptured.setExplicit:`,parameter `explicit` of ExplicitCaptured.setExplicit:,assigned,return from call to `ExplicitCaptured.setExplicit:`,return from call to `objc_block_ExplicitCaptured.changeBehavior_4`,returned,return from call to `test_explicitCaptured_specializable[specialized with blocks]`,assigned,taking "then" branch,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEBlockProperty.m, test_explicitCaptured_specialized_with_alias_bad, 12, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `test_explicitCaptured_specializable[specialized with blocks]`,value captured by value as `weakSelf`,in call to `objc_block_ExplicitCaptured.init_2`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,returned,return from call to `objc_block_ExplicitCaptured.init_2`,assigned,is assigned to the constant 1,in call to `objc_block_ExplicitCaptured.init_1`,parameter `x` of objc_block_ExplicitCaptured.init_1,in call to `ExplicitCaptured.setExplicit:`,parameter `explicit` of ExplicitCaptured.setExplicit:,assigned,return from call to `ExplicitCaptured.setExplicit:`,return from call to `objc_block_ExplicitCaptured.init_1`,return from call to `test_explicitCaptured_specializable[specialized with blocks]`,in call to `test_explicitCaptured_specializable[specialized with blocks]`,value captured by value as `weakSelf`,in call to `objc_block_ExplicitCaptured.changeBehavior_3`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,returned,return from call to `objc_block_ExplicitCaptured.changeBehavior_3`,assigned,in call to `objc_block_ExplicitCaptured.changeBehavior_4`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,in call to `ExplicitCaptured.setExplicit:`,parameter `explicit` of ExplicitCaptured.setExplicit:,assigned,return from call to `ExplicitCaptured.setExplicit:`,return from call to `objc_block_ExplicitCaptured.changeBehavior_4`,returned,return from call to `test_explicitCaptured_specializable[specialized with blocks]`,assigned,taking "then" branch,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEBlockProperty.m, test_retainCycle_unused_cycle_bad, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `call_counter_3times[specialized with blocks]`,in call to `objc_block_RetainCycle.init_5`,value captured by ref as `counter`,is assigned to the constant 1,assigned,returned,return from call to `objc_block_RetainCycle.init_5`,returned,return from call to `call_counter_3times[specialized with blocks]`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEBlockProperty.m, test_captured_in_captured_specialized_bad, 13, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `captured_in_captured_specializable[specialized with blocks]`,in call to `call_block_captured_in_captured[specialized with blocks]`,in call to `objc_block_captured_in_captured_specializable_6[specialized with blocks]`,in call to `objc_block_test_captured_in_captured_specialized_bad_7`,is assigned to the null pointer,assigned,return from call to `objc_block_test_captured_in_captured_specialized_bad_7`,return from call to `objc_block_captured_in_captured_specializable_6[specialized with blocks]`,return from call to `call_block_captured_in_captured[specialized with blocks]`,return from call to `captured_in_captured_specializable[specialized with blocks]`,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEBlockProperty.m, test_localization_bad, 14, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `call_callback[specialized with blocks]`,in call to `objc_block_test_localization_bad_9[specialized with blocks]`,is assigned to the constant 3,in call to `objc_block_ExplicitCaptured.init_1`,parameter `x` of objc_block_ExplicitCaptured.init_1,in call to `ExplicitCaptured.setExplicit:`,parameter `explicit` of ExplicitCaptured.setExplicit:,assigned,return from call to `ExplicitCaptured.setExplicit:`,return from call to `objc_block_ExplicitCaptured.init_1`,return from call to `objc_block_test_localization_bad_9[specialized with blocks]`,return from call to `call_callback[specialized with blocks]`,in call to `objc_block_ExplicitCaptured.init_2`,value captured by value as `weakSelf`,in call to `ExplicitCaptured.explicit`,parameter `self` of ExplicitCaptured.explicit,returned,return from call to `ExplicitCaptured.explicit`,returned,return from call to `objc_block_ExplicitCaptured.init_2`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/NPEBlocks.m, Singleton.dispatch_once_captured_vars_bad, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,macro expanded here,in call to `objc_block_Singleton.dispatch_once_captured_vars_bad_2`,value captured by value as `x`,assigned,macro expanded here,return from call to `objc_block_Singleton.dispatch_once_captured_vars_bad_2`,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/NPEBlocks.m, captured_npe_bad, 5, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,when calling `objc_block_captured_npe_bad_4` here,value captured by value as `x`,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEBlocks.m, dispatch_sync_specialized_latent, 6, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [variable `ptr` declared here,in call to `dispatch_sync_specializable[specialized with blocks]`,parameter `queue` of dispatch_sync_specializable[specialized with blocks],taking "else" branch,in call to `objc_block_dispatch_sync_specialized_latent_7`,is assigned to the null pointer,assigned,return from call to `objc_block_dispatch_sync_specialized_latent_7`,return from call to `dispatch_sync_specializable[specialized with blocks]`,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEBlocks.m, performAsCurrentTraitCollection_specialized_latent, 7, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [variable `ptr` declared here,in call to `performAsCurrentTraitCollection_specializable[specialized with blocks]`,parameter `traitCollection` of performAsCurrentTraitCollection_specializable[specialized with blocks],taking "else" branch,in call to `objc_block_performAsCurrentTraitCollection_specialized_latent_9`,is assigned to the null pointer,assigned,return from call to `objc_block_performAsCurrentTraitCollection_specialized_latent_9`,return from call to `performAsCurrentTraitCollection_specializable[specialized with blocks]`,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEBlocks.m, dispatch_sync_specialized_latent, 6, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [parameter `queue` of dispatch_sync_specialized_latent,in call to `dispatch_sync_specializable[specialized with blocks]`,parameter `queue` of dispatch_sync_specializable[specialized with blocks],taking "else" branch,in call to `objc_block_dispatch_sync_specialized_latent_7`,is assigned to the null pointer,assigned,return from call to `objc_block_dispatch_sync_specialized_latent_7`,return from call to `dispatch_sync_specializable[specialized with blocks]`,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEBlocks.m, performAsCurrentTraitCollection_specialized_latent, 7, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [parameter `traitCollection` of performAsCurrentTraitCollection_specialized_latent,in call to `performAsCurrentTraitCollection_specializable[specialized with blocks]`,parameter `traitCollection` of performAsCurrentTraitCollection_specializable[specialized with blocks],taking "else" branch,in call to `objc_block_performAsCurrentTraitCollection_specialized_latent_9`,is assigned to the null pointer,assigned,return from call to `objc_block_performAsCurrentTraitCollection_specialized_latent_9`,return from call to `performAsCurrentTraitCollection_specializable[specialized with blocks]`,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/NPEBlocks.m, deep_npe_bad, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,when calling `call_block[specialized with blocks]` here,value captured by ref as `ptr`,when calling `dispatch[specialized with blocks]` here,value captured by ref as `ptr`,when calling `objc_block_deep_npe_bad_10` here,value captured by ref as `ptr`,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/NPEBlocks.m, block_is_not_nil_bad, 6, NULLPTR_DEREFERENCE, no_bucket, ERROR, [assigned,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/NPECapturedLocal.m, test_hiddenCaptured_bad, 14, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,in call to `objc_block_HiddenCaptured.init_1`,parameter `x` of objc_block_HiddenCaptured.init_1,assigned,return from call to `objc_block_HiddenCaptured.init_1`,in call to `objc_block_HiddenCaptured.init_2`,value captured by ref as `hidden_property`,returned,return from call to `objc_block_HiddenCaptured.init_2`,assigned,is assigned to the constant 1,in call to `objc_block_HiddenCaptured.init_1`,parameter `x` of objc_block_HiddenCaptured.init_1,assigned,return from call to `objc_block_HiddenCaptured.init_1`,in call to `objc_block_HiddenCaptured.init_2`,value captured by ref as `hidden_property`,returned,return from call to `objc_block_HiddenCaptured.init_2`,assigned,is assigned to the constant 1,in call to `objc_block_HiddenCaptured.init_1`,parameter `x` of objc_block_HiddenCaptured.init_1,assigned,return from call to `objc_block_HiddenCaptured.init_1`,in call to `objc_block_HiddenCaptured.init_2`,value captured by ref as `hidden_property`,returned,return from call to `objc_block_HiddenCaptured.init_2`,assigned,is assigned to the constant 1,in call to `objc_block_HiddenCaptured.init_1`,parameter `x` of objc_block_HiddenCaptured.init_1,assigned,return from call to `objc_block_HiddenCaptured.init_1`,in call to `objc_block_HiddenCaptured.init_2`,value captured by ref as `hidden_property`,returned,return from call to `objc_block_HiddenCaptured.init_2`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/NPECapturedLocal.m, test_return_block_bad, 6, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `return_block`,is assigned to the null pointer,assigned,return from call to `return_block`,in call to `objc_block_return_block_3`,value captured by ref as `x`,returned,return from call to `objc_block_return_block_3`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEComplexBlockManipulation.m, test_Example_YES_using_property_bad, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `alloc` (modelled),in call to `NSObject.init` (modelled),assigned,in call to `Example.application:`,parameter `condition` of Example.application:,taking "then" branch,in call to `apply[specialized with blocks]`,in call to `objc_block_Example.application:_3`,in call to `ManipulationEntry.pass_obj:[specialized with blocks]`,in call to `objc_block_objc_block_Example.application:_3_4`,in call to `apply_second[specialized with blocks]`,in call to `objc_block_objc_block_objc_block_Example.application:_3_4_5`,in call to `Example.update_manipulatedContent:`,in call to `ManipulatedContent.ManipulatedContentWithObject:`,allocated by call to `alloc` (modelled),in call to `ManipulatedContent.init`,parameter `self` of ManipulatedContent.init,in call to `NSObject.init` (modelled),assigned,return from call to `ManipulatedContent.init`,in call to `ObjectHandlerForObject[specialized with blocks]`,allocated by call to `alloc` (modelled),in call to `ObjectHandler.initWithObject:updateCallback:`,parameter `self` of ObjectHandler.initWithObject:updateCallback:,in call to `NSObject.init` (modelled),assigned,returned,return from call to `ObjectHandler.initWithObject:updateCallback:`,assigned,in call to `ObjectHandler.withCallback`,parameter `self` of ObjectHandler.withCallback,returned,return from call to `ObjectHandler.withCallback`,taking "then" branch,in call to `ObjectHandler.apply_updateCallback[specialized with blocks]`,value captured by value as `manipulatedContent`,in call to `WithCallback.apply_callback:[specialized with blocks]`,value captured by value as `manipulatedContent`,in call to `objc_block_ObjectHandler.apply_updateCallback_1[specialized with blocks]`,value captured by value as `manipulatedContent`,assigned,taking "then" branch,in call to `objc_block_ManipulatedContent.ManipulatedContentWithObject:_2`,value captured by value as `manipulatedContent`,in call to `ManipulatedContent._updateContent`,is assigned to the constant 5,assigned,return from call to `ManipulatedContent._updateContent`,return from call to `objc_block_ManipulatedContent.ManipulatedContentWithObject:_2`,return from call to `objc_block_ObjectHandler.apply_updateCallback_1[specialized with blocks]`,return from call to `WithCallback.apply_callback:[specialized with blocks]`,return from call to `ObjectHandler.apply_updateCallback[specialized with blocks]`,return from call to `ObjectHandlerForObject[specialized with blocks]`,return from call to `ManipulatedContent.ManipulatedContentWithObject:`,return from call to `Example.update_manipulatedContent:`,return from call to `objc_block_objc_block_objc_block_Example.application:_3_4_5`,return from call to `apply_second[specialized with blocks]`,return from call to `objc_block_objc_block_Example.application:_3_4`,return from call to `ManipulationEntry.pass_obj:[specialized with blocks]`,return from call to `objc_block_Example.application:_3`,return from call to `apply[specialized with blocks]`,return from call to `Example.application:`,in call to `ManipulatedContent.y`,parameter `self` of ManipulatedContent.y,returned,return from call to `ManipulatedContent.y`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEComplexBlockManipulation.m, test_Example_YES_using_ivar_bad, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `alloc` (modelled),in call to `NSObject.init` (modelled),assigned,in call to `Example.application:`,parameter `condition` of Example.application:,taking "then" branch,in call to `apply[specialized with blocks]`,in call to `objc_block_Example.application:_3`,in call to `ManipulationEntry.pass_obj:[specialized with blocks]`,in call to `objc_block_objc_block_Example.application:_3_4`,in call to `apply_second[specialized with blocks]`,in call to `objc_block_objc_block_objc_block_Example.application:_3_4_5`,in call to `Example.update_manipulatedContent:`,in call to `ManipulatedContent.ManipulatedContentWithObject:`,allocated by call to `alloc` (modelled),in call to `ManipulatedContent.init`,parameter `self` of ManipulatedContent.init,in call to `NSObject.init` (modelled),assigned,return from call to `ManipulatedContent.init`,in call to `ObjectHandlerForObject[specialized with blocks]`,allocated by call to `alloc` (modelled),in call to `ObjectHandler.initWithObject:updateCallback:`,parameter `self` of ObjectHandler.initWithObject:updateCallback:,in call to `NSObject.init` (modelled),assigned,returned,return from call to `ObjectHandler.initWithObject:updateCallback:`,assigned,in call to `ObjectHandler.withCallback`,parameter `self` of ObjectHandler.withCallback,returned,return from call to `ObjectHandler.withCallback`,taking "then" branch,in call to `ObjectHandler.apply_updateCallback[specialized with blocks]`,value captured by value as `manipulatedContent`,in call to `WithCallback.apply_callback:[specialized with blocks]`,value captured by value as `manipulatedContent`,in call to `objc_block_ObjectHandler.apply_updateCallback_1[specialized with blocks]`,value captured by value as `manipulatedContent`,assigned,taking "then" branch,in call to `objc_block_ManipulatedContent.ManipulatedContentWithObject:_2`,value captured by value as `manipulatedContent`,in call to `ManipulatedContent._updateContent`,is assigned to the constant 5,assigned,return from call to `ManipulatedContent._updateContent`,return from call to `objc_block_ManipulatedContent.ManipulatedContentWithObject:_2`,return from call to `objc_block_ObjectHandler.apply_updateCallback_1[specialized with blocks]`,return from call to `WithCallback.apply_callback:[specialized with blocks]`,return from call to `ObjectHandler.apply_updateCallback[specialized with blocks]`,return from call to `ObjectHandlerForObject[specialized with blocks]`,return from call to `ManipulatedContent.ManipulatedContentWithObject:`,return from call to `Example.update_manipulatedContent:`,return from call to `objc_block_objc_block_objc_block_Example.application:_3_4_5`,return from call to `apply_second[specialized with blocks]`,return from call to `objc_block_objc_block_Example.application:_3_4`,return from call to `ManipulationEntry.pass_obj:[specialized with blocks]`,return from call to `objc_block_Example.application:_3`,return from call to `apply[specialized with blocks]`,return from call to `Example.application:`,in call to `ManipulatedContent.get_x`,parameter `self` of ManipulatedContent.get_x,returned,return from call to `ManipulatedContent.get_x`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEComplexBlockManipulation.m, test_Example_NO_using_ivar_good_FP, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `alloc` (modelled),in call to `NSObject.init` (modelled),assigned,in call to `Example.application:`,parameter `condition` of Example.application:,taking "else" branch,allocated by call to `alloc` (modelled),in call to `ManipulatedContent.init`,parameter `self` of ManipulatedContent.init,in call to `NSObject.init` (modelled),assigned,returned,return from call to `ManipulatedContent.init`,assigned,return from call to `Example.application:`,in call to `Example.manipulatedContent`,parameter `self` of Example.manipulatedContent,returned,return from call to `Example.manipulatedContent`,in call to `ManipulatedContent.get_x`,parameter `self` of ManipulatedContent.get_x,returned,return from call to `ManipulatedContent.get_x`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEComplexFunPtrManipulation.m, test_FunPtrExample_YES_using_property_bad, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `alloc` (modelled),in call to `NSObject.init` (modelled),assigned,in call to `FunPtrExample.application:`,parameter `condition` of FunPtrExample.application:,taking "then" branch,in call to `apply_funptr[specialized with functions]`,in call to `call_manipulationEntry_pass_obj`,in call to `FunPtrManipulationEntry.pass_obj:context:[specialized with functions]`,in call to `call_apply_second_funptr`,in call to `apply_second_funptr[specialized with functions]`,in call to `call_update_manipulatedContent`,in call to `FunPtrExample.update_manipulatedContent:`,in call to `FunPtrManipulatedContent.FunPtrManipulatedContentWithObject:`,allocated by call to `alloc` (modelled),in call to `FunPtrManipulatedContent.init`,parameter `self` of FunPtrManipulatedContent.init,in call to `NSObject.init` (modelled),assigned,return from call to `FunPtrManipulatedContent.init`,in call to `FunPtrObjectHandlerForObject[specialized with functions]`,allocated by call to `alloc` (modelled),in call to `FunPtrObjectHandler.initWithObject:updateCallback:`,parameter `self` of FunPtrObjectHandler.initWithObject:updateCallback:,in call to `NSObject.init` (modelled),assigned,returned,return from call to `FunPtrObjectHandler.initWithObject:updateCallback:`,assigned,in call to `FunPtrObjectHandler.withCallback`,parameter `self` of FunPtrObjectHandler.withCallback,returned,return from call to `FunPtrObjectHandler.withCallback`,taking "then" branch,in call to `FunPtrObjectHandler.apply_updateCallback:[specialized with functions]`,parameter `arg` of FunPtrObjectHandler.apply_updateCallback:[specialized with functions],in call to `WithFunPtrCallback.apply_callback:context:arg:[specialized with functions]`,parameter `arg` of WithFunPtrCallback.apply_callback:context:arg:[specialized with functions],in call to `call_updateCallback[specialized with functions]`,parameter `arg` of call_updateCallback[specialized with functions],in call to `call__updateContent`,parameter `manipulatedContent` of call__updateContent,in call to `FunPtrManipulatedContent._updateContent`,is assigned to the constant 5,assigned,return from call to `FunPtrManipulatedContent._updateContent`,return from call to `call__updateContent`,return from call to `call_updateCallback[specialized with functions]`,return from call to `WithFunPtrCallback.apply_callback:context:arg:[specialized with functions]`,return from call to `FunPtrObjectHandler.apply_updateCallback:[specialized with functions]`,return from call to `FunPtrObjectHandlerForObject[specialized with functions]`,return from call to `FunPtrManipulatedContent.FunPtrManipulatedContentWithObject:`,return from call to `FunPtrExample.update_manipulatedContent:`,return from call to `call_update_manipulatedContent`,return from call to `apply_second_funptr[specialized with functions]`,return from call to `call_apply_second_funptr`,return from call to `FunPtrManipulationEntry.pass_obj:context:[specialized with functions]`,return from call to `call_manipulationEntry_pass_obj`,return from call to `apply_funptr[specialized with functions]`,return from call to `FunPtrExample.application:`,in call to `FunPtrManipulatedContent.y`,parameter `self` of FunPtrManipulatedContent.y,returned,return from call to `FunPtrManipulatedContent.y`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEComplexFunPtrManipulation.m, test_FunPtrExample_YES_using_ivar_bad, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `alloc` (modelled),in call to `NSObject.init` (modelled),assigned,in call to `FunPtrExample.application:`,parameter `condition` of FunPtrExample.application:,taking "then" branch,in call to `apply_funptr[specialized with functions]`,in call to `call_manipulationEntry_pass_obj`,in call to `FunPtrManipulationEntry.pass_obj:context:[specialized with functions]`,in call to `call_apply_second_funptr`,in call to `apply_second_funptr[specialized with functions]`,in call to `call_update_manipulatedContent`,in call to `FunPtrExample.update_manipulatedContent:`,in call to `FunPtrManipulatedContent.FunPtrManipulatedContentWithObject:`,allocated by call to `alloc` (modelled),in call to `FunPtrManipulatedContent.init`,parameter `self` of FunPtrManipulatedContent.init,in call to `NSObject.init` (modelled),assigned,return from call to `FunPtrManipulatedContent.init`,in call to `FunPtrObjectHandlerForObject[specialized with functions]`,allocated by call to `alloc` (modelled),in call to `FunPtrObjectHandler.initWithObject:updateCallback:`,parameter `self` of FunPtrObjectHandler.initWithObject:updateCallback:,in call to `NSObject.init` (modelled),assigned,returned,return from call to `FunPtrObjectHandler.initWithObject:updateCallback:`,assigned,in call to `FunPtrObjectHandler.withCallback`,parameter `self` of FunPtrObjectHandler.withCallback,returned,return from call to `FunPtrObjectHandler.withCallback`,taking "then" branch,in call to `FunPtrObjectHandler.apply_updateCallback:[specialized with functions]`,parameter `arg` of FunPtrObjectHandler.apply_updateCallback:[specialized with functions],in call to `WithFunPtrCallback.apply_callback:context:arg:[specialized with functions]`,parameter `arg` of WithFunPtrCallback.apply_callback:context:arg:[specialized with functions],in call to `call_updateCallback[specialized with functions]`,parameter `arg` of call_updateCallback[specialized with functions],in call to `call__updateContent`,parameter `manipulatedContent` of call__updateContent,in call to `FunPtrManipulatedContent._updateContent`,is assigned to the constant 5,assigned,return from call to `FunPtrManipulatedContent._updateContent`,return from call to `call__updateContent`,return from call to `call_updateCallback[specialized with functions]`,return from call to `WithFunPtrCallback.apply_callback:context:arg:[specialized with functions]`,return from call to `FunPtrObjectHandler.apply_updateCallback:[specialized with functions]`,return from call to `FunPtrObjectHandlerForObject[specialized with functions]`,return from call to `FunPtrManipulatedContent.FunPtrManipulatedContentWithObject:`,return from call to `FunPtrExample.update_manipulatedContent:`,return from call to `call_update_manipulatedContent`,return from call to `apply_second_funptr[specialized with functions]`,return from call to `call_apply_second_funptr`,return from call to `FunPtrManipulationEntry.pass_obj:context:[specialized with functions]`,return from call to `call_manipulationEntry_pass_obj`,return from call to `apply_funptr[specialized with functions]`,return from call to `FunPtrExample.application:`,in call to `FunPtrManipulatedContent.get_x`,parameter `self` of FunPtrManipulatedContent.get_x,returned,return from call to `FunPtrManipulatedContent.get_x`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEComplexFunPtrManipulation.m, test_FunPtrExample_NO_using_ivar_good_FP, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `alloc` (modelled),in call to `NSObject.init` (modelled),assigned,in call to `FunPtrExample.application:`,parameter `condition` of FunPtrExample.application:,taking "else" branch,allocated by call to `alloc` (modelled),in call to `FunPtrManipulatedContent.init`,parameter `self` of FunPtrManipulatedContent.init,in call to `NSObject.init` (modelled),assigned,returned,return from call to `FunPtrManipulatedContent.init`,assigned,return from call to `FunPtrExample.application:`,in call to `FunPtrExample.manipulatedContent`,parameter `self` of FunPtrExample.manipulatedContent,returned,return from call to `FunPtrExample.manipulatedContent`,in call to `FunPtrManipulatedContent.get_x`,parameter `self` of FunPtrManipulatedContent.get_x,returned,return from call to `FunPtrManipulatedContent.get_x`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEConditionalBlocks.m, if_bad, 13, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,variable `ptr` declared here,taking "then" branch,value captured by ref as `ptr`,in call to `objc_block_if_bad_1`,is assigned to the null pointer,assigned,return from call to `objc_block_if_bad_1`,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEConditionalBlocks.m, else_bad, 13, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,variable `ptr` declared here,taking "else" branch,value captured by ref as `ptr`,in call to `objc_block_else_bad_6`,is assigned to the null pointer,assigned,return from call to `objc_block_else_bad_6`,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEConditionalBlocks.m, conditional_call, 12, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [parameter `x` of conditional_call,variable `ptr` declared here,taking "then" branch,value captured by ref as `ptr`,in call to `objc_block_conditional_call_9`,is assigned to the null pointer,assigned,return from call to `objc_block_conditional_call_9`,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEConditionalBlocks.m, conditional_call_bad, 0, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,when calling `conditional_call` here,parameter `x` of conditional_call,variable `ptr` declared here,taking "then" branch,value captured by ref as `ptr`,in call to `objc_block_conditional_call_9`,is assigned to the null pointer,assigned,return from call to `objc_block_conditional_call_9`,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEConditionalBlocks.m, apply_block_specialized_bad, 13, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `apply_block[specialized with blocks]`,value captured by ref as `ptr`,in call to `objc_block_apply_block_specialized_bad_11`,is assigned to the null pointer,assigned,return from call to `objc_block_apply_block_specialized_bad_11`,return from call to `apply_block[specialized with blocks]`,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEConditionalBlocks.m, apply_block_and_after[specialized with blocks], 7, NULLPTR_DEREFERENCE, no_bucket, ERROR, [value captured by ref as `ptr`,in call to `apply_block[specialized with blocks]`,value captured by ref as `ptr`,in call to `objc_block_apply_block_and_after_respecialized_bad_21`,is assigned to the null pointer,assigned,return from call to `objc_block_apply_block_and_after_respecialized_bad_21`,return from call to `apply_block[specialized with blocks]`,when calling `objc_block_apply_block_and_after_respecialized_bad_20` here,value captured by ref as `ptr`,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEConditionalBlocks.m, apply_block_and_after[specialized with blocks], 7, NULLPTR_DEREFERENCE, no_bucket, ERROR, [value captured by ref as `ptr`,in call to `apply_block[specialized with blocks]`,value captured by ref as `ptr`,in call to `objc_block_apply_block_and_after_specialized_bad_17`,is assigned to the null pointer,assigned,return from call to `objc_block_apply_block_and_after_specialized_bad_17`,return from call to `apply_block[specialized with blocks]`,when calling `objc_block_apply_block_and_after_specialized_bad_16` here,value captured by ref as `ptr`,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEComplexBlockManipulation.m, test_Example_YES_using_property_bad, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `Example.application:`,parameter `condition` of Example.application:,taking "then" branch,in call to `apply[specialized with blocks]`,in call to `objc_block_Example.application:_3`,in call to `ManipulationEntry.pass_obj:[specialized with blocks]`,in call to `objc_block_objc_block_Example.application:_3_4`,in call to `apply_second[specialized with blocks]`,in call to `objc_block_objc_block_objc_block_Example.application:_3_4_5`,in call to `Example.update_manipulatedContent:`,in call to `ManipulatedContent.ManipulatedContentWithObject:`,in call to `ObjectHandlerForObject[specialized with blocks]`,allocated by call to `alloc` (modelled),in call to `ObjectHandler.initWithObject:updateCallback:`,parameter `self` of ObjectHandler.initWithObject:updateCallback:,in call to `NSObject.init` (modelled),assigned,returned,return from call to `ObjectHandler.initWithObject:updateCallback:`,assigned,in call to `ObjectHandler.withCallback`,parameter `self` of ObjectHandler.withCallback,returned,return from call to `ObjectHandler.withCallback`,taking "then" branch,in call to `ObjectHandler.apply_updateCallback[specialized with blocks]`,in call to `WithCallback.apply_callback:[specialized with blocks]`,in call to `objc_block_ObjectHandler.apply_updateCallback_1[specialized with blocks]`,value captured by value as `weakSelf`,assigned,taking "then" branch,in call to `objc_block_ManipulatedContent.ManipulatedContentWithObject:_2`,in call to `ManipulatedContent._updateContent`,is assigned to the constant 5,assigned,return from call to `ManipulatedContent._updateContent`,return from call to `objc_block_ManipulatedContent.ManipulatedContentWithObject:_2`,return from call to `objc_block_ObjectHandler.apply_updateCallback_1[specialized with blocks]`,return from call to `WithCallback.apply_callback:[specialized with blocks]`,return from call to `ObjectHandler.apply_updateCallback[specialized with blocks]`,return from call to `ObjectHandlerForObject[specialized with blocks]`,return from call to `ManipulatedContent.ManipulatedContentWithObject:`,return from call to `Example.update_manipulatedContent:`,return from call to `objc_block_objc_block_objc_block_Example.application:_3_4_5`,return from call to `apply_second[specialized with blocks]`,return from call to `objc_block_objc_block_Example.application:_3_4`,return from call to `ManipulationEntry.pass_obj:[specialized with blocks]`,return from call to `objc_block_Example.application:_3`,return from call to `apply[specialized with blocks]`,return from call to `Example.application:`,in call to `ManipulatedContent.y`,parameter `self` of ManipulatedContent.y,returned,return from call to `ManipulatedContent.y`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEComplexBlockManipulation.m, test_Example_YES_using_ivar_bad, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `Example.application:`,parameter `condition` of Example.application:,taking "then" branch,in call to `apply[specialized with blocks]`,in call to `objc_block_Example.application:_3`,in call to `ManipulationEntry.pass_obj:[specialized with blocks]`,in call to `objc_block_objc_block_Example.application:_3_4`,in call to `apply_second[specialized with blocks]`,in call to `objc_block_objc_block_objc_block_Example.application:_3_4_5`,in call to `Example.update_manipulatedContent:`,in call to `ManipulatedContent.ManipulatedContentWithObject:`,in call to `ObjectHandlerForObject[specialized with blocks]`,allocated by call to `alloc` (modelled),in call to `ObjectHandler.initWithObject:updateCallback:`,parameter `self` of ObjectHandler.initWithObject:updateCallback:,in call to `NSObject.init` (modelled),assigned,returned,return from call to `ObjectHandler.initWithObject:updateCallback:`,assigned,in call to `ObjectHandler.withCallback`,parameter `self` of ObjectHandler.withCallback,returned,return from call to `ObjectHandler.withCallback`,taking "then" branch,in call to `ObjectHandler.apply_updateCallback[specialized with blocks]`,in call to `WithCallback.apply_callback:[specialized with blocks]`,in call to `objc_block_ObjectHandler.apply_updateCallback_1[specialized with blocks]`,value captured by value as `weakSelf`,assigned,taking "then" branch,in call to `objc_block_ManipulatedContent.ManipulatedContentWithObject:_2`,in call to `ManipulatedContent._updateContent`,is assigned to the constant 5,assigned,return from call to `ManipulatedContent._updateContent`,return from call to `objc_block_ManipulatedContent.ManipulatedContentWithObject:_2`,return from call to `objc_block_ObjectHandler.apply_updateCallback_1[specialized with blocks]`,return from call to `WithCallback.apply_callback:[specialized with blocks]`,return from call to `ObjectHandler.apply_updateCallback[specialized with blocks]`,return from call to `ObjectHandlerForObject[specialized with blocks]`,return from call to `ManipulatedContent.ManipulatedContentWithObject:`,return from call to `Example.update_manipulatedContent:`,return from call to `objc_block_objc_block_objc_block_Example.application:_3_4_5`,return from call to `apply_second[specialized with blocks]`,return from call to `objc_block_objc_block_Example.application:_3_4`,return from call to `ManipulationEntry.pass_obj:[specialized with blocks]`,return from call to `objc_block_Example.application:_3`,return from call to `apply[specialized with blocks]`,return from call to `Example.application:`,in call to `ManipulatedContent.get_x`,parameter `self` of ManipulatedContent.get_x,returned,return from call to `ManipulatedContent.get_x`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEComplexBlockManipulation.m, test_Example_NO_using_ivar_good_FP, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `Example.application:`,parameter `condition` of Example.application:,taking "else" branch,allocated by call to `alloc` (modelled),in call to `ManipulatedContent.init`,parameter `self` of ManipulatedContent.init,in call to `NSObject.init` (modelled),assigned,returned,return from call to `ManipulatedContent.init`,assigned,return from call to `Example.application:`,in call to `Example.manipulatedContent`,parameter `self` of Example.manipulatedContent,returned,return from call to `Example.manipulatedContent`,in call to `ManipulatedContent.get_x`,parameter `self` of ManipulatedContent.get_x,returned,return from call to `ManipulatedContent.get_x`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEComplexFunPtrManipulation.m, test_FunPtrExample_YES_using_property_bad, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `FunPtrExample.application:`,parameter `condition` of FunPtrExample.application:,taking "then" branch,in call to `apply_funptr[specialized with functions]`,in call to `call_manipulationEntry_pass_obj`,in call to `FunPtrManipulationEntry.pass_obj:context:[specialized with functions]`,in call to `call_apply_second_funptr`,in call to `apply_second_funptr[specialized with functions]`,in call to `call_update_manipulatedContent`,in call to `FunPtrExample.update_manipulatedContent:`,in call to `FunPtrManipulatedContent.FunPtrManipulatedContentWithObject:`,in call to `FunPtrObjectHandlerForObject[specialized with functions]`,allocated by call to `alloc` (modelled),in call to `FunPtrObjectHandler.initWithObject:updateCallback:`,parameter `self` of FunPtrObjectHandler.initWithObject:updateCallback:,in call to `NSObject.init` (modelled),assigned,returned,return from call to `FunPtrObjectHandler.initWithObject:updateCallback:`,assigned,in call to `FunPtrObjectHandler.withCallback`,parameter `self` of FunPtrObjectHandler.withCallback,returned,return from call to `FunPtrObjectHandler.withCallback`,taking "then" branch,in call to `FunPtrObjectHandler.apply_updateCallback:[specialized with functions]`,in call to `WithFunPtrCallback.apply_callback:context:arg:[specialized with functions]`,in call to `call_updateCallback[specialized with functions]`,in call to `call__updateContent`,in call to `FunPtrManipulatedContent._updateContent`,is assigned to the constant 5,assigned,return from call to `FunPtrManipulatedContent._updateContent`,return from call to `call__updateContent`,return from call to `call_updateCallback[specialized with functions]`,return from call to `WithFunPtrCallback.apply_callback:context:arg:[specialized with functions]`,return from call to `FunPtrObjectHandler.apply_updateCallback:[specialized with functions]`,return from call to `FunPtrObjectHandlerForObject[specialized with functions]`,return from call to `FunPtrManipulatedContent.FunPtrManipulatedContentWithObject:`,return from call to `FunPtrExample.update_manipulatedContent:`,return from call to `call_update_manipulatedContent`,return from call to `apply_second_funptr[specialized with functions]`,return from call to `call_apply_second_funptr`,return from call to `FunPtrManipulationEntry.pass_obj:context:[specialized with functions]`,return from call to `call_manipulationEntry_pass_obj`,return from call to `apply_funptr[specialized with functions]`,return from call to `FunPtrExample.application:`,in call to `FunPtrManipulatedContent.y`,parameter `self` of FunPtrManipulatedContent.y,returned,return from call to `FunPtrManipulatedContent.y`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEComplexFunPtrManipulation.m, test_FunPtrExample_YES_using_ivar_bad, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `FunPtrExample.application:`,parameter `condition` of FunPtrExample.application:,taking "then" branch,in call to `apply_funptr[specialized with functions]`,in call to `call_manipulationEntry_pass_obj`,in call to `FunPtrManipulationEntry.pass_obj:context:[specialized with functions]`,in call to `call_apply_second_funptr`,in call to `apply_second_funptr[specialized with functions]`,in call to `call_update_manipulatedContent`,in call to `FunPtrExample.update_manipulatedContent:`,in call to `FunPtrManipulatedContent.FunPtrManipulatedContentWithObject:`,in call to `FunPtrObjectHandlerForObject[specialized with functions]`,allocated by call to `alloc` (modelled),in call to `FunPtrObjectHandler.initWithObject:updateCallback:`,parameter `self` of FunPtrObjectHandler.initWithObject:updateCallback:,in call to `NSObject.init` (modelled),assigned,returned,return from call to `FunPtrObjectHandler.initWithObject:updateCallback:`,assigned,in call to `FunPtrObjectHandler.withCallback`,parameter `self` of FunPtrObjectHandler.withCallback,returned,return from call to `FunPtrObjectHandler.withCallback`,taking "then" branch,in call to `FunPtrObjectHandler.apply_updateCallback:[specialized with functions]`,in call to `WithFunPtrCallback.apply_callback:context:arg:[specialized with functions]`,in call to `call_updateCallback[specialized with functions]`,in call to `call__updateContent`,in call to `FunPtrManipulatedContent._updateContent`,is assigned to the constant 5,assigned,return from call to `FunPtrManipulatedContent._updateContent`,return from call to `call__updateContent`,return from call to `call_updateCallback[specialized with functions]`,return from call to `WithFunPtrCallback.apply_callback:context:arg:[specialized with functions]`,return from call to `FunPtrObjectHandler.apply_updateCallback:[specialized with functions]`,return from call to `FunPtrObjectHandlerForObject[specialized with functions]`,return from call to `FunPtrManipulatedContent.FunPtrManipulatedContentWithObject:`,return from call to `FunPtrExample.update_manipulatedContent:`,return from call to `call_update_manipulatedContent`,return from call to `apply_second_funptr[specialized with functions]`,return from call to `call_apply_second_funptr`,return from call to `FunPtrManipulationEntry.pass_obj:context:[specialized with functions]`,return from call to `call_manipulationEntry_pass_obj`,return from call to `apply_funptr[specialized with functions]`,return from call to `FunPtrExample.application:`,in call to `FunPtrManipulatedContent.get_x`,parameter `self` of FunPtrManipulatedContent.get_x,returned,return from call to `FunPtrManipulatedContent.get_x`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEComplexFunPtrManipulation.m, test_FunPtrExample_NO_using_ivar_good_FP, 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `FunPtrExample.application:`,parameter `condition` of FunPtrExample.application:,taking "else" branch,allocated by call to `alloc` (modelled),in call to `FunPtrManipulatedContent.init`,parameter `self` of FunPtrManipulatedContent.init,in call to `NSObject.init` (modelled),assigned,returned,return from call to `FunPtrManipulatedContent.init`,assigned,return from call to `FunPtrExample.application:`,in call to `FunPtrExample.manipulatedContent`,parameter `self` of FunPtrExample.manipulatedContent,returned,return from call to `FunPtrExample.manipulatedContent`,in call to `FunPtrManipulatedContent.get_x`,parameter `self` of FunPtrManipulatedContent.get_x,returned,return from call to `FunPtrManipulatedContent.get_x`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEConditionalBlocks.m, if_bad, 13, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `objc_block_if_bad_1`,is assigned to the null pointer,assigned,return from call to `objc_block_if_bad_1`,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEConditionalBlocks.m, else_bad, 13, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `objc_block_else_bad_6`,is assigned to the null pointer,assigned,return from call to `objc_block_else_bad_6`,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEConditionalBlocks.m, conditional_call, 12, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [in call to `objc_block_conditional_call_9`,is assigned to the null pointer,assigned,return from call to `objc_block_conditional_call_9`,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEConditionalBlocks.m, conditional_call_bad, 0, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,when calling `conditional_call` here,in call to `objc_block_conditional_call_9`,is assigned to the null pointer,assigned,return from call to `objc_block_conditional_call_9`,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEConditionalBlocks.m, apply_block_specialized_bad, 13, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `apply_block[specialized with blocks]`,in call to `objc_block_apply_block_specialized_bad_11`,is assigned to the null pointer,assigned,return from call to `objc_block_apply_block_specialized_bad_11`,return from call to `apply_block[specialized with blocks]`,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEConditionalBlocks.m, apply_block_and_after[specialized with blocks], 7, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `apply_block[specialized with blocks]`,in call to `objc_block_apply_block_and_after_respecialized_bad_21`,is assigned to the null pointer,assigned,return from call to `objc_block_apply_block_and_after_respecialized_bad_21`,return from call to `apply_block[specialized with blocks]`,when calling `objc_block_apply_block_and_after_respecialized_bad_20` here,value captured by ref as `ptr`,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEConditionalBlocks.m, apply_block_and_after[specialized with blocks], 7, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `apply_block[specialized with blocks]`,in call to `objc_block_apply_block_and_after_specialized_bad_17`,is assigned to the null pointer,assigned,return from call to `objc_block_apply_block_and_after_specialized_bad_17`,return from call to `apply_block[specialized with blocks]`,when calling `objc_block_apply_block_and_after_specialized_bad_16` here,value captured by ref as `ptr`,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/NPEConditionalBlocks.m, conditionnaly_apply_block_unspecialized_bad, 13, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,in call to `conditionnaly_apply_block`,is assigned to the null pointer,assigned,return from call to `conditionnaly_apply_block`,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEConditionalBlocks.m, conditionnaly_apply_block_specialized_bad, 13, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `conditionnaly_apply_block[specialized with blocks]`,is assigned to the null pointer,assigned,return from call to `conditionnaly_apply_block[specialized with blocks]`,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEConditionalFunPtr.m, funptr_if_bad, 10, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEConditionalFunPtr.m, funptr_else_bad, 10, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEConditionalFunPtr.m, funptr_conditional_call, 9, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [variable `ptr` declared here,in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEConditionalFunPtr.m, funptr_conditional_call_bad, 0, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,when calling `funptr_conditional_call` here,variable `ptr` declared here,in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEConditionalFunPtr.m, funptr_apply_funptr_with_intptrptr_specialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `apply_funptr_with_intptrptr[specialized with functions]`,parameter `ptr` of apply_funptr_with_intptrptr[specialized with functions],in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,return from call to `apply_funptr_with_intptrptr[specialized with functions]`,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEConditionalFunPtr.m, apply_funptr_with_intptrptr_and_after[specialized with functions], 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [parameter `ptr` of apply_funptr_with_intptrptr_and_after[specialized with functions],in call to `apply_funptr_with_intptrptr[specialized with functions]`,parameter `ptr` of apply_funptr_with_intptrptr[specialized with functions],in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,return from call to `apply_funptr_with_intptrptr[specialized with functions]`,when calling `dereference_dereference_ptr` here,parameter `ptr` of dereference_dereference_ptr,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEConditionalBlocks.m, conditionnaly_apply_block_specialized_bad, 13, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `conditionnaly_apply_block[specialized with blocks]`,is assigned to the null pointer,assigned,return from call to `conditionnaly_apply_block[specialized with blocks]`,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEConditionalFunPtr.m, funptr_if_bad, 10, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEConditionalFunPtr.m, funptr_else_bad, 10, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEConditionalFunPtr.m, funptr_conditional_call, 9, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEConditionalFunPtr.m, funptr_conditional_call_bad, 0, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,when calling `funptr_conditional_call` here,in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEConditionalFunPtr.m, funptr_apply_funptr_with_intptrptr_specialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `apply_funptr_with_intptrptr[specialized with functions]`,in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,return from call to `apply_funptr_with_intptrptr[specialized with functions]`,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEConditionalFunPtr.m, apply_funptr_with_intptrptr_and_after[specialized with functions], 8, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `apply_funptr_with_intptrptr[specialized with functions]`,in call to `assign_NULL`,is assigned to the null pointer,assigned,return from call to `assign_NULL`,return from call to `apply_funptr_with_intptrptr[specialized with functions]`,when calling `dereference_dereference_ptr` here,parameter `ptr` of dereference_dereference_ptr,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/NPEConditionalFunPtr.m, funptr_conditionnaly_apply_funptr_with_intptrptr_unspecialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,in call to `conditionnaly_apply_funptr_with_intptrptr`,is assigned to the null pointer,assigned,return from call to `conditionnaly_apply_funptr_with_intptrptr`,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEConditionalFunPtr.m, funptr_conditionnaly_apply_funptr_with_intptrptr_specialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `ptr` declared here,in call to `conditionnaly_apply_funptr_with_intptrptr[specialized with functions]`,is assigned to the null pointer,assigned,return from call to `conditionnaly_apply_funptr_with_intptrptr[specialized with functions]`,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEConditionalFunPtr.m, funptr_conditionnaly_apply_funptr_with_intptrptr_specialized_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `conditionnaly_apply_funptr_with_intptrptr[specialized with functions]`,is assigned to the null pointer,assigned,return from call to `conditionnaly_apply_funptr_with_intptrptr[specialized with functions]`,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/NPEFunPtrProperty.m, test_withFunPtrProperties_no_specialization_bad, 14, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,in call to `set_explicitProperty`,parameter `x` of set_explicitProperty,in call to `WithFunPtrProperties.setExplicit:`,parameter `explicit` of WithFunPtrProperties.setExplicit:,assigned,return from call to `WithFunPtrProperties.setExplicit:`,return from call to `set_explicitProperty`,in call to `get_explicitProperty`,parameter `context` of get_explicitProperty,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,returned,return from call to `get_explicitProperty`,assigned,is assigned to the constant 1,in call to `set_explicitProperty`,parameter `x` of set_explicitProperty,in call to `WithFunPtrProperties.setExplicit:`,parameter `explicit` of WithFunPtrProperties.setExplicit:,assigned,return from call to `WithFunPtrProperties.setExplicit:`,return from call to `set_explicitProperty`,in call to `get_explicitProperty`,parameter `context` of get_explicitProperty,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,returned,return from call to `get_explicitProperty`,assigned,is assigned to the constant 1,in call to `set_explicitProperty`,parameter `x` of set_explicitProperty,in call to `WithFunPtrProperties.setExplicit:`,parameter `explicit` of WithFunPtrProperties.setExplicit:,assigned,return from call to `WithFunPtrProperties.setExplicit:`,return from call to `set_explicitProperty`,in call to `get_explicitProperty`,parameter `context` of get_explicitProperty,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,returned,return from call to `get_explicitProperty`,assigned,is assigned to the constant 1,in call to `set_explicitProperty`,parameter `x` of set_explicitProperty,in call to `WithFunPtrProperties.setExplicit:`,parameter `explicit` of WithFunPtrProperties.setExplicit:,assigned,return from call to `WithFunPtrProperties.setExplicit:`,return from call to `set_explicitProperty`,in call to `get_explicitProperty`,parameter `context` of get_explicitProperty,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,returned,return from call to `get_explicitProperty`,assigned,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,taking "then" branch,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEFunPtrProperty.m, test_withFunPtrProperties_specialized_no_alias_bad, 17, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `alloc` (modelled),in call to `WithFunPtrProperties.init`,parameter `self` of WithFunPtrProperties.init,in call to `NSObject.init` (modelled),assigned,returned,return from call to `WithFunPtrProperties.init`,assigned,allocated by call to `alloc` (modelled),in call to `WithFunPtrProperties.init`,parameter `self` of WithFunPtrProperties.init,in call to `NSObject.init` (modelled),assigned,returned,return from call to `WithFunPtrProperties.init`,assigned,in call to `set_explicitProperty`,parameter `context` of set_explicitProperty,in call to `WithFunPtrProperties.setExplicit:`,parameter `self` of WithFunPtrProperties.setExplicit:,return from call to `WithFunPtrProperties.setExplicit:`,return from call to `set_explicitProperty`,in call to `test_withFunPtrProperties_specializable[specialized with functions]`,parameter `a` of test_withFunPtrProperties_specializable[specialized with functions],in call to `get_explicitProperty`,parameter `context` of get_explicitProperty,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,returned,return from call to `get_explicitProperty`,assigned,is assigned to the constant 1,in call to `set_explicitProperty`,parameter `x` of set_explicitProperty,in call to `WithFunPtrProperties.setExplicit:`,parameter `explicit` of WithFunPtrProperties.setExplicit:,assigned,return from call to `WithFunPtrProperties.setExplicit:`,return from call to `set_explicitProperty`,return from call to `test_withFunPtrProperties_specializable[specialized with functions]`,in call to `test_withFunPtrProperties_specializable[specialized with functions]`,parameter `a` of test_withFunPtrProperties_specializable[specialized with functions],in call to `get_explicitProperty`,parameter `context` of get_explicitProperty,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,returned,return from call to `get_explicitProperty`,assigned,returned,return from call to `test_withFunPtrProperties_specializable[specialized with functions]`,assigned,taking "then" branch,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEFunPtrProperty.m, test_withFunPtrProperties_specialized_with_alias_bad, 12, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `alloc` (modelled),in call to `WithFunPtrProperties.init`,parameter `self` of WithFunPtrProperties.init,in call to `NSObject.init` (modelled),assigned,returned,return from call to `WithFunPtrProperties.init`,assigned,in call to `set_explicitProperty`,parameter `context` of set_explicitProperty,in call to `WithFunPtrProperties.setExplicit:`,parameter `self` of WithFunPtrProperties.setExplicit:,return from call to `WithFunPtrProperties.setExplicit:`,return from call to `set_explicitProperty`,in call to `test_withFunPtrProperties_specializable[specialized with functions]`,parameter `a` of test_withFunPtrProperties_specializable[specialized with functions],in call to `get_explicitProperty`,parameter `context` of get_explicitProperty,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,returned,return from call to `get_explicitProperty`,assigned,is assigned to the constant 1,in call to `set_explicitProperty`,parameter `x` of set_explicitProperty,in call to `WithFunPtrProperties.setExplicit:`,parameter `explicit` of WithFunPtrProperties.setExplicit:,assigned,return from call to `WithFunPtrProperties.setExplicit:`,return from call to `set_explicitProperty`,return from call to `test_withFunPtrProperties_specializable[specialized with functions]`,in call to `test_withFunPtrProperties_specializable[specialized with functions]`,parameter `a` of test_withFunPtrProperties_specializable[specialized with functions],in call to `get_explicitProperty`,parameter `context` of get_explicitProperty,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,returned,return from call to `get_explicitProperty`,assigned,in call to `set_explicitProperty2`,parameter `context` of set_explicitProperty2,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,in call to `WithFunPtrProperties.setExplicit:`,parameter `explicit` of WithFunPtrProperties.setExplicit:,assigned,return from call to `WithFunPtrProperties.setExplicit:`,return from call to `set_explicitProperty2`,returned,return from call to `test_withFunPtrProperties_specializable[specialized with functions]`,assigned,taking "then" branch,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/NPEFunPtrProperty.m, funptr_test_localization_bad, 13, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `alloc` (modelled),in call to `WithFunPtrProperties.init`,parameter `self` of WithFunPtrProperties.init,in call to `NSObject.init` (modelled),assigned,returned,return from call to `WithFunPtrProperties.init`,assigned,in call to `call_funPtrCallback[specialized with functions]`,parameter `context` of call_funPtrCallback[specialized with functions],in call to `set_explicitProperty_to_3[specialized with functions]`,is assigned to the constant 3,in call to `set_explicitProperty`,parameter `x` of set_explicitProperty,in call to `WithFunPtrProperties.setExplicit:`,parameter `explicit` of WithFunPtrProperties.setExplicit:,assigned,return from call to `WithFunPtrProperties.setExplicit:`,return from call to `set_explicitProperty`,return from call to `set_explicitProperty_to_3[specialized with functions]`,return from call to `call_funPtrCallback[specialized with functions]`,in call to `get_explicitProperty`,parameter `context` of get_explicitProperty,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,returned,return from call to `get_explicitProperty`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEFunPtrProperty.m, test_withFunPtrProperties_specialized_no_alias_bad, 17, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `alloc` (modelled),in call to `WithFunPtrProperties.init`,parameter `self` of WithFunPtrProperties.init,in call to `NSObject.init` (modelled),assigned,returned,return from call to `WithFunPtrProperties.init`,assigned,in call to `test_withFunPtrProperties_specializable[specialized with functions]`,parameter `a` of test_withFunPtrProperties_specializable[specialized with functions],in call to `get_explicitProperty`,parameter `context` of get_explicitProperty,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,returned,return from call to `get_explicitProperty`,assigned,is assigned to the constant 1,in call to `set_explicitProperty`,parameter `x` of set_explicitProperty,in call to `WithFunPtrProperties.setExplicit:`,parameter `explicit` of WithFunPtrProperties.setExplicit:,assigned,return from call to `WithFunPtrProperties.setExplicit:`,return from call to `set_explicitProperty`,return from call to `test_withFunPtrProperties_specializable[specialized with functions]`,in call to `test_withFunPtrProperties_specializable[specialized with functions]`,parameter `a` of test_withFunPtrProperties_specializable[specialized with functions],in call to `get_explicitProperty`,parameter `context` of get_explicitProperty,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,returned,return from call to `get_explicitProperty`,assigned,returned,return from call to `test_withFunPtrProperties_specializable[specialized with functions]`,assigned,taking "then" branch,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEFunPtrProperty.m, test_withFunPtrProperties_specialized_with_alias_bad, 12, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `test_withFunPtrProperties_specializable[specialized with functions]`,parameter `a` of test_withFunPtrProperties_specializable[specialized with functions],in call to `get_explicitProperty`,parameter `context` of get_explicitProperty,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,returned,return from call to `get_explicitProperty`,assigned,is assigned to the constant 1,in call to `set_explicitProperty`,parameter `x` of set_explicitProperty,in call to `WithFunPtrProperties.setExplicit:`,parameter `explicit` of WithFunPtrProperties.setExplicit:,assigned,return from call to `WithFunPtrProperties.setExplicit:`,return from call to `set_explicitProperty`,return from call to `test_withFunPtrProperties_specializable[specialized with functions]`,in call to `test_withFunPtrProperties_specializable[specialized with functions]`,parameter `a` of test_withFunPtrProperties_specializable[specialized with functions],in call to `get_explicitProperty`,parameter `context` of get_explicitProperty,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,returned,return from call to `get_explicitProperty`,assigned,in call to `set_explicitProperty2`,parameter `context` of set_explicitProperty2,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,in call to `WithFunPtrProperties.setExplicit:`,parameter `explicit` of WithFunPtrProperties.setExplicit:,assigned,return from call to `WithFunPtrProperties.setExplicit:`,return from call to `set_explicitProperty2`,returned,return from call to `test_withFunPtrProperties_specializable[specialized with functions]`,assigned,taking "then" branch,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/NPEFunPtrProperty.m, funptr_test_localization_bad, 13, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `call_funPtrCallback[specialized with functions]`,in call to `set_explicitProperty_to_3[specialized with functions]`,is assigned to the constant 3,in call to `set_explicitProperty`,parameter `x` of set_explicitProperty,in call to `WithFunPtrProperties.setExplicit:`,parameter `explicit` of WithFunPtrProperties.setExplicit:,assigned,return from call to `WithFunPtrProperties.setExplicit:`,return from call to `set_explicitProperty`,return from call to `set_explicitProperty_to_3[specialized with functions]`,return from call to `call_funPtrCallback[specialized with functions]`,in call to `get_explicitProperty`,parameter `context` of get_explicitProperty,in call to `WithFunPtrProperties.explicit`,parameter `self` of WithFunPtrProperties.explicit,returned,return from call to `WithFunPtrProperties.explicit`,returned,return from call to `get_explicitProperty`,assigned,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/NPENilBlocks.m, BlockA.assignNilBad, 5, NIL_BLOCK_CALL, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/NPENilBlocks.m, BlockA.paramAssignNilBad:, 3, NIL_BLOCK_CALL, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/NPENilBlocks.m, BlockA.paramReassignNilBad:, 6, NIL_BLOCK_CALL, no_bucket, ERROR, [is assigned to the null pointer,assigned,assigned,invalid access occurs here] @@ -122,11 +122,11 @@ codetoanalyze/objc/pulse/null_deref/NoMockMethodExample.m, no_mock_ref_bad, 0, N codetoanalyze/objc/pulse/null_deref/Provider.m, Provider.get_bad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/Provider.m, Provider.get_bad, 3, NULLPTR_DEREFERENCE_LATENT, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/SpecWithBlocksProcnameExample.m, SpecWithBlocksProcnameExample.nilBlockCallBadLatent:, 2, NIL_BLOCK_CALL_LATENT, no_bucket, ERROR, [is assigned to the null pointer,when calling `ContentSource.matchLocal:external:[specialized with blocks]` here,parameter `externalMatchHandler` of ContentSource.matchLocal:external:[specialized with blocks],invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/alias.m, call_incr_int_deref_with_alias_bad, 7, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `x` declared here,assigned,in call to `incr_int_deref`,parameter `x` of incr_int_deref,is assigned to the constant 1,assigned,is assigned to the constant 1,assigned,return from call to `incr_int_deref`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/alias.m, call_incr_int_field_with_alias_bad, 9, NULLPTR_DEREFERENCE, no_bucket, ERROR, [allocated by call to `alloc` (modelled),in call to `NSObject.init` (modelled),assigned,in call to `Intptr.setI:`,parameter `self` of Intptr.setI:,return from call to `Intptr.setI:`,in call to `incr_int_field`,parameter `x` of incr_int_field,in call to `Intptr.i`,parameter `self` of Intptr.i,returned,return from call to `Intptr.i`,is assigned to the constant 1,in call to `Intptr.setI:`,parameter `i` of Intptr.setI:,assigned,return from call to `Intptr.setI:`,in call to `Intptr.i`,parameter `self` of Intptr.i,returned,return from call to `Intptr.i`,is assigned to the constant 1,in call to `Intptr.setI:`,parameter `i` of Intptr.setI:,assigned,return from call to `Intptr.setI:`,return from call to `incr_int_field`,in call to `Intptr.i`,parameter `self` of Intptr.i,returned,return from call to `Intptr.i`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/alias.m, test_capture_alias_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `x` declared here,assigned,in call to `objc_block_test_capture_alias_bad_1`,value captured by value as `ptr`,is assigned to the constant 1,assigned,is assigned to the constant 1,assigned,return from call to `objc_block_test_capture_alias_bad_1`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/alias.m, test_alias_in_block_specialization_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `x` declared here,assigned,in call to `test_alias_in_block_specialization[specialized with blocks]`,parameter `ptr` of test_alias_in_block_specialization[specialized with blocks],in call to `objc_block_test_alias_in_block_specialization_bad_3`,value captured by value as `ptr`,is assigned to the constant 1,assigned,is assigned to the constant 1,assigned,return from call to `objc_block_test_alias_in_block_specialization_bad_3`,return from call to `test_alias_in_block_specialization[specialized with blocks]`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] -codetoanalyze/objc/pulse/null_deref/alias.m, test_alias_then_block_specialization_bad, 14, NULLPTR_DEREFERENCE, no_bucket, ERROR, [variable `x` declared here,assigned,in call to `test_alias_then_block_specialization[specialized with blocks]`,parameter `ptr` of test_alias_then_block_specialization[specialized with blocks],in call to `objc_block_test_alias_then_block_specialization_bad_5`,parameter `ptr2` of objc_block_test_alias_then_block_specialization_bad_5,is assigned to the constant 1,assigned,return from call to `objc_block_test_alias_then_block_specialization_bad_5`,return from call to `test_alias_then_block_specialization[specialized with blocks]`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/alias.m, call_incr_int_deref_with_alias_bad, 7, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `incr_int_deref`,parameter `x` of incr_int_deref,is assigned to the constant 1,assigned,is assigned to the constant 1,assigned,return from call to `incr_int_deref`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/alias.m, call_incr_int_field_with_alias_bad, 9, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `incr_int_field`,parameter `x` of incr_int_field,in call to `Intptr.i`,parameter `self` of Intptr.i,returned,return from call to `Intptr.i`,is assigned to the constant 1,in call to `Intptr.setI:`,parameter `i` of Intptr.setI:,assigned,return from call to `Intptr.setI:`,in call to `Intptr.i`,parameter `self` of Intptr.i,returned,return from call to `Intptr.i`,is assigned to the constant 1,in call to `Intptr.setI:`,parameter `i` of Intptr.setI:,assigned,return from call to `Intptr.setI:`,return from call to `incr_int_field`,in call to `Intptr.i`,parameter `self` of Intptr.i,returned,return from call to `Intptr.i`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/alias.m, test_capture_alias_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `objc_block_test_capture_alias_bad_1`,value captured by value as `ptr`,is assigned to the constant 1,assigned,is assigned to the constant 1,assigned,return from call to `objc_block_test_capture_alias_bad_1`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/alias.m, test_alias_in_block_specialization_bad, 11, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `test_alias_in_block_specialization[specialized with blocks]`,in call to `objc_block_test_alias_in_block_specialization_bad_3`,value captured by value as `ptr`,is assigned to the constant 1,assigned,is assigned to the constant 1,assigned,return from call to `objc_block_test_alias_in_block_specialization_bad_3`,return from call to `test_alias_in_block_specialization[specialized with blocks]`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] +codetoanalyze/objc/pulse/null_deref/alias.m, test_alias_then_block_specialization_bad, 14, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `test_alias_then_block_specialization[specialized with blocks]`,in call to `objc_block_test_alias_then_block_specialization_bad_5`,parameter `ptr2` of objc_block_test_alias_then_block_specialization_bad_5,is assigned to the constant 1,assigned,return from call to `objc_block_test_alias_then_block_specialization_bad_5`,return from call to `test_alias_then_block_specialization[specialized with blocks]`,taking "then" branch,is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/dynamic_dispatch.m, DynamicDispatchMain.dynamic_dispatch_npe_bad, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `DynamicDispatchMain.get_ddclass_from:`,in call to `PInstance.get_ddclass`,is assigned to the null pointer,returned,return from call to `PInstance.get_ddclass`,returned,return from call to `DynamicDispatchMain.get_ddclass_from:`,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/dynamic_dispatch.m, DynamicDispatchMain.no_dynamic_dispatch_npe_bad, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [in call to `DynamicDispatchMain.get_ddclass_from_instance:`,in call to `PInstance.get_ddclass`,is assigned to the null pointer,returned,return from call to `PInstance.get_ddclass`,returned,return from call to `DynamicDispatchMain.get_ddclass_from_instance:`,invalid access occurs here] codetoanalyze/objc/pulse/null_deref/nil_param.m, NilParamNpeBad, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,in call to `NilParamA.test:`,parameter `other` of NilParamA.test:,in call to `NilParamA.newObject`,parameter `self` of NilParamA.newObject,a message sent to nil returns nil,return from call to `NilParamA.newObject`,returned,return from call to `NilParamA.test:`,invalid access occurs here] @@ -135,7 +135,7 @@ codetoanalyze/objc/pulse/null_deref/return_npe_test.m, MyClass.no_early_return_m codetoanalyze/objc/pulse/null_deref/return_npe_test.m, MyClass.no_early_return_no_zero_manifest_bad, 1, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,when calling `MyClass.no_early_return_no_zero_latent_bad_FN:` here,parameter `c` of MyClass.no_early_return_no_zero_latent_bad_FN:,invalid access occurs here] codetoanalyze/objc/pulse/retain_cycles/BlockInHeap.m, strong_handler_retain_cycle_bad, 6, RETAIN_CYCLE, no_bucket, ERROR, [when calling `BlockInHeap.assign_strong_handler_to_ivar` here,when calling `BlockInHeap.setStrongHandler:` here,assigned,assigned,retain cycle here] codetoanalyze/objc/pulse/retain_cycles/IvarInheritanceRetainCycle.m, field_superclass_main, 3, RETAIN_CYCLE, no_bucket, ERROR, [assigned,retain cycle here] -codetoanalyze/objc/pulse/retain_cycles/RetainCycleBlockAsParameter.m, test_fetchNewData_bad, 4, RETAIN_CYCLE, no_bucket, ERROR, [when calling `FBSomeDataManager.fetchNewData` here,when calling `Fetcher.initWithCompletionBlock:` here,assigned,assigned,assigned,retain cycle here] +codetoanalyze/objc/pulse/retain_cycles/RetainCycleBlockAsParameter.m, test_fetchNewData_bad, 4, RETAIN_CYCLE, no_bucket, ERROR, [when calling `FBSomeDataManager.fetchNewData` here,assigned,when calling `Fetcher.initWithCompletionBlock:` here,assigned,assigned,retain cycle here] codetoanalyze/objc/pulse/retain_cycles/RetainCycleBlockCapturedVar.m, LinkResolver.test, 3, RETAIN_CYCLE, no_bucket, ERROR, [assigned,when calling `Listener.setDidFinishLoad:` here,assigned,retain cycle here] codetoanalyze/objc/pulse/retain_cycles/RetainCycleBlocks.m, test_retain_self_in_block_cycle_bad, 4, RETAIN_CYCLE, no_bucket, ERROR, [when calling `RCBlock.retain_self_in_block_retain_cycle` here,when calling `RCBlock.setHandler:` here,assigned,assigned,retain cycle here] codetoanalyze/objc/pulse/retain_cycles/RetainCycleBlocks.m, retain_a_in_block_cycle_bad, 8, RETAIN_CYCLE, no_bucket, ERROR, [when calling `RCBlockAA.setB:` here,assigned,when calling `RCBlock.setA_handler:` here,assigned,assigned,retain cycle here] @@ -143,7 +143,7 @@ codetoanalyze/objc/pulse/retain_cycles/RetainCycleDeduplication.m, test_setCaptu codetoanalyze/objc/pulse/retain_cycles/RetainCycleExampleWeak.m, create_strong_cycle_bad, 4, RETAIN_CYCLE, no_bucket, ERROR, [when calling `AFeed.setStrong_adapter:` here,assigned,when calling `RetainCycleExampleWeak.test_strong_adapter_cycle` here,when calling `Adapter.setFeed:` here,assigned,retain cycle here] codetoanalyze/objc/pulse/retain_cycles/RetainCycleLength3.m, strongcycle_length3_bad, 6, RETAIN_CYCLE, no_bucket, ERROR, [when calling `MyClass1.setB:` here,assigned,when calling `MyClass2.setC:` here,assigned,when calling `MyClass3.setA:` here,assigned,retain cycle here] codetoanalyze/objc/pulse/retain_cycles/RetainCyclePropertyInProtocol.m, test_loadViewRetainCycle_bad, 2, RETAIN_CYCLE, no_bucket, ERROR, [when calling `MyCustomViewController.loadViewRetainCycle` here,when calling `MyCustomViewController.setView:` here,assigned,when calling `MyCustomView.initWithStrongDelegate:` here,assigned,retain cycle here] -codetoanalyze/objc/pulse/retain_cycles/RetainCycleStaticVar.m, test_sharedInstanceRetainCycleBad, 6, RETAIN_CYCLE, no_bucket, ERROR, [when calling `SharedView.sharedInstanceRetainCycle` here,when calling `SharedView.setHandler:` here,assigned,assigned,assigned,retain cycle here] +codetoanalyze/objc/pulse/retain_cycles/RetainCycleStaticVar.m, test_sharedInstanceRetainCycleBad, 6, RETAIN_CYCLE, no_bucket, ERROR, [when calling `SharedView.sharedInstanceRetainCycle` here,assigned,when calling `SharedView.setHandler:` here,assigned,assigned,retain cycle here] codetoanalyze/objc/pulse/retain_cycles/retain_cycle.m, strongcycle_bad, 6, RETAIN_CYCLE, no_bucket, ERROR, [when calling `AA.setB:` here,assigned,when calling `BBStrong.setA:` here,assigned,retain cycle here] codetoanalyze/objc/pulse/retain_cycles/retain_cycle2.m, strongcycle2_bad, 4, RETAIN_CYCLE, no_bucket, ERROR, [when calling `Parent.setChild:` here,assigned,when calling `Child.setParent:` here,assigned,retain cycle here] codetoanalyze/objc/pulse/taint/BlockInFunction.m, objc_block_source_block_passed_to_function_bad_1, 1, TAINT_ERROR, no_bucket, ERROR, [source of the taint here: value passed as argument `#0` to a block passed to `call_block_log` with kind `SimpleSource`,value passed as argument `#0` to `log_string` with kind `SimpleSink`], source: a block passed to call_block_log, sink: log_string, tainted expression: source diff --git a/infer/tests/codetoanalyze/objcpp/pulse/issues.exp b/infer/tests/codetoanalyze/objcpp/pulse/issues.exp index 592a5e84b6a..26577561d17 100644 --- a/infer/tests/codetoanalyze/objcpp/pulse/issues.exp +++ b/infer/tests/codetoanalyze/objcpp/pulse/issues.exp @@ -7,7 +7,7 @@ codetoanalyze/objcpp/pulse/NPEBasic.mm, testCallMethodReturnsnonPODLatent, 7, NI codetoanalyze/objcpp/pulse/NPEBasic.mm, testCallMethodReturnsnonPODLatentBad, 1, NIL_MESSAGING_TO_NON_POD, no_bucket, ERROR, [when calling `testCallMethodReturnsnonPODLatent` here,parameter `b` of testCallMethodReturnsnonPODLatent,taking "then" branch,is assigned to the null pointer,assigned,when calling `SomeObject.returnsnonPOD` here,invalid access occurs here] codetoanalyze/objcpp/pulse/NPEBasic.mm, testAccessPropertyAccessorBad, 2, NIL_MESSAGING_TO_NON_POD, no_bucket, ERROR, [is assigned to the null pointer,assigned,when calling `SomeObject.ptr` here,invalid access occurs here] codetoanalyze/objcpp/pulse/NPEBasic.mm, testTraceBad, 3, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,in call to `SomeObject.getXPtr`,parameter `self` of SomeObject.getXPtr,a message sent to nil returns nil,return from call to `SomeObject.getXPtr`,assigned,invalid access occurs here] -codetoanalyze/objcpp/pulse/NPEBasic.mm, unknown_call_twice_FP, 4, NIL_MESSAGING_TO_NON_POD, no_bucket, ERROR, [global variable `SomeObject.sharedInstance.shared` accessed here,in call to `SomeObject.sharedInstance`,is assigned to the null pointer,assigned,returned,return from call to `SomeObject.sharedInstance`,when calling `SomeObject.returnsnonPOD` here,invalid access occurs here] +codetoanalyze/objcpp/pulse/NPEBasic.mm, unknown_call_twice_FP, 4, NIL_MESSAGING_TO_NON_POD, no_bucket, ERROR, [in call to `SomeObject.sharedInstance`,is assigned to the null pointer,assigned,returned,return from call to `SomeObject.sharedInstance`,when calling `SomeObject.returnsnonPOD` here,invalid access occurs here] codetoanalyze/objcpp/pulse/NPEBasic.mm, testCallNullptrBad, 2, NULLPTR_DEREFERENCE, no_bucket, ERROR, [is assigned to the null pointer,assigned,invalid access occurs here] codetoanalyze/objcpp/pulse/NPEBasic.mm, unrelated_invalidation, 3, NIL_INSERTION_INTO_COLLECTION_LATENT, no_bucket, ERROR, [*** SUPPRESSED ***,source of the null value part of the trace starts here,assigned,is assigned to the null pointer,null pointer dereference part of the trace starts here,parameter `obj` of unrelated_invalidation,in call to `SomeObject.anotherObject`,parameter `self` of SomeObject.anotherObject,a message sent to nil returns nil,return from call to `SomeObject.anotherObject`,assigned,in call to `AnotherObject.unknown_function`,parameter `self` of AnotherObject.unknown_function,a message sent to nil returns nil,return from call to `AnotherObject.unknown_function`,in call to `value insertion into collection literal` (modelled),invalid access occurs here] codetoanalyze/objcpp/pulse/NPEBasic.mm, nilMessagingSharedPtrRefBad, 1, NIL_MESSAGING_TO_NON_POD, no_bucket, ERROR, [in call to `Builder.getResult`,is assigned to the null pointer,returned,return from call to `Builder.getResult`,when calling `Result.shared_ptr_of_int_ref` here,invalid access occurs here]