ircd_lexer: fix crash with very large config option strings

This commit is contained in:
Aaron Jones 2016-05-15 00:00:23 +00:00
parent b143df9ac4
commit 401cb2bb17
No known key found for this signature in database
GPG key ID: 6E854C0FAAD4CEA4
2 changed files with 4 additions and 4 deletions

View file

@ -58,7 +58,7 @@ char *current_file = conffilebuf;
FILE *inc_fbfile_in[MAX_INCLUDE_DEPTH];
char linebuf[512];
char yy_linebuf[16384];
#undef YY_INPUT
@ -79,7 +79,7 @@ include \.include{ws}(\<.*\>|\".*\")
%%
{include} { cinclude(); }
"/*" { ccomment(); }
\n.* { strcpy(linebuf, yytext+1); lineno++; yyless(1); }
\n.* { rb_strlcpy(yy_linebuf, yytext+1, sizeof(yy_linebuf)); lineno++; yyless(1); }
{ws} ;
{comment} { hashcomment(); }

View file

@ -56,7 +56,7 @@
struct config_server_hide ConfigServerHide;
extern int yyparse(void); /* defined in y.tab.c */
extern char linebuf[];
extern char yy_linebuf[16384]; /* defined in ircd_lexer.l */
static rb_bh *confitem_heap = NULL;
@ -1639,7 +1639,7 @@ yyerror(const char *msg)
{
char newlinebuf[BUFSIZE];
strip_tabs(newlinebuf, linebuf, strlen(linebuf));
strip_tabs(newlinebuf, yy_linebuf, strlen(yy_linebuf));
ierror("\"%s\", line %d: %s at '%s'", conffilebuf, lineno + 1, msg, newlinebuf);
sendto_realops_snomask(SNO_GENERAL, L_ALL, "\"%s\", line %d: %s at '%s'",