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

            Bug ID: 117377
           Summary: Confusing -Wstringop-overflow warning with incorrect
                    declaration (pointer to array vs pointer to first
                    element)
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: sjames at gcc dot gnu.org
                CC: eggert at cs dot ucla.edu, qing.zhao at oracle dot com
            Blocks: 88443
  Target Milestone: ---

This is only an issue with old gnulib, as is the case in GNU patch.

```
$ gcc -c utimens.i
utimens.c: In function ‘fdutimens’:
utimens.c:383:17: warning: ‘update_timespec’ accessing 16 bytes in a region of
size 8 [-Wstringop-overflow=]
  383 |       if (ts && update_timespec (&st, &ts))
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
utimens.c:383:17: note: referencing argument 2 of type ‘struct timespec *[2]’
utimens.c:134:1: note: in a call to function ‘update_timespec’
  134 | update_timespec (struct stat const *statbuf, struct timespec *ts[2])
      | ^~~~~~~~~~~~~~~
utimens.c: In function ‘lutimens’:
utimens.c:596:17: warning: ‘update_timespec’ accessing 16 bytes in a region of
size 8 [-Wstringop-overflow=]
  596 |       if (ts && update_timespec (&st, &ts))
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
utimens.c:596:17: note: referencing argument 2 of type ‘struct timespec *[2]’
utimens.c:134:1: note: in a call to function ‘update_timespec’
  134 | update_timespec (struct stat const *statbuf, struct timespec *ts[2])
      | ^~~~~~~~~~~~~~~
```

gnulib changed their code in
https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=a3a946f670718d0dee5a7425ad5ac0a29fb46ea1
(see https://lists.gnu.org/r/bug-tar/2021-04/msg00010.html), but I think the
warning doesn't do a great job of explaining the problem either. But I'm also
not sure what exactly we could do better, except maybe ignoring this construct.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88443
[Bug 88443] [meta-bug] bogus/missing -Wstringop-overflow warnings

Reply via email to