]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/analyzer/varargs.cc
analyzer: add src_region param to region_model::check_for_poison [PR106479]
authorDavid Malcolm <dmalcolm@redhat.com>
Fri, 16 Dec 2022 19:50:07 +0000 (14:50 -0500)
committerDavid Malcolm <dmalcolm@redhat.com>
Fri, 16 Dec 2022 19:50:07 +0000 (14:50 -0500)
commit2fdc8546b5c6cb1fe254e40b5bdd19ed6fbb44da
treedc31813c43d561b063205cf603ef91cb7ccae08b
parentb50fe16a3b2214c418ecc5febc0bb21bc17912b7
analyzer: add src_region param to region_model::check_for_poison [PR106479]

PR analyzer/106479 notes that we don't always show the region-creation
event for a memmove from an uninitialized stack region.  This occurs
when using kf_memcpy_memmove.  Fix by passing a src_region hint to
region_model::check_for_poison.

gcc/analyzer/ChangeLog:
PR analyzer/106479
* kf.cc (kf_memcpy_memmove::impl_call_pre): Pass in source region
to region_model::check_for_poison.
* region-model-asm.cc (region_model::on_asm_stmt): Pass NULL
region to region_model::check_for_poison.
* region-model.cc (region_model::check_for_poison): Add
"src_region" param, and pass it to poisoned_value_diagnostic.
(region_model::on_assignment): Pass NULL region to
region_model::check_for_poison.
(region_model::get_rvalue): Likewise.
* region-model.h (region_model::check_for_poison): Add
"src_region" param.
* sm-fd.cc (fd_state_machine::on_accept): Pass in source region
to region_model::check_for_poison.
* varargs.cc (kf_va_copy::impl_call_pre): Pass NULL region to
region_model::check_for_poison.
(kf_va_arg::impl_call_pre): Pass in source region to
region_model::check_for_poison.

gcc/testsuite/ChangeLog:
PR analyzer/106479
* gcc.dg/analyzer/pr104308.c (test_memmove_within_uninit): Remove
xfail on region creation event.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
gcc/analyzer/kf.cc
gcc/analyzer/region-model-asm.cc
gcc/analyzer/region-model.cc
gcc/analyzer/region-model.h
gcc/analyzer/sm-fd.cc
gcc/analyzer/varargs.cc
gcc/testsuite/gcc.dg/analyzer/pr104308.c