https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98247

David Malcolm <dmalcolm at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
            Summary|RFE: detect Flexible Array  |Analyzer fails to detect
                   |Member misuse in analyzer   |certain out-of-bounds uses
                   |                            |of flexible array members
   Last reconfirmed|                            |2022-09-09
             Status|UNCONFIRMED                 |NEW
            Version|11.0                        |13.0

--- Comment #5 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
The above patch adds test coverage for various uses of the flexible array
member idiom, inspired by your test case above (thanks!)

It adds one xfail; in test_symbolic_size_oob, where there's a false negative,
where it fails to complain about this code:

struct str *
test_symbolic_size_oob (size_t len)
{
  /* Forgetting to add space for the trailing array.  */
  struct str *str = malloc(sizeof(str));
  if (str) {
    str->len = len;
    memset(str->data, 'x', len); /* { dg-warning "heap-based buffer overflow"
"PR analyzer/98247" { xfail *-*-* } } */
    // TODO(xfail): we don't yet complain about this case, which occurs when
len > 0
    return str;
  }
  return NULL;
}

I'm going to repurpose this bug to track fixing that false negative; updating
subject accordingly.

Reply via email to