[Forensics-changes] [yara] 14/15: Re-generate re_lexer.c
Hilko Bengen
bengen at moszumanska.debian.org
Sat Jul 1 10:33:23 UTC 2017
This is an automated email from the git hooks/post-receive script.
bengen pushed a commit to annotated tag v3.6.2
in repository yara.
commit 49ba11cd254e3072951f336fb793d701ace3b82c
Author: Victor M. Alvarez <plusvic at gmail.com>
Date: Mon Jun 26 18:55:08 2017 +0200
Re-generate re_lexer.c
---
libyara/re_lexer.c | 118 ++++++++++++++++++++++++++++-------------------------
1 file changed, 63 insertions(+), 55 deletions(-)
diff --git a/libyara/re_lexer.c b/libyara/re_lexer.c
index ca1d8ce..b223c44 100644
--- a/libyara/re_lexer.c
+++ b/libyara/re_lexer.c
@@ -573,8 +573,9 @@ static uint8_t word_chars[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
-uint8_t escaped_char_value(
- char* text);
+int escaped_char_value(
+ char* text,
+ uint8_t* value);
int read_escaped_char(
yyscan_t yyscanner,
@@ -582,7 +583,7 @@ int read_escaped_char(
#define YY_NO_UNISTD_H 1
-#line 586 "re_lexer.c"
+#line 587 "re_lexer.c"
#define INITIAL 0
#define char_class 1
@@ -856,10 +857,10 @@ YY_DECL
}
{
-#line 99 "re_lexer.l"
+#line 100 "re_lexer.l"
-#line 863 "re_lexer.c"
+#line 864 "re_lexer.c"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
@@ -926,7 +927,7 @@ do_action: /* This label is used only to access EOF actions. */
case 1:
YY_RULE_SETUP
-#line 101 "re_lexer.l"
+#line 102 "re_lexer.l"
{
// Examples: {3,8} {0,5} {,5} {7,}
@@ -968,7 +969,7 @@ YY_RULE_SETUP
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 141 "re_lexer.l"
+#line 142 "re_lexer.l"
{
// Example: {10}
@@ -994,7 +995,7 @@ YY_RULE_SETUP
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 165 "re_lexer.l"
+#line 166 "re_lexer.l"
{
// Start of a negated character class. Example: [^abcd]
@@ -1006,7 +1007,7 @@ YY_RULE_SETUP
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 174 "re_lexer.l"
+#line 175 "re_lexer.l"
{
// Start of character negated class containing a ].
@@ -1021,7 +1022,7 @@ YY_RULE_SETUP
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 187 "re_lexer.l"
+#line 188 "re_lexer.l"
{
// Start of character class containing a ].
@@ -1036,7 +1037,7 @@ YY_RULE_SETUP
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 200 "re_lexer.l"
+#line 201 "re_lexer.l"
{
// Start of character class. Example: [abcd]
@@ -1049,7 +1050,7 @@ YY_RULE_SETUP
case 7:
/* rule 7 can match eol */
YY_RULE_SETUP
-#line 210 "re_lexer.l"
+#line 211 "re_lexer.l"
{
// Any non-special character is passed as a CHAR token to the scanner.
@@ -1060,63 +1061,63 @@ YY_RULE_SETUP
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 219 "re_lexer.l"
+#line 220 "re_lexer.l"
{
return _WORD_CHAR_;
}
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 224 "re_lexer.l"
+#line 225 "re_lexer.l"
{
return _NON_WORD_CHAR_;
}
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 229 "re_lexer.l"
+#line 230 "re_lexer.l"
{
return _SPACE_;
}
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 234 "re_lexer.l"
+#line 235 "re_lexer.l"
{
return _NON_SPACE_;
}
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 239 "re_lexer.l"
+#line 240 "re_lexer.l"
{
return _DIGIT_;
}
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 244 "re_lexer.l"
+#line 245 "re_lexer.l"
{
return _NON_DIGIT_;
}
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 249 "re_lexer.l"
+#line 250 "re_lexer.l"
{
return _WORD_BOUNDARY_;
}
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 253 "re_lexer.l"
+#line 254 "re_lexer.l"
{
return _NON_WORD_BOUNDARY_;
}
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 258 "re_lexer.l"
+#line 259 "re_lexer.l"
{
yyerror(yyscanner, lex_env, "backreferences are not allowed");
@@ -1125,7 +1126,7 @@ YY_RULE_SETUP
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 265 "re_lexer.l"
+#line 266 "re_lexer.l"
{
uint8_t c;
@@ -1144,7 +1145,7 @@ YY_RULE_SETUP
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 282 "re_lexer.l"
+#line 283 "re_lexer.l"
{
// End of character class.
@@ -1167,7 +1168,7 @@ YY_RULE_SETUP
case 19:
/* rule 19 can match eol */
YY_RULE_SETUP
-#line 303 "re_lexer.l"
+#line 304 "re_lexer.l"
{
// A range inside a character class.
@@ -1180,7 +1181,11 @@ YY_RULE_SETUP
if (start == '\\')
{
- start = escaped_char_value(yytext);
+ if (!escaped_char_value(yytext, &start))
+ {
+ yyerror(yyscanner, lex_env, "illegal escape sequence");
+ yyterminate();
+ }
if (yytext[1] == 'x')
end = yytext[5];
@@ -1211,7 +1216,7 @@ YY_RULE_SETUP
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 345 "re_lexer.l"
+#line 350 "re_lexer.l"
{
int i;
@@ -1222,7 +1227,7 @@ YY_RULE_SETUP
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 354 "re_lexer.l"
+#line 359 "re_lexer.l"
{
int i;
@@ -1233,7 +1238,7 @@ YY_RULE_SETUP
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 363 "re_lexer.l"
+#line 368 "re_lexer.l"
{
LEX_ENV->class_vector[' ' / 8] |= 1 << ' ' % 8;
@@ -1242,7 +1247,7 @@ YY_RULE_SETUP
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 370 "re_lexer.l"
+#line 375 "re_lexer.l"
{
int i;
@@ -1260,7 +1265,7 @@ YY_RULE_SETUP
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 386 "re_lexer.l"
+#line 391 "re_lexer.l"
{
char c;
@@ -1271,7 +1276,7 @@ YY_RULE_SETUP
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 395 "re_lexer.l"
+#line 400 "re_lexer.l"
{
int i;
@@ -1293,7 +1298,7 @@ YY_RULE_SETUP
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 415 "re_lexer.l"
+#line 420 "re_lexer.l"
{
uint8_t c;
@@ -1311,7 +1316,7 @@ YY_RULE_SETUP
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 431 "re_lexer.l"
+#line 436 "re_lexer.l"
{
if (yytext[0] >= 32 && yytext[0] < 127)
@@ -1329,7 +1334,7 @@ YY_RULE_SETUP
}
YY_BREAK
case YY_STATE_EOF(char_class):
-#line 448 "re_lexer.l"
+#line 453 "re_lexer.l"
{
// End of regexp reached while scanning a character class.
@@ -1340,7 +1345,7 @@ case YY_STATE_EOF(char_class):
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 457 "re_lexer.l"
+#line 462 "re_lexer.l"
{
if (yytext[0] >= 32 && yytext[0] < 127)
@@ -1355,7 +1360,7 @@ YY_RULE_SETUP
}
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 471 "re_lexer.l"
+#line 476 "re_lexer.l"
{
yyterminate();
@@ -1363,10 +1368,10 @@ case YY_STATE_EOF(INITIAL):
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 476 "re_lexer.l"
+#line 481 "re_lexer.l"
ECHO;
YY_BREAK
-#line 1370 "re_lexer.c"
+#line 1375 "re_lexer.c"
case YY_END_OF_BUFFER:
{
@@ -2515,52 +2520,56 @@ void re_yyfree (void * ptr , yyscan_t yyscanner)
#define YYTABLES_NAME "yytables"
-#line 476 "re_lexer.l"
+#line 481 "re_lexer.l"
-uint8_t escaped_char_value(
- char* text)
+int escaped_char_value(
+ char* text,
+ uint8_t* value)
{
+ unsigned int hex_value;
char hex[3];
- int result;
assert(text[0] == '\\');
switch(text[1])
{
case 'x':
+ if (!isxdigit(text[2]) || !isxdigit(text[3]))
+ return 0;
hex[0] = text[2];
hex[1] = text[3];
hex[2] = '\0';
- sscanf(hex, "%x", &result);
+ sscanf(hex, "%x", &hex_value);
+ *value = (uint8_t) hex_value;
break;
case 'n':
- result = '\n';
+ *value = '\n';
break;
case 't':
- result = '\t';
+ *value = '\t';
break;
case 'r':
- result = '\r';
+ *value = '\r';
break;
case 'f':
- result = '\f';
+ *value = '\f';
break;
case 'a':
- result = '\a';
+ *value = '\a';
break;
default:
- result = text[1];
+ *value = text[1];
}
- return result;
+ return 1;
}
@@ -2587,18 +2596,16 @@ int read_escaped_char(
{
text[2] = RE_YY_INPUT(yyscanner);
- if (!isxdigit(text[2]))
+ if (text[2] == EOF || text[2] == 0)
return 0;
text[3] = RE_YY_INPUT(yyscanner);
- if (!isxdigit(text[3]))
+ if (text[3] == EOF || text[3] == 0)
return 0;
}
- *escaped_char = escaped_char_value(text);
-
- return 1;
+ return escaped_char_value(text, escaped_char);
}
@@ -2645,6 +2652,7 @@ int yr_parse_re_string(
RE_LEX_ENVIRONMENT lex_env;
lex_env.last_error_code = ERROR_SUCCESS;
+ lex_env.last_error_message[0] = '\0';
yr_thread_storage_set_value(&yr_recovery_state_key, &recovery_state);
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/forensics/yara.git
More information about the forensics-changes
mailing list