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

            Bug ID: 104119
           Summary: Wrong -Werror=format-overflow= since
                    r12-5014-g6b8b959675a3e14c
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
                CC: aldyh at gcc dot gnu.org, amacleod at redhat dot com
  Target Milestone: ---

Since the revision I see (reduced from multipath-tools package)

$ cat devmapper.i
struct {
  char id[8];
  int needs_paths_uevent;
} *p;

void dm_addmap_create()
{
  char *str = __builtin_malloc((sizeof("mpath-") - 1) + __builtin_strlen(p->id)
+ 10);
  __builtin_sprintf(str, "mpath-%s", p->id);
}

$ gcc devmapper.i -c -m32 -O2 -Werror=format-overflow
devmapper.i: In function ‘dm_addmap_create’:
devmapper.i:9:33: error: ‘%s’ directive writing up to 2147483644 bytes into a
region of size 2147483641 [-Werror=format-overflow=]
    9 |   __builtin_sprintf(str, "mpath-%s", p->id);
      |                                 ^~
devmapper.i:9:3: note: ‘__builtin_sprintf’ output between 7 and 2147483651
bytes into a destination of size 2147483647
    9 |   __builtin_sprintf(str, "mpath-%s", p->id);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors

Note one needs -m32!

Reply via email to