1 | #include <stdio.h> |
---|---|
2 | #include <stdlib.h> |
3 | #include <string.h> |
4 | #include <sys/resource.h> |
5 | |
6 | #define LIMIT 1000000 |
7 | |
8 | int |
9 | main (void) |
10 | { |
11 | struct rlimit lim; |
12 | getrlimit (RLIMIT_STACK, rlimits: &lim); |
13 | lim.rlim_cur = 1048576; |
14 | setrlimit (RLIMIT_STACK, rlimits: &lim); |
15 | char *fmtstr = malloc (size: 4 * LIMIT + 1); |
16 | if (fmtstr == NULL) |
17 | abort (); |
18 | char *output = malloc (LIMIT + 1); |
19 | if (output == NULL) |
20 | abort (); |
21 | for (size_t i = 0; i < LIMIT; i++) |
22 | memcpy (fmtstr + 4 * i, "%1$d", 4); |
23 | fmtstr[4 * LIMIT] = '\0'; |
24 | int ret = snprintf (s: output, LIMIT + 1, format: fmtstr, 0); |
25 | if (ret != LIMIT) |
26 | abort (); |
27 | for (size_t i = 0; i < LIMIT; i++) |
28 | if (output[i] != '0') |
29 | abort (); |
30 | return 0; |
31 | } |
32 |