This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c/71422] New: Total size of static objects is not limited


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

            Bug ID: 71422
           Summary: Total size of static objects is not limited
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ch3root at openwall dot com
  Target Milestone: ---

Shouldn't gcc loudly fail when it cannot lay static objects out without
wrapping around the end of the address space?
Otherwise the resulting binary can, for example, crash. Or silently give wrong
answer like in the example below.

Source code:

----------------------------------------------------------------------
#include <stdint.h>
#include <stdio.h>

char a[SIZE_MAX / 2];
char b[SIZE_MAX / 2];
char c[SIZE_MAX / 2];

int main(int argc, char **argv)
{
  (void)argv;

  a[argc] = 123;
  printf("%d\n", b[argc]);

  printf("&a = %p\n", (void *)&a);
  printf("&b = %p\n", (void *)&b);
  printf("&c = %p\n", (void *)&c);
}
----------------------------------------------------------------------

Results:

----------------------------------------------------------------------
$ gcc -std=c11 -pedantic -Wall -Wextra -O3 -m32 test.c && ./a.out
123
&a = 0x8049740
&b = 0x8049740
&c = 0x88049740
----------------------------------------------------------------------

gcc version: gcc (GCC) 7.0.0 20160604 (experimental)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]