Skip to content

Commit e9fb3bf

Browse files
committed
Disallow constants section anywhere other than the main scope
Fixes an OOM scenario (reproducer in fuzz/regresion/...). Thanks to oss-fuzz: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=68129
1 parent f06c8d8 commit e9fb3bf

File tree

2 files changed

+235
-1
lines changed

2 files changed

+235
-1
lines changed

fuzz/regression/clusterfuzz-testcase-minimized-config_fuzzer-5462763322277888

+233
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,233 @@
1+
$=$�=$=$=$=$=$=$=$=$=$=$=$=$=$��=$=$=$$==$=$=$=$=$=$=$=$=$=$=$=$=$=$=$=$=$=$=$=$=$��=$=$=$=$=$=$=$=$=$=""$=$=$=$=$=$=$=$=$off
2+
!=off
3+
']
4+
���" :=
5+
"��������������" :=
6+
"������="
7+
constants{M=Z=M""$"������������� :=
8+
"������="
9+
constants{M=]=${M:}${M:.}${M:}${I:}${M:}${N:}${M:}${M:}${M:}${M:}${M:}${M:M:}Z=M${M:}${I:}${M:}$$=$=$=$=$=$=$=""$"����������������ʘ�����������dd4"���˜���$=$=$=$=$=$=$=$=$=$=$=$=$=$�������������� :=
10+
"������="
11+
constants{M=]=${M:}${M:.}${M:}${I:}${M:}${N:}${M:}${M:}${M:{{M:}${M:}${M:M:}Z=M${M:}${I:�dd4"���˜���$=$=$=$=$T$=$=$=$=$=$=$=$=$��=$=$="
12+
"
13+
"
14+
"
15+
"
16+
"
17+
"
18+

19+
"�"
20+
"
21+
"
22+
"
23+
"
24+
"
25+
"
26+
"
27+
"
28+
"
29+
"
30+
"
31+
"
32+
"
33+

34+
"
35+
"
36+
"
37+
"
38+
"
39+
"
40+
"
41+
"
42+
"
43+
"
44+
"
45+
"
46+
"
47+
"
48+
"
49+
"
50+
"
51+
"
52+

53+
"
54+
"
55+
"
56+
"
57+
"
58+
"
59+
"
60+
"
61+
"
62+
"
63+
"
64+
"
65+
"
66+
"
67+
"
68+
"
69+
"
70+
"
71+

72+
"����������" :=
73+
"������="
74+
constants{M=Z=M""$"������������� :=
75+
"������="
76+
constants{M=]=${M:}${M:.}${M:}${I:}${M:}${N:}${M:}${M:}${M:}${M:}${M:}${M:M:}Z=M${M:}${I:}${M:}$$=$=$=$=$=$=$=""$"��=$=$=$=$=$=$=$=$=$=$=$=$=$�������������� :=
77+
"������="
78+
constants{M=]=${M:}${M:.}${M:}${I:}${M:}${N:}${M:}${M:}${M:{{M:}${M:}${M:M:}Z=M${M:}${I:�dd4"���˜���$=$=$=$=$T$=$=$=$=$=$=$=$=$��=$=$="
79+
"
80+
"
81+
"
82+
"
83+
84+
"
85+
"
86+
"
87+

88+
"
89+
"
90+
"
91+
"
92+
"
93+
"$=$=$=$�������=$constan�s$=$=$=$=$=$=$��=$=$=$=$=$=$=$B$=$=""$=$=$=�=$=$"
94+
"
95+
"
96+
"
97+
"
98+
"
99+
"
100+
"
101+
"
102+
"
103+
"
104+
"
105+
"
106+
"
107+

108+
"����������" :=
109+
"������="
110+
constants{M=Z=M""$"������������� :=
111+
"������="
112+
constants{M=]=${M:}${M:.}${M:}${I:}${M:}${N:}${M:}${M:}${M:}${M:}${M:}${M:M:}Z=M${M:}${I:}${M:}$$=$=$=$=$=$=$=""$"��=$=$=$=$=$=$=$=$=$=$=$=$=$�������������� :=
113+
"������="
114+
constants{M=]=${M:}${M:.}${M:}${I:}${M:}${N:}${M:}${M:}${M:{{M:}${M:}${M:M:}Z=M${M:}${I:�dd4"���˜���$=$=$=$=$T$=$=$=$=$=$=$=$=$��=$=$="
115+
"
116+
"
117+
"
118+
"
119+
120+
"
121+
"
122+
"
123+

124+
"
125+
"
126+
"
127+
"
128+
"
129+
"$=$=$=$�������=$constan:}${M:}${M:}${M:}${M:M:}Z=M${M:}${I:}${M:}$$=$=$=$=$=$=$=""$"����������������ʘ�����������dd4"���˜���$=$=$=$=$=$=$=$=$=$=$=$=$=$�������������� :=
130+
"������="
131+
constants{M=]=${M:}${M:.}${M:}${I:}${M:}${N:}${M:}${M:}${M:{{M:}${M:}${M:M:}Z=M${M:}${I:�dd4"���˜���$=$=$=$=$T$=$=$=$=$=$=$=$=$��=$=$="
132+
"
133+
"
134+
"
135+
"
136+
137+
"
138+
"
139+
"
140+

141+
"
142+
"
143+
"
144+
"
145+
"
146+
"$=$=$=$�������=$constan:}${M:}${M:}${M:}${M:M:}Z=M${M:}${I:}${M:}$$=$=$=$=$=$=$=""$"����������������ʘ�����������dd4"���˜���$=$=$=$=$=$=$=$=$=$=$=$=$=$�������������� :=
147+
"������="
148+
constants{M=]=${M:}${M:.}${M:}${I:}${M:}${N:}${M:}${M:}${M:{{M:}${M:}${M:M:}Z=M${M:}${I:�dd4"���˜���$=$=$=$=$T$=$=$=$=$=$=$=$=$��=$=$="
149+
"
150+
"
151+
"
152+
"
153+
154+
"
155+
"
156+
"
157+

158+
"
159+
"
160+
"
161+
"
162+
"
163+
"$=$=$=$�������=$constan:}${M:}${M:}${M:}${M:M:}Z=M${M:}${I:}${M:}$$=$=$=$=$=$=$=""$"����������������ʘ�����������dd4"���˜���$=$=$=$=$=$=$=$=$=$=$=$=$=$�������������� :=
164+
"������="
165+
constants{M=]=${M:}${M:.}${M:}${I:}${M:}${N:}${M:}${M:}${M:{{M:}${M:}${M:M:}Z=M${M:}${I:�dd4"���˜���$=$=$=$=$T$=$=$=$=$=$=$=$=$��=$=$="
166+
"
167+
"
168+
"
169+
"
170+
171+
"
172+
"
173+
"
174+

175+
"
176+
"
177+
"
178+
"
179+
"
180+
"$=$=$=$�������=$constan:}${M:}${M:}${M:}${M:M:}Z=M${M:}${I:}${M:}$$=$=$=$=$=$=$=""$"����������������ʘ�����������dd4"���˜���$=$=$=$=$=$=$=$=$=$=$=$=$=$�������������� :=
181+
"������="
182+
constants{M=]=${M:}${M:.}${M:}${I:}${M:}${N:}${M:}${M:}${M:{{M:}${M:}${M:M:}Z=M${M:}${I:�dd4"���˜���$=$=$=$=$T$=$=$=$=$=$=$=$=$��=$=$="
183+
"
184+
"
185+
"
186+
"
187+
"
188+
"
189+

190+
"�"
191+
"
192+
"
193+
"
194+
"
195+
"
196+
"
197+
"
198+
"
199+
"
200+
"
201+
"
202+
"
203+
"
204+

205+
"
206+
"
207+
"
208+
"
209+
"
210+
"
211+
"
212+
"
213+
"
214+
"
215+
"
216+
�s$=$=$=$=$=$=$��=$=$=$=$=$=$=$B$=$=""$=$=$=�=$=$=$=$=$=$=$B$=$=""$=$=$=$=$=$�$=$=$=off
217+
(=off
218+
(=of{M:}$����+Z=M""$"�������������" :
219+
"
220+
"
221+
"
222+
"
223+
"
224+
"
225+
"
226+
"
227+
"
228+
"
229+
"
230+
"=
231+
"������*="
232+
233+
co

src/lib/lwan-config.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -851,7 +851,8 @@ static const struct config_line *parser_next(struct parser *parser)
851851
if (!l)
852852
return NULL;
853853

854-
if (l->type == CONFIG_LINE_TYPE_SECTION && streq(l->key, "constants")) {
854+
if (l->type == CONFIG_LINE_TYPE_SECTION && streq(l->key, "constants") &&
855+
config_from_parser(parser)->opened_brackets == 1) {
855856
struct config *config = config_from_parser(parser);
856857

857858
if (parse_constants(config, l))

0 commit comments

Comments
 (0)