13059442f143f00f351c6cbc7f0119af65a6f652bsewardj
23059442f143f00f351c6cbc7f0119af65a6f652bsewardj/* test of plausible behaviour with malloc and stupid args */
33059442f143f00f351c6cbc7f0119af65a6f652bsewardj
43059442f143f00f351c6cbc7f0119af65a6f652bsewardj#include <stdlib.h>
53059442f143f00f351c6cbc7f0119af65a6f652bsewardj#include <stdio.h>
63059442f143f00f351c6cbc7f0119af65a6f652bsewardj
73059442f143f00f351c6cbc7f0119af65a6f652bsewardjint main ( void )
83059442f143f00f351c6cbc7f0119af65a6f652bsewardj{
93059442f143f00f351c6cbc7f0119af65a6f652bsewardj  char* p;
103059442f143f00f351c6cbc7f0119af65a6f652bsewardj
113059442f143f00f351c6cbc7f0119af65a6f652bsewardj  p = malloc(0);
12aed053675acc9fb4fcbe7bc38c1120317bad68fasewardj  printf("malloc(0) = 0x%lx\n", (unsigned long)p);
133059442f143f00f351c6cbc7f0119af65a6f652bsewardj  free(p);
143059442f143f00f351c6cbc7f0119af65a6f652bsewardj
153059442f143f00f351c6cbc7f0119af65a6f652bsewardj  p = malloc(-1);
16aed053675acc9fb4fcbe7bc38c1120317bad68fasewardj  printf("malloc(-1) = 0x%lx\n", (unsigned long)p);
173059442f143f00f351c6cbc7f0119af65a6f652bsewardj  free(p);
183059442f143f00f351c6cbc7f0119af65a6f652bsewardj
193059442f143f00f351c6cbc7f0119af65a6f652bsewardj  p = calloc(0,1);
20aed053675acc9fb4fcbe7bc38c1120317bad68fasewardj  printf("calloc(0,1) = 0x%lx\n", (unsigned long)p);
213059442f143f00f351c6cbc7f0119af65a6f652bsewardj  free(p);
223059442f143f00f351c6cbc7f0119af65a6f652bsewardj
233059442f143f00f351c6cbc7f0119af65a6f652bsewardj  p = calloc(0,-1);
24aed053675acc9fb4fcbe7bc38c1120317bad68fasewardj  printf("calloc(0,-1) = 0x%lx\n", (unsigned long)p);
253059442f143f00f351c6cbc7f0119af65a6f652bsewardj  free(p);
263059442f143f00f351c6cbc7f0119af65a6f652bsewardj
278f105fa797786a8e0acb1dcc614c81ca4a5578benjn  // We no longer get a warning with this due to the calloc overflow checking
288f105fa797786a8e0acb1dcc614c81ca4a5578benjn  // done for bug 149878.  It's no great loss, it's extremely unlikely to
298f105fa797786a8e0acb1dcc614c81ca4a5578benjn  // occur in practice.
303059442f143f00f351c6cbc7f0119af65a6f652bsewardj  p = calloc(-1,-1);
31aed053675acc9fb4fcbe7bc38c1120317bad68fasewardj  printf("calloc(-1,-1) = 0x%lx\n", (unsigned long)p);
323059442f143f00f351c6cbc7f0119af65a6f652bsewardj  free(p);
333059442f143f00f351c6cbc7f0119af65a6f652bsewardj
343059442f143f00f351c6cbc7f0119af65a6f652bsewardj  return 0;
353059442f143f00f351c6cbc7f0119af65a6f652bsewardj}
36