Skip to content

Commit edafbee

Browse files
committed
[Cleanup] Make accept parser less lax
1 parent 67e0f0a commit edafbee

File tree

3 files changed

+33
-16
lines changed

3 files changed

+33
-16
lines changed

engine/src/cmdse.cpp

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -69,21 +69,36 @@ Parse_stat MCAccept::parse(MCScriptPoint &sp)
6969
secure = True;
7070
else if (sp.skip_token(SP_ACCEPT, TT_UNDEFINED, AC_DATAGRAM) == PS_NORMAL)
7171
datagram = True;
72-
sp.skip_token(SP_ACCEPT, TT_UNDEFINED, AC_UNDEFINED); // connections
73-
sp.skip_token(SP_ACCEPT, TT_UNDEFINED, AC_UNDEFINED); // on
74-
sp.skip_token(SP_ACCEPT, TT_UNDEFINED, AC_UNDEFINED); // port
75-
if (sp.parseexp(False, True, &port) != PS_NORMAL)
76-
{
77-
MCperror->add(PE_ACCEPT_BADEXP, sp);
78-
return PS_ERROR;
79-
}
80-
sp.skip_token(SP_REPEAT, TT_UNDEFINED, RF_WITH); // with
81-
sp.skip_token(SP_SUGAR, TT_CHUNK, CT_UNDEFINED); // message
82-
if (sp.parseexp(False, True, &message) != PS_NORMAL)
72+
73+
Parse_stat t_stat = PS_NORMAL;
74+
75+
if (PS_NORMAL == t_stat)
76+
t_stat = sp.skip_token(SP_ACCEPT, TT_UNDEFINED, AC_CONNECTIONS);
77+
78+
if (PS_NORMAL == t_stat)
79+
t_stat = sp.skip_token(SP_ACCEPT, TT_UNDEFINED, AC_ON);
80+
81+
if (PS_NORMAL == t_stat)
82+
t_stat = sp.skip_token(SP_ACCEPT, TT_UNDEFINED, AC_PORT);
83+
84+
if (PS_NORMAL == t_stat)
85+
t_stat = sp.parseexp(False, True, &port);
86+
87+
if (PS_NORMAL == t_stat)
88+
t_stat = sp.skip_token(SP_REPEAT, TT_UNDEFINED, RF_WITH);
89+
90+
if (PS_NORMAL == t_stat)
91+
t_stat = sp.skip_token(SP_SUGAR, TT_CHUNK, CT_UNDEFINED);
92+
93+
if (PS_NORMAL == t_stat)
94+
t_stat = sp.parseexp(False, True, &message);
95+
96+
if (PS_NORMAL != t_stat)
8397
{
8498
MCperror->add(PE_ACCEPT_BADEXP, sp);
8599
return PS_ERROR;
86100
}
101+
87102
if (sp.skip_token(SP_REPEAT, TT_UNDEFINED, RF_WITH) == PS_NORMAL
88103
&& sp.skip_token(SP_SSL, TT_STATEMENT, SSL_VERIFICATION) != PS_NORMAL)
89104
{

engine/src/lextable.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -226,11 +226,11 @@ extern const uint4 constant_table_size = ELEMENTS(constant_table);
226226

227227
static LT accept_table[] =
228228
{
229-
{"connections", TT_UNDEFINED, AC_UNDEFINED},
229+
{"connections", TT_UNDEFINED, AC_CONNECTIONS},
230230
{"datagram", TT_UNDEFINED, AC_DATAGRAM},
231231
{"datagrams", TT_UNDEFINED, AC_DATAGRAM},
232-
{"on", TT_UNDEFINED, AC_UNDEFINED},
233-
{"port", TT_UNDEFINED, AC_UNDEFINED},
232+
{"on", TT_UNDEFINED, AC_ON},
233+
{"port", TT_UNDEFINED, AC_PORT},
234234
{"secure", TT_UNDEFINED, AC_SECURE}
235235
};
236236

engine/src/parsedef.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@ constant;
3333
#define ELEMENTS(table) (sizeof(table) / sizeof(table[0]))
3434

3535
enum Accept_constants {
36-
AC_UNDEFINED,
37-
AC_DATAGRAM,
36+
AC_CONNECTIONS,
37+
AC_ON,
38+
AC_PORT,
39+
AC_DATAGRAM,
3840
AC_SECURE
3941
};
4042

0 commit comments

Comments
 (0)