analyzer: more bounds-checking wording tweaks [PR106626]
commitdf460cf51b25868564dd2628a399b8c874ef309c
authorDavid Malcolm <dmalcolm@redhat.com>
Thu, 1 Dec 2022 02:26:42 +0000 (30 21:26 -0500)
committerDavid Malcolm <dmalcolm@redhat.com>
Thu, 1 Dec 2022 02:26:42 +0000 (30 21:26 -0500)
tree622fffcc4e92705df91d412e317fc1438b5be010
parent7c655699ed51b0c987e5472767db48b19044ae05
analyzer: more bounds-checking wording tweaks [PR106626]

This patch tweaks the wording of -Wanalyzer-out-of-bounds:

* use the spellings/terminology of CWE:
  * replace "underread" with "under-read", as per:
     https://cwe.mitre.org/data/definitions/127.html
  * replace "overread" with "over-read" as per:
     https://cwe.mitre.org/data/definitions/126.html
  * replace "underflow" with "underwrite" as per:
    https://cwe.mitre.org/data/definitions/124.html

* wherever known, specify the memory region of the bad access,
so that it says e.g. "heap-based buffer over-read"
or "stack-based buffer over-read"

gcc/analyzer/ChangeLog:
PR analyzer/106626
* bounds-checking.cc (out_of_bounds::get_memory_space): New.
(buffer_overflow::emit): Use it.
(class buffer_overread): Rename to...
(class buffer_over_read): ...this.
(buffer_over_read::emit): Specify which memory space the read is
from, where known.  Change "overread" to "over-read".
(class buffer_underflow): Rename to...
(class buffer_underwrite): ...this.
(buffer_underwrite::emit): Specify which memory space the write is
to, where known.  Change "underflow" to "underwrite".
(class buffer_underread): Rename to...
(class buffer_under_read): Rename to...
(buffer_under_read::emit): Specify which memory space the read is
from, where known.  Change "underread" to "under-read".
(symbolic_past_the_end::get_memory_space): New.
(symbolic_buffer_overflow::emit): Use it.
(class symbolic_buffer_overread): Rename to...
(class symbolic_buffer_over_read): ...this.
(symbolic_buffer_over_read::emit): Specify which memory space the
read is from, where known.  Change "overread" to "over-read".
(region_model::check_symbolic_bounds): Update for class renaming.
(region_model::check_region_bounds): Likewise.

gcc/testsuite/ChangeLog:
PR analyzer/106626
* gcc.dg/analyzer/call-summaries-2.c: Update expected results.
* gcc.dg/analyzer/out-of-bounds-1.c: Likewise.
* gcc.dg/analyzer/out-of-bounds-2.c: Likewise.
* gcc.dg/analyzer/out-of-bounds-3.c: Likewise.
* gcc.dg/analyzer/out-of-bounds-4.c: Likewise.
* gcc.dg/analyzer/out-of-bounds-5.c: Likewise.
* gcc.dg/analyzer/out-of-bounds-container_of.c: Likewise.
* gcc.dg/analyzer/out-of-bounds-read-char-arr.c: Likewise.  Rename
functions from "int_arr_" to "char_arr_".
* gcc.dg/analyzer/out-of-bounds-read-int-arr.c: Update expected
results.
* gcc.dg/analyzer/out-of-bounds-read-struct-arr.c: New test.
* gcc.dg/analyzer/out-of-bounds-write-char-arr.c: Update expected
results.  Rename functions from "int_arr_" to "char_arr_".
* gcc.dg/analyzer/out-of-bounds-write-int-arr.c: Update expected
results.
* gcc.dg/analyzer/out-of-bounds-write-struct-arr.c: New test.
* gcc.dg/analyzer/pr101962.c: Update expected results.
* gcc.dg/analyzer/realloc-5.c: Update expected results.
* gcc.dg/analyzer/zlib-3.c: Update expected results.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
17 files changed:
gcc/analyzer/bounds-checking.cc
gcc/testsuite/gcc.dg/analyzer/call-summaries-2.c
gcc/testsuite/gcc.dg/analyzer/out-of-bounds-1.c
gcc/testsuite/gcc.dg/analyzer/out-of-bounds-2.c
gcc/testsuite/gcc.dg/analyzer/out-of-bounds-3.c
gcc/testsuite/gcc.dg/analyzer/out-of-bounds-4.c
gcc/testsuite/gcc.dg/analyzer/out-of-bounds-5.c
gcc/testsuite/gcc.dg/analyzer/out-of-bounds-container_of.c
gcc/testsuite/gcc.dg/analyzer/out-of-bounds-read-char-arr.c
gcc/testsuite/gcc.dg/analyzer/out-of-bounds-read-int-arr.c
gcc/testsuite/gcc.dg/analyzer/out-of-bounds-read-struct-arr.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/analyzer/out-of-bounds-write-char-arr.c
gcc/testsuite/gcc.dg/analyzer/out-of-bounds-write-int-arr.c
gcc/testsuite/gcc.dg/analyzer/out-of-bounds-write-struct-arr.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/analyzer/pr101962.c
gcc/testsuite/gcc.dg/analyzer/realloc-5.c
gcc/testsuite/gcc.dg/analyzer/zlib-3.c