#include #include #include int main(void) { void *p; // This is the biggest word-sized signed number. We use a signed number, // even though malloc takes an unsigned SizeT, because the "silly malloc // arg" checking done by memcheck treats the arg like a signed int in // order to detect the passing of a silly size arg like -1. unsigned long size = (~(0UL)) >> 1; fprintf(stderr, "Attempting too-big malloc()...\n"); p = malloc(size); // way too big! if (p) fprintf(stderr, "huge malloc() succeeded??\n"); fprintf(stderr, "Attempting too-big mmap()...\n"); p = mmap( 0, size, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0 ); if (-1 != (long)p) fprintf(stderr, "huge mmap() succeeded??\n"); return 0; }