summaryrefslogtreecommitdiffstats
path: root/Source/LexerParser
Commit message (Collapse)AuthorAgeFilesLines
* cmCommandArgumentParser: remove the variable tokens from the classRolf Eike Beer2017-10-252-14/+28
| | | | Make them local constants in the lexer file.
* ListFileLexer: fix heap-buffer-overflow on malicious inputMatthias Maennich2017-08-302-98/+116
| | | | | | | | | | | | | | | | | | | | | | | | | | In case a list file contains a null terminated string that is continued until a later space, the lexer token information got inconsistent: e.g. an argument "TEST\0FOOBAR" is passed by the lexer as a token char* = "TEST\0FOOBAR" and length 11 ^^ note: ascii 0x00 Using strdup in cmListFileLexer leads lexer->token.text to be allocated with size 5 and lexer->token.length to be set to 11 A subsequent call to this function with an argument of 5 < length <= 11 wrongly assumed a sufficiently sized buffer and therefore corrupted the heap buffer. The program might crash due to this corruption. The case "NullTerminatedArgument" is intentionally using a quite large 'rest' to increase the chance to actually hit the issue. It will reliably crash with address sanitizer enabled though. This fix addresses all rules where arbitrary characters are matched to ignore \0 in order to fall through to the rule that matches an arbitrary character as BadCharacter. Signed-off-by: Matthias Maennich <matthias@maennich.net>
* cmFortranLexer: regenerate with flex 2.6.4 (previously 2.6.1)Matthias Maennich2017-08-283-497/+950
| | | | | | | | | | | | | | | | | | | | | | | | flex 2.6.3 introduces symbol remapping through macro definitions. hence the change appears bigger than one would expect from a minor version upgrade. In addition some manual cleanup that had to be done previously is now obsolete. namely: - the size_t cast of _yybytes_len in yy_scan_bytes (i is now also defined int and not size_t anymore) - the redefinition of yyl within yy_find_action (yyl is now already defined as int) Line number preprocessor directives (#line) were previously generated into the c source file. This actually breaks debugging as debuggers have a hard time finding the original cmFortranLexer.in.l and mapping the current instruction to a meaningful location within that file. The prefix "cmFortran_yy" can already be set as %option directly. For convenience also provide a sed command for all the manual steps that need to be done after generating. Signed-off-by: Matthias Maennich <matthias@maennich.net>
* cmExprLexer: regenerate with flex 2.6.4 (previously 2.6.1)Matthias Maennich2017-08-283-298/+824
| | | | | | | | | | | | | | | | | | | | | | | | flex 2.6.3 introduces symbol remapping through macro definitions. hence the change appears bigger than one would expect from a minor version upgrade. In addition some manual cleanup that had to be done previously is now obsolete. namely: - the size_t cast of _yybytes_len in yy_scan_bytes (i is now also defined int and not size_t anymore) - the redefinition of yyl within yy_find_action (yyl is now already defined as int) Line number preprocessor directives (#line) were previously generated into the c source file. This actually breaks debugging as debuggers have a hard time finding the original cmExprLexer.in.l and mapping the current instruction to a meaningful location within that file. The prefix "cmExpr_yy" can already be set as %option directly. For convenience also provide a sed command for all the manual steps that need to be done after generating. Signed-off-by: Matthias Maennich <matthias@maennich.net>
* cmDependsJavaLexer: regenerate with flex 2.6.4 (previously 2.6.1)Matthias Maennich2017-08-283-395/+824
| | | | | | | | | | | | | | | | | | | | | | | | flex 2.6.3 introduces symbol remapping through macro definitions. hence the change appears bigger than one would expect from a minor version upgrade. In addition some manual cleanup that had to be done previously is now obsolete. namely: - the size_t cast of _yybytes_len in yy_scan_bytes (i is now also defined int and not size_t anymore) - the redefinition of yyl within yy_find_action (yyl is now already defined as int) Line number preprocessor directives (#line) were previously generated into the c source file. This actually breaks debugging as debuggers have a hard time finding the original cmDependsJavaLexer.in.l and mapping the current instruction to a meaningful location within that file. The prefix "cmDependsJava_yy" can already be set as %option directly. For convenience also provide a sed command for all the manual steps that need to be done after generating. Signed-off-by: Matthias Maennich <matthias@maennich.net>
* cmCommandArgumentLexer: regenerate with flex 2.6.4 (previously 2.6.1)Matthias Maennich2017-08-283-300/+823
| | | | | | | | | | | | | | | | | | | | | | | | flex 2.6.3 introduces symbol remapping through macro definitions. hence the change appears bigger than one would expect from a minor version upgrade. In addition some manual cleanup that had to be done previously is now obsolete. namely: - the size_t cast of _yybytes_len in yy_scan_bytes (i is now also defined int and not size_t anymore) - the redefinition of yyl within yy_find_action (yyl is now already defined as int) Line number preprocessor directives (#line) were previously generated into the c source file. This actually breaks debugging as debuggers have a hard time finding the original cmCommandArgumentLexer.in.l and mapping the current instruction to a meaningful location within that file. The prefix "cmCommandArgument_yy" can already be set as %option directly. For convenience also provide a sed command for all the manual steps that need to be done after generating. Signed-off-by: Matthias Maennich <matthias@maennich.net>
* cmListFileLexer: regenerate with flex 2.6.4 (previously 2.6.1)Matthias Maennich2017-08-252-276/+429
| | | | | | | | | | | | | | | | | | | | | | | | flex 2.6.3 introduces symbol remapping through macro definitions. hence the change appears bigger than one would expect from a minor version upgrade. In addition some manual cleanup that had to be done previously is now obsolete. namely: - the size_t cast of _yybytes_len in yy_scan_bytes (i is now also defined int and not size_t anymore) - the redefinition of yyl within yy_find_action (yyl is now already defined as int) Line number preprocessor directives (#line) were previously generated into the c source file. This actually breaks debugging as debuggers have a hard time finding the original cmListFileLexer.in.l and mapping the current instruction to a meaningful location within that file. The prefix "cmListFileLexer_yy" can already be set as %option directly. For convenience also provide a sed command for all the manual steps that need to be done after generating. Signed-off-by: Matthias Maennich <matthias@maennich.net>
* cmListFileLexer: fix 'bail out on seek-errors' also in original fileMatthias Maennich2017-08-251-2/+6
| | | | | | | | | The commit v3.9.0-rc1~502^2 (cmListFileLexer: bail out on seek-errors, 2017-02-19) for bug # 16607 was only applied to the generated file. Also apply the fix now to the original. Signed-off-by: Matthias Maennich <matthias@maennich.net>
* LexerParser: disable clang-tidy checksDaniel Pfeifer2017-04-281-0/+6
|
* LexerParser: move to custom directoryDaniel Pfeifer2017-04-2827-0/+30750