Fixed: Strings buffer overflow in config files
This commit is contained in:
parent
0913c3d667
commit
0cbb87bfe1
1 changed files with 15 additions and 0 deletions
|
@ -27,7 +27,10 @@ using namespace NLMISC;
|
||||||
#define YY_NEVER_INTERACTIVE 1
|
#define YY_NEVER_INTERACTIVE 1
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
#define YY_NO_UNISTD_H 1
|
||||||
|
#include <io.h>
|
||||||
#define read _read
|
#define read _read
|
||||||
|
#define isatty _isatty
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Types */
|
/* Types */
|
||||||
|
@ -122,6 +125,12 @@ string \"[^\"\n]*\"
|
||||||
if (!cf_Ignore)
|
if (!cf_Ignore)
|
||||||
{
|
{
|
||||||
cflval.Val.Type = T_STRING;
|
cflval.Val.Type = T_STRING;
|
||||||
|
if (strlen(yytext+1) >= sizeof(cflval.Val.String))
|
||||||
|
{
|
||||||
|
strcpy (cflval.Val.String, "");
|
||||||
|
DEBUG_PRINTF("lex: string '%s' exceeds max length\n", yytext);
|
||||||
|
return STRING;
|
||||||
|
}
|
||||||
strcpy (cflval.Val.String, yytext+1);
|
strcpy (cflval.Val.String, yytext+1);
|
||||||
cflval.Val.String[strlen(cflval.Val.String)-1] = '\0';
|
cflval.Val.String[strlen(cflval.Val.String)-1] = '\0';
|
||||||
DEBUG_PRINTF("lex: string '%s' '%s'\n", yytext, cflval.Val.String);
|
DEBUG_PRINTF("lex: string '%s' '%s'\n", yytext, cflval.Val.String);
|
||||||
|
@ -133,6 +142,12 @@ string \"[^\"\n]*\"
|
||||||
if (!cf_Ignore)
|
if (!cf_Ignore)
|
||||||
{
|
{
|
||||||
cflval.Val.Type = T_STRING;
|
cflval.Val.Type = T_STRING;
|
||||||
|
if (strlen(yytext+1) >= sizeof(cflval.Val.String))
|
||||||
|
{
|
||||||
|
strcpy (cflval.Val.String, "");
|
||||||
|
DEBUG_PRINTF("lex: string '%s' exceeds max length\n", yytext);
|
||||||
|
return VARIABLE;
|
||||||
|
}
|
||||||
strcpy (cflval.Val.String, yytext);
|
strcpy (cflval.Val.String, yytext);
|
||||||
DEBUG_PRINTF("lex: variable '%s' '%s'\n", yytext, cflval.Val.String);
|
DEBUG_PRINTF("lex: variable '%s' '%s'\n", yytext, cflval.Val.String);
|
||||||
return VARIABLE;
|
return VARIABLE;
|
||||||
|
|
Loading…
Reference in a new issue