| #include <stdio.h> |
| #include <stdlib.h> |
| #include <string.h> |
| #include <sys/resource.h> |
| |
| #define LIMIT 1000000 |
| |
| int |
| main (void) |
| { |
| struct rlimit lim; |
| getrlimit (RLIMIT_STACK, &lim); |
| lim.rlim_cur = 1048576; |
| setrlimit (RLIMIT_STACK, &lim); |
| char *fmtstr = malloc (4 * LIMIT + 1); |
| if (fmtstr == NULL) |
| abort (); |
| char *output = malloc (LIMIT + 1); |
| if (output == NULL) |
| abort (); |
| for (size_t i = 0; i < LIMIT; i++) |
| memcpy (fmtstr + 4 * i, "%1$d", 4); |
| fmtstr[4 * LIMIT] = '\0'; |
| int ret = snprintf (output, LIMIT + 1, fmtstr, 0); |
| if (ret != LIMIT) |
| abort (); |
| for (size_t i = 0; i < LIMIT; i++) |
| if (output[i] != '0') |
| abort (); |
| return 0; |
| } |