2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / gcc.dg / cpp / 20020927-1.c
blob91f89518a22cb44de3b4b0cb59f702a1060c6690
1 /* Test case for buffer overflow bug in token stringification.
2 See PR preprocessor/8055 for details.
3 Reported by Alexander N. Kabaev <ak03@gte.com>.
4 Test case written by Zack Weinberg <zack@codesourcery.com>. */
6 /* { dg-do preprocess } */
8 #define S(x) #x
10 /* Fill up one internal buffer with data. */
11 S(1234567890123456789012345678901234567890123456789012345678901234567890
12 1234567890123456789012345678901234567890123456789012345678901234567890
13 1234567890123456789012345678901234567890123456789012345678901234567890
14 1234567890123456789012345678901234567890123456789012345678901234567890
15 1234567890123456789012345678901234567890123456789012345678901234567890
16 1234567890123456789012345678901234567890123456789012345678901234567890
17 1234567890123456789012345678901234567890123456789012345678901234567890
18 1234567890123456789012345678901234567890123456789012345678901234567890
19 1234567890123456789012345678901234567890123456789012345678901234567890
20 1234567890123456789012345678901234567890123456789012345678901234567890
21 1234567890123456789012345678901234567890123456789012345678901234567890
22 1234567890123456789012345678901234567890123456789012345678901234567890
23 1234567890123456789012345678901234567890123456789012345678901234567890
24 1234567890123456789012345678901234567890123456789012345678901234567890
25 1234567890123456789012345678901234567890123456789012345678901234567890
26 1234567890123456789012345678901234567890123456789012345678901234567890
27 1234567890123456789012345678901234567890123456789012345678901234567890
28 1234567890123456789012345678901234567890123456789012345678901234567890
29 1234567890123456789012345678901234567890123456789012345678901234567890
30 1234567890123456789012345678901234567890123456789012345678901234567890
31 1234567890123456789012345678901234567890123456789012345678901234567890
32 1234567890123456789012345678901234567890123456789012345678901234567890
33 1234567890123456789012345678901234567890123456789012345678901234567890
34 1234567890123456789012345678901234567890123456789012345678901234567890
35 1234567890123456789012345678901234567890123456789012345678901234567890
36 1234567890123456789012345678901234567890123456789012345678901234567890
37 1234567890123456789012345678901234567890123456789012345678901234567890
38 1234567890123456789012345678901234567890123456789012345678901234567890
39 1234567890123456789012345678901234567890123456789012345678901234567890
40 1234567890123456789012345678901234567890123456789012345678901234567890
41 1234567890123456789012345678901234567890123456789012345678901234567890
42 1234567890123456789012345678901234567890123456789012345678901234567890
43 1234567890123456789012345678901234567890123456789012345678901234567890
44 1234567890123456789012345678901234567890123456789012345678901234567890
45 1234567890123456789012345678901234567890123456789012345678901234567890
46 1234567890123456789012345678901234567890123456789012345678901234567890
47 1234567890123456789012345678901234567890123456789012345678901234567890
48 1234567890123456789012345678901234567890123456789012345678901234567890
49 1234567890123456789012345678901234567890123456789012345678901234567890
50 1234567890123456789012345678901234567890123456789012345678901234567890
51 1234567890123456789012345678901234567890123456789012345678901234567890
52 1234567890123456789012345678901234567890123456789012345678901234567890
53 1234567890123456789012345678901234567890123456789012345678901234567890
54 1234567890123456789012345678901234567890123456789012345678901234567890
55 1234567890123456789012345678901234567890123456789012345678901234567890
56 1234567890123456789012345678901234567890123456789012345678901234567890
57 1234567890123456789012345678901234567890123456789012345678901234567890
58 1234567890123456789012345678901234567890123456789012345678901234567890
59 1234567890123456789012345678901234567890123456789012345678901234567890
60 1234567890123456789012345678901234567890123456789012345678901234567890
61 1234567890123456789012345678901234567890123456789012345678901234567890
62 1234567890123456789012345678901234567890123456789012345678901234567890
63 12345678901234567890123456789012345678901234567890123456789012345)
65 /* When stringify_arg() was called with an empty macro argument, it would
66 advance the buffer pointer by one but fail to check for running past the
67 end of the buffer. We can only know where the end of the buffer is to
68 within about eight bytes, so do this sixteen times to be sure of hitting
69 it. */
71 S()
72 S()
73 S()
74 S()
75 S()
76 S()
77 S()
78 S()
79 S()
80 S()
81 S()
82 S()
83 S()
84 S()
85 S()
86 S()
88 /* Now allocate more memory in the buffer, which should provoke a crash. */
90 S(abcdefghijklmnopqrstuvwxyz)
91 S(abcdefghijklmnopqrstuvwxyz)