... | ... |
@@ -3489,6 +3489,7 @@ static int load_oneyara(YR_RULE *rule, struct cl_engine *engine, unsigned int op |
3489 | 3489 |
static int cli_loadyara(FILE *fs, struct cl_engine *engine, unsigned int *signo, unsigned int options, struct cli_dbio *dbio, const char *dbname) |
3490 | 3490 |
{ |
3491 | 3491 |
YR_COMPILER compiler = {0}; |
3492 |
+ YR_NAMESPACE ns; |
|
3492 | 3493 |
YR_RULE *rule; |
3493 | 3494 |
unsigned int sigs = 0, rules = 0; |
3494 | 3495 |
int rc; |
... | ... |
@@ -3504,6 +3505,8 @@ static int cli_loadyara(FILE *fs, struct cl_engine *engine, unsigned int *signo, |
3504 | 3504 |
|
3505 | 3505 |
rc = yr_hash_table_create(10007, &compiler.rules_table); |
3506 | 3506 |
if (rc == ERROR_SUCCESS) |
3507 |
+ rc = yr_hash_table_create(10007, &compiler.objects_table); |
|
3508 |
+ if (rc == ERROR_SUCCESS) |
|
3507 | 3509 |
rc = yr_arena_create(65536, 0, &compiler.sz_arena); |
3508 | 3510 |
if (rc == ERROR_SUCCESS) |
3509 | 3511 |
rc = yr_arena_create(65536, 0, &compiler.code_arena); |
... | ... |
@@ -3511,7 +3514,9 @@ static int cli_loadyara(FILE *fs, struct cl_engine *engine, unsigned int *signo, |
3511 | 3511 |
rc = yr_arena_create(65536, 0, &compiler.strings_arena); |
3512 | 3512 |
if (rc != ERROR_SUCCESS) |
3513 | 3513 |
return CL_EMEM; |
3514 |
- |
|
3514 |
+ compiler.loop_for_of_mem_offset = -1; |
|
3515 |
+ ns.name = "default"; |
|
3516 |
+ compiler.current_namespace = &ns; |
|
3515 | 3517 |
|
3516 | 3518 |
rc = yr_lex_parse_rules_file(fs, &compiler); |
3517 | 3519 |
if (rc > 0) { /* rc = number of errors */ |
... | ... |
@@ -3519,6 +3524,7 @@ static int cli_loadyara(FILE *fs, struct cl_engine *engine, unsigned int *signo, |
3519 | 3519 |
cli_errmsg("cli_loadyara: failed to parse rules file %s, error count %i\n", dbname, rc); |
3520 | 3520 |
#ifdef YARA_FINISHED |
3521 | 3521 |
yr_hash_table_destroy(compiler.rules_table, NULL); |
3522 |
+ yr_hash_table_destroy(compiler.objects_table, NULL); |
|
3522 | 3523 |
yr_arena_destroy(compiler.sz_arena); |
3523 | 3524 |
yr_arena_destroy(compiler.code_arena); |
3524 | 3525 |
yr_arena_destroy(compiler.strings_arena); |
... | ... |
@@ -3544,6 +3550,7 @@ static int cli_loadyara(FILE *fs, struct cl_engine *engine, unsigned int *signo, |
3544 | 3544 |
} |
3545 | 3545 |
|
3546 | 3546 |
yr_hash_table_destroy(compiler.rules_table, NULL); |
3547 |
+ yr_hash_table_destroy(compiler.objects_table, NULL); |
|
3547 | 3548 |
yr_arena_destroy(compiler.sz_arena); |
3548 | 3549 |
yr_arena_destroy(compiler.code_arena); |
3549 | 3550 |
yr_arena_destroy(compiler.strings_arena); |
... | ... |
@@ -166,6 +166,13 @@ typedef struct _YR_OBJECT |
166 | 166 |
|
167 | 167 |
} YR_OBJECT; |
168 | 168 |
|
169 |
+typedef struct _YR_OBJECT_ARRAY |
|
170 |
+{ |
|
171 |
+ OBJECT_COMMON_FIELDS |
|
172 |
+ struct _YR_ARRAY_ITEMS* items; |
|
173 |
+ |
|
174 |
+} YR_OBJECT_ARRAY; |
|
175 |
+ |
|
169 | 176 |
typedef struct _YR_OBJECT_FUNCTION |
170 | 177 |
{ |
171 | 178 |
OBJECT_COMMON_FIELDS |
... | ... |
@@ -179,6 +186,13 @@ typedef struct _YR_OBJECT_FUNCTION |
179 | 179 |
|
180 | 180 |
} YR_OBJECT_FUNCTION; |
181 | 181 |
|
182 |
+typedef struct _YR_ARRAY_ITEMS |
|
183 |
+{ |
|
184 |
+ int count; |
|
185 |
+ YR_OBJECT* objects[1]; |
|
186 |
+ |
|
187 |
+} YR_ARRAY_ITEMS; |
|
188 |
+ |
|
182 | 189 |
/* From libyara/include/yara/sizedstr.h */ |
183 | 190 |
#define SIZED_STRING_FLAGS_NO_CASE 1 |
184 | 191 |
#define SIZED_STRING_FLAGS_DOT_ALL 2 |
... | ... |
@@ -381,6 +395,12 @@ typedef struct _YR_EXTERNAL_VARIABLE |
381 | 381 |
|
382 | 382 |
} YR_EXTERNAL_VARIABLE; |
383 | 383 |
|
384 |
+typedef struct _YR_NAMESPACE |
|
385 |
+{ |
|
386 |
+ |
|
387 |
+ DECLARE_REFERENCE(char*, name); |
|
388 |
+ |
|
389 |
+} YR_NAMESPACE; |
|
384 | 390 |
|
385 | 391 |
/* From libyara/include/yara/exec.h */ |
386 | 392 |
typedef struct RE RE; |
... | ... |
@@ -496,7 +516,8 @@ typedef struct _yc_compiler { |
496 | 496 |
YR_ARENA* strings_arena; |
497 | 497 |
YR_ARENA* code_arena; |
498 | 498 |
YR_HASH_TABLE* rules_table; |
499 |
- |
|
499 |
+ YR_HASH_TABLE* objects_table; |
|
500 |
+ YR_NAMESPACE* current_namespace; |
|
500 | 501 |
yc_string* current_rule_strings; |
501 | 502 |
uint32_t current_rule_flags; |
502 | 503 |
|
... | ... |
@@ -658,14 +658,14 @@ static const yytype_uint16 yyrline[] = |
658 | 658 |
270, 300, 304, 332, 337, 338, 343, 344, 350, 353, |
659 | 659 |
373, 390, 429, 430, 435, 451, 464, 477, 494, 495, |
660 | 660 |
500, 514, 513, 530, 547, 548, 553, 554, 555, 556, |
661 |
- 561, 658, 709, 734, 776, 779, 801, 834, 881, 899, |
|
662 |
- 908, 917, 932, 946, 959, 974, 988, 1022, 987, 1133, |
|
663 |
- 1132, 1208, 1214, 1220, 1226, 1234, 1243, 1252, 1261, 1270, |
|
664 |
- 1297, 1324, 1351, 1355, 1363, 1364, 1369, 1391, 1403, 1419, |
|
665 |
- 1418, 1424, 1436, 1437, 1442, 1447, 1456, 1457, 1464, 1475, |
|
666 |
- 1479, 1488, 1503, 1514, 1525, 1536, 1547, 1558, 1569, 1578, |
|
667 |
- 1603, 1616, 1629, 1649, 1684, 1693, 1702, 1711, 1720, 1729, |
|
668 |
- 1738, 1747, 1756, 1764, 1773, 1782 |
|
661 |
+ 561, 646, 695, 718, 758, 761, 783, 816, 863, 881, |
|
662 |
+ 890, 899, 914, 928, 941, 956, 970, 1004, 969, 1115, |
|
663 |
+ 1114, 1190, 1196, 1202, 1208, 1216, 1225, 1234, 1243, 1252, |
|
664 |
+ 1279, 1306, 1333, 1337, 1345, 1346, 1351, 1373, 1385, 1401, |
|
665 |
+ 1400, 1406, 1418, 1419, 1424, 1429, 1438, 1439, 1446, 1457, |
|
666 |
+ 1461, 1470, 1485, 1496, 1507, 1518, 1529, 1540, 1551, 1560, |
|
667 |
+ 1585, 1598, 1611, 1631, 1666, 1675, 1684, 1693, 1702, 1711, |
|
668 |
+ 1720, 1729, 1738, 1746, 1755, 1764 |
|
669 | 669 |
}; |
670 | 670 |
#endif |
671 | 671 |
|
... | ... |
@@ -2338,28 +2338,23 @@ yyreduce: |
2338 | 2338 |
{ |
2339 | 2339 |
// Search for identifier within the global namespace, where the |
2340 | 2340 |
// externals variables reside. |
2341 |
-#if REAL_YARA //externals/objects/modules not supported |
|
2342 | 2341 |
object = (YR_OBJECT*) yr_hash_table_lookup( |
2343 | 2342 |
compiler->objects_table, |
2344 | 2343 |
(yyvsp[(1) - (1)].c_string), |
2345 | 2344 |
NULL); |
2346 |
-#endif |
|
2347 | 2345 |
if (object == NULL) |
2348 | 2346 |
{ |
2349 | 2347 |
// If not found, search within the current namespace. |
2350 | 2348 |
|
2351 |
-#if REAL_YARA //externals/objects/modules not supported |
|
2352 | 2349 |
ns = compiler->current_namespace->name; |
2353 | 2350 |
object = (YR_OBJECT*) yr_hash_table_lookup( |
2354 | 2351 |
compiler->objects_table, |
2355 | 2352 |
(yyvsp[(1) - (1)].c_string), |
2356 | 2353 |
ns); |
2357 |
-#endif |
|
2358 | 2354 |
} |
2359 | 2355 |
|
2360 | 2356 |
if (object != NULL) |
2361 | 2357 |
{ |
2362 |
-#if REAL_YARA //externals/objects/modules not supported |
|
2363 | 2358 |
compiler->last_result = yr_arena_write_string( |
2364 | 2359 |
compiler->sz_arena, |
2365 | 2360 |
(yyvsp[(1) - (1)].c_string), |
... | ... |
@@ -2371,21 +2366,15 @@ yyreduce: |
2371 | 2371 |
OP_OBJ_LOAD, |
2372 | 2372 |
PTR_TO_UINT64(id), |
2373 | 2373 |
NULL); |
2374 |
-#endif |
|
2375 | 2374 |
|
2376 | 2375 |
(yyval.object) = object; |
2377 | 2376 |
} |
2378 | 2377 |
else |
2379 | 2378 |
{ |
2380 |
- //#if REAL_YARA |
|
2381 | 2379 |
rule = (YR_RULE*) yr_hash_table_lookup( |
2382 | 2380 |
compiler->rules_table, |
2383 | 2381 |
(yyvsp[(1) - (1)].c_string), |
2384 |
-#if REAL_YARA |
|
2385 | 2382 |
compiler->current_namespace->name); |
2386 |
-#else |
|
2387 |
- NULL); |
|
2388 |
-#endif |
|
2389 | 2383 |
if (rule != NULL) |
2390 | 2384 |
{ |
2391 | 2385 |
compiler->last_result = yr_parser_emit_with_arg_reloc( |
... | ... |
@@ -2399,7 +2388,6 @@ yyreduce: |
2399 | 2399 |
yr_compiler_set_error_extra_info(compiler, (yyvsp[(1) - (1)].c_string)); |
2400 | 2400 |
compiler->last_result = ERROR_UNDEFINED_IDENTIFIER; |
2401 | 2401 |
} |
2402 |
- //#endif |
|
2403 | 2402 |
|
2404 | 2403 |
(yyval.object) = (YR_OBJECT*) -2; |
2405 | 2404 |
} |
... | ... |
@@ -2414,9 +2402,8 @@ yyreduce: |
2414 | 2414 |
case 41: |
2415 | 2415 |
|
2416 | 2416 |
/* Line 1806 of yacc.c */ |
2417 |
-#line 659 "yara_grammar.y" |
|
2417 |
+#line 647 "yara_grammar.y" |
|
2418 | 2418 |
{ |
2419 |
-#ifdef REAL_YARA //externals/objects/modules not supported |
|
2420 | 2419 |
YR_OBJECT* object = (yyvsp[(1) - (3)].object); |
2421 | 2420 |
YR_OBJECT* field = NULL; |
2422 | 2421 |
|
... | ... |
@@ -2463,16 +2450,14 @@ yyreduce: |
2463 | 2463 |
yr_free((yyvsp[(3) - (3)].c_string)); |
2464 | 2464 |
|
2465 | 2465 |
ERROR_IF(compiler->last_result != ERROR_SUCCESS); |
2466 |
-#endif |
|
2467 | 2466 |
} |
2468 | 2467 |
break; |
2469 | 2468 |
|
2470 | 2469 |
case 42: |
2471 | 2470 |
|
2472 | 2471 |
/* Line 1806 of yacc.c */ |
2473 |
-#line 710 "yara_grammar.y" |
|
2472 |
+#line 696 "yara_grammar.y" |
|
2474 | 2473 |
{ |
2475 |
-#ifdef REAL_YARA //externals/objects/modules not supported |
|
2476 | 2474 |
if ((yyvsp[(1) - (4)].object) != NULL && (yyvsp[(1) - (4)].object)->type == OBJECT_TYPE_ARRAY) |
2477 | 2475 |
{ |
2478 | 2476 |
compiler->last_result = yr_parser_emit( |
... | ... |
@@ -2480,7 +2465,7 @@ yyreduce: |
2480 | 2480 |
OP_INDEX_ARRAY, |
2481 | 2481 |
NULL); |
2482 | 2482 |
|
2483 |
-X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->items->objects[0]; |
|
2483 |
+ (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->items->objects[0]; |
|
2484 | 2484 |
} |
2485 | 2485 |
else |
2486 | 2486 |
{ |
... | ... |
@@ -2492,16 +2477,14 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
2492 | 2492 |
} |
2493 | 2493 |
|
2494 | 2494 |
ERROR_IF(compiler->last_result != ERROR_SUCCESS); |
2495 |
-#endif |
|
2496 | 2495 |
} |
2497 | 2496 |
break; |
2498 | 2497 |
|
2499 | 2498 |
case 43: |
2500 | 2499 |
|
2501 | 2500 |
/* Line 1806 of yacc.c */ |
2502 |
-#line 735 "yara_grammar.y" |
|
2501 |
+#line 719 "yara_grammar.y" |
|
2503 | 2502 |
{ |
2504 |
-#ifdef REAL_YARA //externals/objects/modules not supported |
|
2505 | 2503 |
int args_count; |
2506 | 2504 |
|
2507 | 2505 |
if ((yyvsp[(1) - (4)].object) != NULL && (yyvsp[(1) - (4)].object)->type == OBJECT_TYPE_FUNCTION) |
... | ... |
@@ -2534,14 +2517,13 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
2534 | 2534 |
yr_free((yyvsp[(3) - (4)].c_string)); |
2535 | 2535 |
|
2536 | 2536 |
ERROR_IF(compiler->last_result != ERROR_SUCCESS); |
2537 |
-#endif |
|
2538 | 2537 |
} |
2539 | 2538 |
break; |
2540 | 2539 |
|
2541 | 2540 |
case 44: |
2542 | 2541 |
|
2543 | 2542 |
/* Line 1806 of yacc.c */ |
2544 |
-#line 776 "yara_grammar.y" |
|
2543 |
+#line 758 "yara_grammar.y" |
|
2545 | 2544 |
{ |
2546 | 2545 |
(yyval.c_string) = yr_strdup(""); |
2547 | 2546 |
} |
... | ... |
@@ -2550,7 +2532,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
2550 | 2550 |
case 45: |
2551 | 2551 |
|
2552 | 2552 |
/* Line 1806 of yacc.c */ |
2553 |
-#line 780 "yara_grammar.y" |
|
2553 |
+#line 762 "yara_grammar.y" |
|
2554 | 2554 |
{ |
2555 | 2555 |
(yyval.c_string) = yr_malloc(MAX_FUNCTION_ARGS + 1); |
2556 | 2556 |
|
... | ... |
@@ -2577,7 +2559,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
2577 | 2577 |
case 46: |
2578 | 2578 |
|
2579 | 2579 |
/* Line 1806 of yacc.c */ |
2580 |
-#line 802 "yara_grammar.y" |
|
2580 |
+#line 784 "yara_grammar.y" |
|
2581 | 2581 |
{ |
2582 | 2582 |
if (strlen((yyvsp[(1) - (3)].c_string)) == MAX_FUNCTION_ARGS) |
2583 | 2583 |
{ |
... | ... |
@@ -2611,7 +2593,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
2611 | 2611 |
case 47: |
2612 | 2612 |
|
2613 | 2613 |
/* Line 1806 of yacc.c */ |
2614 |
-#line 835 "yara_grammar.y" |
|
2614 |
+#line 817 "yara_grammar.y" |
|
2615 | 2615 |
{ |
2616 | 2616 |
#ifdef REAL_YARA |
2617 | 2617 |
SIZED_STRING* sized_string = (yyvsp[(1) - (1)].sized_string); |
... | ... |
@@ -2659,7 +2641,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
2659 | 2659 |
case 48: |
2660 | 2660 |
|
2661 | 2661 |
/* Line 1806 of yacc.c */ |
2662 |
-#line 882 "yara_grammar.y" |
|
2662 |
+#line 864 "yara_grammar.y" |
|
2663 | 2663 |
{ |
2664 | 2664 |
if ((yyvsp[(1) - (1)].expression_type) == EXPRESSION_TYPE_STRING) |
2665 | 2665 |
{ |
... | ... |
@@ -2679,7 +2661,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
2679 | 2679 |
case 49: |
2680 | 2680 |
|
2681 | 2681 |
/* Line 1806 of yacc.c */ |
2682 |
-#line 900 "yara_grammar.y" |
|
2682 |
+#line 882 "yara_grammar.y" |
|
2683 | 2683 |
{ |
2684 | 2684 |
compiler->last_result = yr_parser_emit_with_arg( |
2685 | 2685 |
yyscanner, OP_PUSH, 1, NULL); |
... | ... |
@@ -2693,7 +2675,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
2693 | 2693 |
case 50: |
2694 | 2694 |
|
2695 | 2695 |
/* Line 1806 of yacc.c */ |
2696 |
-#line 909 "yara_grammar.y" |
|
2696 |
+#line 891 "yara_grammar.y" |
|
2697 | 2697 |
{ |
2698 | 2698 |
compiler->last_result = yr_parser_emit_with_arg( |
2699 | 2699 |
yyscanner, OP_PUSH, 0, NULL); |
... | ... |
@@ -2707,7 +2689,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
2707 | 2707 |
case 51: |
2708 | 2708 |
|
2709 | 2709 |
/* Line 1806 of yacc.c */ |
2710 |
-#line 918 "yara_grammar.y" |
|
2710 |
+#line 900 "yara_grammar.y" |
|
2711 | 2711 |
{ |
2712 | 2712 |
CHECK_TYPE((yyvsp[(1) - (3)].expression_type), EXPRESSION_TYPE_STRING, "matches"); |
2713 | 2713 |
CHECK_TYPE((yyvsp[(3) - (3)].expression_type), EXPRESSION_TYPE_REGEXP, "matches"); |
... | ... |
@@ -2727,7 +2709,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
2727 | 2727 |
case 52: |
2728 | 2728 |
|
2729 | 2729 |
/* Line 1806 of yacc.c */ |
2730 |
-#line 933 "yara_grammar.y" |
|
2730 |
+#line 915 "yara_grammar.y" |
|
2731 | 2731 |
{ |
2732 | 2732 |
CHECK_TYPE((yyvsp[(1) - (3)].expression_type), EXPRESSION_TYPE_STRING, "contains"); |
2733 | 2733 |
CHECK_TYPE((yyvsp[(3) - (3)].expression_type), EXPRESSION_TYPE_STRING, "contains"); |
... | ... |
@@ -2746,7 +2728,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
2746 | 2746 |
case 53: |
2747 | 2747 |
|
2748 | 2748 |
/* Line 1806 of yacc.c */ |
2749 |
-#line 947 "yara_grammar.y" |
|
2749 |
+#line 929 "yara_grammar.y" |
|
2750 | 2750 |
{ |
2751 | 2751 |
int result = yr_parser_reduce_string_identifier( |
2752 | 2752 |
yyscanner, |
... | ... |
@@ -2764,7 +2746,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
2764 | 2764 |
case 54: |
2765 | 2765 |
|
2766 | 2766 |
/* Line 1806 of yacc.c */ |
2767 |
-#line 960 "yara_grammar.y" |
|
2767 |
+#line 942 "yara_grammar.y" |
|
2768 | 2768 |
{ |
2769 | 2769 |
CHECK_TYPE((yyvsp[(3) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "at"); |
2770 | 2770 |
|
... | ... |
@@ -2784,7 +2766,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
2784 | 2784 |
case 55: |
2785 | 2785 |
|
2786 | 2786 |
/* Line 1806 of yacc.c */ |
2787 |
-#line 975 "yara_grammar.y" |
|
2787 |
+#line 957 "yara_grammar.y" |
|
2788 | 2788 |
{ |
2789 | 2789 |
compiler->last_result = yr_parser_reduce_string_identifier( |
2790 | 2790 |
yyscanner, |
... | ... |
@@ -2802,7 +2784,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
2802 | 2802 |
case 56: |
2803 | 2803 |
|
2804 | 2804 |
/* Line 1806 of yacc.c */ |
2805 |
-#line 988 "yara_grammar.y" |
|
2805 |
+#line 970 "yara_grammar.y" |
|
2806 | 2806 |
{ |
2807 | 2807 |
int var_index; |
2808 | 2808 |
|
... | ... |
@@ -2841,7 +2823,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
2841 | 2841 |
case 57: |
2842 | 2842 |
|
2843 | 2843 |
/* Line 1806 of yacc.c */ |
2844 |
-#line 1022 "yara_grammar.y" |
|
2844 |
+#line 1004 "yara_grammar.y" |
|
2845 | 2845 |
{ |
2846 | 2846 |
int mem_offset = LOOP_LOCAL_VARS * compiler->loop_depth; |
2847 | 2847 |
|
... | ... |
@@ -2881,7 +2863,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
2881 | 2881 |
case 58: |
2882 | 2882 |
|
2883 | 2883 |
/* Line 1806 of yacc.c */ |
2884 |
-#line 1057 "yara_grammar.y" |
|
2884 |
+#line 1039 "yara_grammar.y" |
|
2885 | 2885 |
{ |
2886 | 2886 |
int mem_offset; |
2887 | 2887 |
|
... | ... |
@@ -2962,7 +2944,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
2962 | 2962 |
case 59: |
2963 | 2963 |
|
2964 | 2964 |
/* Line 1806 of yacc.c */ |
2965 |
-#line 1133 "yara_grammar.y" |
|
2965 |
+#line 1115 "yara_grammar.y" |
|
2966 | 2966 |
{ |
2967 | 2967 |
int mem_offset = LOOP_LOCAL_VARS * compiler->loop_depth; |
2968 | 2968 |
int8_t* addr; |
... | ... |
@@ -2997,7 +2979,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
2997 | 2997 |
case 60: |
2998 | 2998 |
|
2999 | 2999 |
/* Line 1806 of yacc.c */ |
3000 |
-#line 1163 "yara_grammar.y" |
|
3000 |
+#line 1145 "yara_grammar.y" |
|
3001 | 3001 |
{ |
3002 | 3002 |
int mem_offset; |
3003 | 3003 |
|
... | ... |
@@ -3048,7 +3030,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3048 | 3048 |
case 61: |
3049 | 3049 |
|
3050 | 3050 |
/* Line 1806 of yacc.c */ |
3051 |
-#line 1209 "yara_grammar.y" |
|
3051 |
+#line 1191 "yara_grammar.y" |
|
3052 | 3052 |
{ |
3053 | 3053 |
yr_parser_emit(yyscanner, OP_OF, NULL); |
3054 | 3054 |
|
... | ... |
@@ -3059,7 +3041,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3059 | 3059 |
case 62: |
3060 | 3060 |
|
3061 | 3061 |
/* Line 1806 of yacc.c */ |
3062 |
-#line 1215 "yara_grammar.y" |
|
3062 |
+#line 1197 "yara_grammar.y" |
|
3063 | 3063 |
{ |
3064 | 3064 |
yr_parser_emit(yyscanner, OP_NOT, NULL); |
3065 | 3065 |
|
... | ... |
@@ -3070,7 +3052,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3070 | 3070 |
case 63: |
3071 | 3071 |
|
3072 | 3072 |
/* Line 1806 of yacc.c */ |
3073 |
-#line 1221 "yara_grammar.y" |
|
3073 |
+#line 1203 "yara_grammar.y" |
|
3074 | 3074 |
{ |
3075 | 3075 |
yr_parser_emit(yyscanner, OP_AND, NULL); |
3076 | 3076 |
|
... | ... |
@@ -3081,7 +3063,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3081 | 3081 |
case 64: |
3082 | 3082 |
|
3083 | 3083 |
/* Line 1806 of yacc.c */ |
3084 |
-#line 1227 "yara_grammar.y" |
|
3084 |
+#line 1209 "yara_grammar.y" |
|
3085 | 3085 |
{ |
3086 | 3086 |
CHECK_TYPE((yyvsp[(1) - (3)].expression_type), EXPRESSION_TYPE_BOOLEAN, "or"); |
3087 | 3087 |
|
... | ... |
@@ -3094,7 +3076,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3094 | 3094 |
case 65: |
3095 | 3095 |
|
3096 | 3096 |
/* Line 1806 of yacc.c */ |
3097 |
-#line 1235 "yara_grammar.y" |
|
3097 |
+#line 1217 "yara_grammar.y" |
|
3098 | 3098 |
{ |
3099 | 3099 |
CHECK_TYPE((yyvsp[(1) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "<"); |
3100 | 3100 |
CHECK_TYPE((yyvsp[(3) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "<"); |
... | ... |
@@ -3108,7 +3090,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3108 | 3108 |
case 66: |
3109 | 3109 |
|
3110 | 3110 |
/* Line 1806 of yacc.c */ |
3111 |
-#line 1244 "yara_grammar.y" |
|
3111 |
+#line 1226 "yara_grammar.y" |
|
3112 | 3112 |
{ |
3113 | 3113 |
CHECK_TYPE((yyvsp[(1) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, ">"); |
3114 | 3114 |
CHECK_TYPE((yyvsp[(3) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, ">"); |
... | ... |
@@ -3122,7 +3104,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3122 | 3122 |
case 67: |
3123 | 3123 |
|
3124 | 3124 |
/* Line 1806 of yacc.c */ |
3125 |
-#line 1253 "yara_grammar.y" |
|
3125 |
+#line 1235 "yara_grammar.y" |
|
3126 | 3126 |
{ |
3127 | 3127 |
CHECK_TYPE((yyvsp[(1) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "<="); |
3128 | 3128 |
CHECK_TYPE((yyvsp[(3) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "<="); |
... | ... |
@@ -3136,7 +3118,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3136 | 3136 |
case 68: |
3137 | 3137 |
|
3138 | 3138 |
/* Line 1806 of yacc.c */ |
3139 |
-#line 1262 "yara_grammar.y" |
|
3139 |
+#line 1244 "yara_grammar.y" |
|
3140 | 3140 |
{ |
3141 | 3141 |
CHECK_TYPE((yyvsp[(1) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, ">="); |
3142 | 3142 |
CHECK_TYPE((yyvsp[(3) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, ">="); |
... | ... |
@@ -3150,7 +3132,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3150 | 3150 |
case 69: |
3151 | 3151 |
|
3152 | 3152 |
/* Line 1806 of yacc.c */ |
3153 |
-#line 1271 "yara_grammar.y" |
|
3153 |
+#line 1253 "yara_grammar.y" |
|
3154 | 3154 |
{ |
3155 | 3155 |
if ((yyvsp[(1) - (3)].expression_type) != (yyvsp[(3) - (3)].expression_type)) |
3156 | 3156 |
{ |
... | ... |
@@ -3182,7 +3164,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3182 | 3182 |
case 70: |
3183 | 3183 |
|
3184 | 3184 |
/* Line 1806 of yacc.c */ |
3185 |
-#line 1298 "yara_grammar.y" |
|
3185 |
+#line 1280 "yara_grammar.y" |
|
3186 | 3186 |
{ |
3187 | 3187 |
if ((yyvsp[(1) - (3)].expression_type) != (yyvsp[(3) - (3)].expression_type)) |
3188 | 3188 |
{ |
... | ... |
@@ -3214,7 +3196,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3214 | 3214 |
case 71: |
3215 | 3215 |
|
3216 | 3216 |
/* Line 1806 of yacc.c */ |
3217 |
-#line 1325 "yara_grammar.y" |
|
3217 |
+#line 1307 "yara_grammar.y" |
|
3218 | 3218 |
{ |
3219 | 3219 |
if ((yyvsp[(1) - (3)].expression_type) != (yyvsp[(3) - (3)].expression_type)) |
3220 | 3220 |
{ |
... | ... |
@@ -3246,7 +3228,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3246 | 3246 |
case 72: |
3247 | 3247 |
|
3248 | 3248 |
/* Line 1806 of yacc.c */ |
3249 |
-#line 1352 "yara_grammar.y" |
|
3249 |
+#line 1334 "yara_grammar.y" |
|
3250 | 3250 |
{ |
3251 | 3251 |
(yyval.expression_type) = (yyvsp[(1) - (1)].expression_type); |
3252 | 3252 |
} |
... | ... |
@@ -3255,7 +3237,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3255 | 3255 |
case 73: |
3256 | 3256 |
|
3257 | 3257 |
/* Line 1806 of yacc.c */ |
3258 |
-#line 1356 "yara_grammar.y" |
|
3258 |
+#line 1338 "yara_grammar.y" |
|
3259 | 3259 |
{ |
3260 | 3260 |
(yyval.expression_type) = (yyvsp[(2) - (3)].expression_type); |
3261 | 3261 |
} |
... | ... |
@@ -3264,21 +3246,21 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3264 | 3264 |
case 74: |
3265 | 3265 |
|
3266 | 3266 |
/* Line 1806 of yacc.c */ |
3267 |
-#line 1363 "yara_grammar.y" |
|
3267 |
+#line 1345 "yara_grammar.y" |
|
3268 | 3268 |
{ (yyval.integer) = INTEGER_SET_ENUMERATION; } |
3269 | 3269 |
break; |
3270 | 3270 |
|
3271 | 3271 |
case 75: |
3272 | 3272 |
|
3273 | 3273 |
/* Line 1806 of yacc.c */ |
3274 |
-#line 1364 "yara_grammar.y" |
|
3274 |
+#line 1346 "yara_grammar.y" |
|
3275 | 3275 |
{ (yyval.integer) = INTEGER_SET_RANGE; } |
3276 | 3276 |
break; |
3277 | 3277 |
|
3278 | 3278 |
case 76: |
3279 | 3279 |
|
3280 | 3280 |
/* Line 1806 of yacc.c */ |
3281 |
-#line 1370 "yara_grammar.y" |
|
3281 |
+#line 1352 "yara_grammar.y" |
|
3282 | 3282 |
{ |
3283 | 3283 |
if ((yyvsp[(2) - (6)].expression_type) != EXPRESSION_TYPE_INTEGER) |
3284 | 3284 |
{ |
... | ... |
@@ -3301,7 +3283,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3301 | 3301 |
case 77: |
3302 | 3302 |
|
3303 | 3303 |
/* Line 1806 of yacc.c */ |
3304 |
-#line 1392 "yara_grammar.y" |
|
3304 |
+#line 1374 "yara_grammar.y" |
|
3305 | 3305 |
{ |
3306 | 3306 |
if ((yyvsp[(1) - (1)].expression_type) != EXPRESSION_TYPE_INTEGER) |
3307 | 3307 |
{ |
... | ... |
@@ -3318,7 +3300,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3318 | 3318 |
case 78: |
3319 | 3319 |
|
3320 | 3320 |
/* Line 1806 of yacc.c */ |
3321 |
-#line 1404 "yara_grammar.y" |
|
3321 |
+#line 1386 "yara_grammar.y" |
|
3322 | 3322 |
{ |
3323 | 3323 |
if ((yyvsp[(3) - (3)].expression_type) != EXPRESSION_TYPE_INTEGER) |
3324 | 3324 |
{ |
... | ... |
@@ -3334,7 +3316,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3334 | 3334 |
case 79: |
3335 | 3335 |
|
3336 | 3336 |
/* Line 1806 of yacc.c */ |
3337 |
-#line 1419 "yara_grammar.y" |
|
3337 |
+#line 1401 "yara_grammar.y" |
|
3338 | 3338 |
{ |
3339 | 3339 |
// Push end-of-list marker |
3340 | 3340 |
yr_parser_emit_with_arg(yyscanner, OP_PUSH, UNDEFINED, NULL); |
... | ... |
@@ -3344,7 +3326,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3344 | 3344 |
case 81: |
3345 | 3345 |
|
3346 | 3346 |
/* Line 1806 of yacc.c */ |
3347 |
-#line 1425 "yara_grammar.y" |
|
3347 |
+#line 1407 "yara_grammar.y" |
|
3348 | 3348 |
{ |
3349 | 3349 |
yr_parser_emit_with_arg(yyscanner, OP_PUSH, UNDEFINED, NULL); |
3350 | 3350 |
yr_parser_emit_pushes_for_strings(yyscanner, "$*"); |
... | ... |
@@ -3357,7 +3339,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3357 | 3357 |
case 84: |
3358 | 3358 |
|
3359 | 3359 |
/* Line 1806 of yacc.c */ |
3360 |
-#line 1443 "yara_grammar.y" |
|
3360 |
+#line 1425 "yara_grammar.y" |
|
3361 | 3361 |
{ |
3362 | 3362 |
yr_parser_emit_pushes_for_strings(yyscanner, (yyvsp[(1) - (1)].c_string)); |
3363 | 3363 |
yr_free((yyvsp[(1) - (1)].c_string)); |
... | ... |
@@ -3367,7 +3349,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3367 | 3367 |
case 85: |
3368 | 3368 |
|
3369 | 3369 |
/* Line 1806 of yacc.c */ |
3370 |
-#line 1448 "yara_grammar.y" |
|
3370 |
+#line 1430 "yara_grammar.y" |
|
3371 | 3371 |
{ |
3372 | 3372 |
yr_parser_emit_pushes_for_strings(yyscanner, (yyvsp[(1) - (1)].c_string)); |
3373 | 3373 |
yr_free((yyvsp[(1) - (1)].c_string)); |
... | ... |
@@ -3377,7 +3359,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3377 | 3377 |
case 87: |
3378 | 3378 |
|
3379 | 3379 |
/* Line 1806 of yacc.c */ |
3380 |
-#line 1458 "yara_grammar.y" |
|
3380 |
+#line 1440 "yara_grammar.y" |
|
3381 | 3381 |
{ |
3382 | 3382 |
yr_parser_emit_with_arg(yyscanner, OP_PUSH, UNDEFINED, NULL); |
3383 | 3383 |
#ifdef YARA_PROTO |
... | ... |
@@ -3389,7 +3371,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3389 | 3389 |
case 88: |
3390 | 3390 |
|
3391 | 3391 |
/* Line 1806 of yacc.c */ |
3392 |
-#line 1465 "yara_grammar.y" |
|
3392 |
+#line 1447 "yara_grammar.y" |
|
3393 | 3393 |
{ |
3394 | 3394 |
yr_parser_emit_with_arg(yyscanner, OP_PUSH, 1, NULL); |
3395 | 3395 |
#ifdef YARA_PROTO |
... | ... |
@@ -3401,7 +3383,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3401 | 3401 |
case 89: |
3402 | 3402 |
|
3403 | 3403 |
/* Line 1806 of yacc.c */ |
3404 |
-#line 1476 "yara_grammar.y" |
|
3404 |
+#line 1458 "yara_grammar.y" |
|
3405 | 3405 |
{ |
3406 | 3406 |
(yyval.expression_type) = (yyvsp[(2) - (3)].expression_type); |
3407 | 3407 |
} |
... | ... |
@@ -3410,7 +3392,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3410 | 3410 |
case 90: |
3411 | 3411 |
|
3412 | 3412 |
/* Line 1806 of yacc.c */ |
3413 |
-#line 1480 "yara_grammar.y" |
|
3413 |
+#line 1462 "yara_grammar.y" |
|
3414 | 3414 |
{ |
3415 | 3415 |
compiler->last_result = yr_parser_emit( |
3416 | 3416 |
yyscanner, OP_FILESIZE, NULL); |
... | ... |
@@ -3424,7 +3406,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3424 | 3424 |
case 91: |
3425 | 3425 |
|
3426 | 3426 |
/* Line 1806 of yacc.c */ |
3427 |
-#line 1489 "yara_grammar.y" |
|
3427 |
+#line 1471 "yara_grammar.y" |
|
3428 | 3428 |
{ |
3429 | 3429 |
#ifndef YARA_PROTO |
3430 | 3430 |
yywarning(yyscanner, |
... | ... |
@@ -3444,7 +3426,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3444 | 3444 |
case 92: |
3445 | 3445 |
|
3446 | 3446 |
/* Line 1806 of yacc.c */ |
3447 |
-#line 1504 "yara_grammar.y" |
|
3447 |
+#line 1486 "yara_grammar.y" |
|
3448 | 3448 |
{ |
3449 | 3449 |
CHECK_TYPE((yyvsp[(3) - (4)].expression_type), EXPRESSION_TYPE_INTEGER, "int8"); |
3450 | 3450 |
|
... | ... |
@@ -3460,7 +3442,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3460 | 3460 |
case 93: |
3461 | 3461 |
|
3462 | 3462 |
/* Line 1806 of yacc.c */ |
3463 |
-#line 1515 "yara_grammar.y" |
|
3463 |
+#line 1497 "yara_grammar.y" |
|
3464 | 3464 |
{ |
3465 | 3465 |
CHECK_TYPE((yyvsp[(3) - (4)].expression_type), EXPRESSION_TYPE_INTEGER, "int16"); |
3466 | 3466 |
|
... | ... |
@@ -3476,7 +3458,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3476 | 3476 |
case 94: |
3477 | 3477 |
|
3478 | 3478 |
/* Line 1806 of yacc.c */ |
3479 |
-#line 1526 "yara_grammar.y" |
|
3479 |
+#line 1508 "yara_grammar.y" |
|
3480 | 3480 |
{ |
3481 | 3481 |
CHECK_TYPE((yyvsp[(3) - (4)].expression_type), EXPRESSION_TYPE_INTEGER, "int32"); |
3482 | 3482 |
|
... | ... |
@@ -3492,7 +3474,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3492 | 3492 |
case 95: |
3493 | 3493 |
|
3494 | 3494 |
/* Line 1806 of yacc.c */ |
3495 |
-#line 1537 "yara_grammar.y" |
|
3495 |
+#line 1519 "yara_grammar.y" |
|
3496 | 3496 |
{ |
3497 | 3497 |
CHECK_TYPE((yyvsp[(3) - (4)].expression_type), EXPRESSION_TYPE_INTEGER, "uint8"); |
3498 | 3498 |
|
... | ... |
@@ -3508,7 +3490,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3508 | 3508 |
case 96: |
3509 | 3509 |
|
3510 | 3510 |
/* Line 1806 of yacc.c */ |
3511 |
-#line 1548 "yara_grammar.y" |
|
3511 |
+#line 1530 "yara_grammar.y" |
|
3512 | 3512 |
{ |
3513 | 3513 |
CHECK_TYPE((yyvsp[(3) - (4)].expression_type), EXPRESSION_TYPE_INTEGER, "uint16"); |
3514 | 3514 |
|
... | ... |
@@ -3524,7 +3506,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3524 | 3524 |
case 97: |
3525 | 3525 |
|
3526 | 3526 |
/* Line 1806 of yacc.c */ |
3527 |
-#line 1559 "yara_grammar.y" |
|
3527 |
+#line 1541 "yara_grammar.y" |
|
3528 | 3528 |
{ |
3529 | 3529 |
CHECK_TYPE((yyvsp[(3) - (4)].expression_type), EXPRESSION_TYPE_INTEGER, "uint32"); |
3530 | 3530 |
|
... | ... |
@@ -3540,7 +3522,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3540 | 3540 |
case 98: |
3541 | 3541 |
|
3542 | 3542 |
/* Line 1806 of yacc.c */ |
3543 |
-#line 1570 "yara_grammar.y" |
|
3543 |
+#line 1552 "yara_grammar.y" |
|
3544 | 3544 |
{ |
3545 | 3545 |
compiler->last_result = yr_parser_emit_with_arg( |
3546 | 3546 |
yyscanner, OP_PUSH, (yyvsp[(1) - (1)].integer), NULL); |
... | ... |
@@ -3554,7 +3536,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3554 | 3554 |
case 99: |
3555 | 3555 |
|
3556 | 3556 |
/* Line 1806 of yacc.c */ |
3557 |
-#line 1579 "yara_grammar.y" |
|
3557 |
+#line 1561 "yara_grammar.y" |
|
3558 | 3558 |
{ |
3559 | 3559 |
SIZED_STRING* sized_string = (yyvsp[(1) - (1)].sized_string); |
3560 | 3560 |
char* string; |
... | ... |
@@ -3584,7 +3566,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3584 | 3584 |
case 100: |
3585 | 3585 |
|
3586 | 3586 |
/* Line 1806 of yacc.c */ |
3587 |
-#line 1604 "yara_grammar.y" |
|
3587 |
+#line 1586 "yara_grammar.y" |
|
3588 | 3588 |
{ |
3589 | 3589 |
compiler->last_result = yr_parser_reduce_string_identifier( |
3590 | 3590 |
yyscanner, |
... | ... |
@@ -3602,7 +3584,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3602 | 3602 |
case 101: |
3603 | 3603 |
|
3604 | 3604 |
/* Line 1806 of yacc.c */ |
3605 |
-#line 1617 "yara_grammar.y" |
|
3605 |
+#line 1599 "yara_grammar.y" |
|
3606 | 3606 |
{ |
3607 | 3607 |
compiler->last_result = yr_parser_reduce_string_identifier( |
3608 | 3608 |
yyscanner, |
... | ... |
@@ -3620,7 +3602,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3620 | 3620 |
case 102: |
3621 | 3621 |
|
3622 | 3622 |
/* Line 1806 of yacc.c */ |
3623 |
-#line 1630 "yara_grammar.y" |
|
3623 |
+#line 1612 "yara_grammar.y" |
|
3624 | 3624 |
{ |
3625 | 3625 |
compiler->last_result = yr_parser_emit_with_arg( |
3626 | 3626 |
yyscanner, |
... | ... |
@@ -3645,7 +3627,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3645 | 3645 |
case 103: |
3646 | 3646 |
|
3647 | 3647 |
/* Line 1806 of yacc.c */ |
3648 |
-#line 1650 "yara_grammar.y" |
|
3648 |
+#line 1632 "yara_grammar.y" |
|
3649 | 3649 |
{ |
3650 | 3650 |
if ((yyvsp[(1) - (1)].object) == (YR_OBJECT*) -1) // loop identifier |
3651 | 3651 |
{ |
... | ... |
@@ -3685,7 +3667,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3685 | 3685 |
case 104: |
3686 | 3686 |
|
3687 | 3687 |
/* Line 1806 of yacc.c */ |
3688 |
-#line 1685 "yara_grammar.y" |
|
3688 |
+#line 1667 "yara_grammar.y" |
|
3689 | 3689 |
{ |
3690 | 3690 |
CHECK_TYPE((yyvsp[(1) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "+"); |
3691 | 3691 |
CHECK_TYPE((yyvsp[(3) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "+"); |
... | ... |
@@ -3699,7 +3681,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3699 | 3699 |
case 105: |
3700 | 3700 |
|
3701 | 3701 |
/* Line 1806 of yacc.c */ |
3702 |
-#line 1694 "yara_grammar.y" |
|
3702 |
+#line 1676 "yara_grammar.y" |
|
3703 | 3703 |
{ |
3704 | 3704 |
CHECK_TYPE((yyvsp[(1) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "-"); |
3705 | 3705 |
CHECK_TYPE((yyvsp[(3) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "-"); |
... | ... |
@@ -3713,7 +3695,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3713 | 3713 |
case 106: |
3714 | 3714 |
|
3715 | 3715 |
/* Line 1806 of yacc.c */ |
3716 |
-#line 1703 "yara_grammar.y" |
|
3716 |
+#line 1685 "yara_grammar.y" |
|
3717 | 3717 |
{ |
3718 | 3718 |
CHECK_TYPE((yyvsp[(1) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "*"); |
3719 | 3719 |
CHECK_TYPE((yyvsp[(3) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "*"); |
... | ... |
@@ -3727,7 +3709,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3727 | 3727 |
case 107: |
3728 | 3728 |
|
3729 | 3729 |
/* Line 1806 of yacc.c */ |
3730 |
-#line 1712 "yara_grammar.y" |
|
3730 |
+#line 1694 "yara_grammar.y" |
|
3731 | 3731 |
{ |
3732 | 3732 |
CHECK_TYPE((yyvsp[(1) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "\\"); |
3733 | 3733 |
CHECK_TYPE((yyvsp[(3) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "\\"); |
... | ... |
@@ -3741,7 +3723,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3741 | 3741 |
case 108: |
3742 | 3742 |
|
3743 | 3743 |
/* Line 1806 of yacc.c */ |
3744 |
-#line 1721 "yara_grammar.y" |
|
3744 |
+#line 1703 "yara_grammar.y" |
|
3745 | 3745 |
{ |
3746 | 3746 |
CHECK_TYPE((yyvsp[(1) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "%"); |
3747 | 3747 |
CHECK_TYPE((yyvsp[(3) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "%"); |
... | ... |
@@ -3755,7 +3737,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3755 | 3755 |
case 109: |
3756 | 3756 |
|
3757 | 3757 |
/* Line 1806 of yacc.c */ |
3758 |
-#line 1730 "yara_grammar.y" |
|
3758 |
+#line 1712 "yara_grammar.y" |
|
3759 | 3759 |
{ |
3760 | 3760 |
CHECK_TYPE((yyvsp[(1) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "^"); |
3761 | 3761 |
CHECK_TYPE((yyvsp[(3) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "^"); |
... | ... |
@@ -3769,7 +3751,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3769 | 3769 |
case 110: |
3770 | 3770 |
|
3771 | 3771 |
/* Line 1806 of yacc.c */ |
3772 |
-#line 1739 "yara_grammar.y" |
|
3772 |
+#line 1721 "yara_grammar.y" |
|
3773 | 3773 |
{ |
3774 | 3774 |
CHECK_TYPE((yyvsp[(1) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "^"); |
3775 | 3775 |
CHECK_TYPE((yyvsp[(3) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "^"); |
... | ... |
@@ -3783,7 +3765,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3783 | 3783 |
case 111: |
3784 | 3784 |
|
3785 | 3785 |
/* Line 1806 of yacc.c */ |
3786 |
-#line 1748 "yara_grammar.y" |
|
3786 |
+#line 1730 "yara_grammar.y" |
|
3787 | 3787 |
{ |
3788 | 3788 |
CHECK_TYPE((yyvsp[(1) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "|"); |
3789 | 3789 |
CHECK_TYPE((yyvsp[(3) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "|"); |
... | ... |
@@ -3797,7 +3779,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3797 | 3797 |
case 112: |
3798 | 3798 |
|
3799 | 3799 |
/* Line 1806 of yacc.c */ |
3800 |
-#line 1757 "yara_grammar.y" |
|
3800 |
+#line 1739 "yara_grammar.y" |
|
3801 | 3801 |
{ |
3802 | 3802 |
CHECK_TYPE((yyvsp[(2) - (2)].expression_type), EXPRESSION_TYPE_INTEGER, "~"); |
3803 | 3803 |
|
... | ... |
@@ -3810,7 +3792,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3810 | 3810 |
case 113: |
3811 | 3811 |
|
3812 | 3812 |
/* Line 1806 of yacc.c */ |
3813 |
-#line 1765 "yara_grammar.y" |
|
3813 |
+#line 1747 "yara_grammar.y" |
|
3814 | 3814 |
{ |
3815 | 3815 |
CHECK_TYPE((yyvsp[(1) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "<<"); |
3816 | 3816 |
CHECK_TYPE((yyvsp[(3) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, "<<"); |
... | ... |
@@ -3824,7 +3806,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3824 | 3824 |
case 114: |
3825 | 3825 |
|
3826 | 3826 |
/* Line 1806 of yacc.c */ |
3827 |
-#line 1774 "yara_grammar.y" |
|
3827 |
+#line 1756 "yara_grammar.y" |
|
3828 | 3828 |
{ |
3829 | 3829 |
CHECK_TYPE((yyvsp[(1) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, ">>"); |
3830 | 3830 |
CHECK_TYPE((yyvsp[(3) - (3)].expression_type), EXPRESSION_TYPE_INTEGER, ">>"); |
... | ... |
@@ -3838,7 +3820,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3838 | 3838 |
case 115: |
3839 | 3839 |
|
3840 | 3840 |
/* Line 1806 of yacc.c */ |
3841 |
-#line 1783 "yara_grammar.y" |
|
3841 |
+#line 1765 "yara_grammar.y" |
|
3842 | 3842 |
{ |
3843 | 3843 |
(yyval.expression_type) = (yyvsp[(1) - (1)].expression_type); |
3844 | 3844 |
} |
... | ... |
@@ -3847,7 +3829,7 @@ X (yyval.object) = ((YR_OBJECT_ARRAY*) (yyvsp[(1) - (4)].object))->item |
3847 | 3847 |
|
3848 | 3848 |
|
3849 | 3849 |
/* Line 1806 of yacc.c */ |
3850 |
-#line 3851 "yara_grammar.c" |
|
3850 |
+#line 3833 "yara_grammar.c" |
|
3851 | 3851 |
default: break; |
3852 | 3852 |
} |
3853 | 3853 |
/* User semantic actions sometimes alter yychar, and that requires |
... | ... |
@@ -4078,6 +4060,6 @@ yyreturn: |
4078 | 4078 |
|
4079 | 4079 |
|
4080 | 4080 |
/* Line 2067 of yacc.c */ |
4081 |
-#line 1788 "yara_grammar.y" |
|
4081 |
+#line 1770 "yara_grammar.y" |
|
4082 | 4082 |
|
4083 | 4083 |
|
... | ... |
@@ -584,28 +584,23 @@ identifier |
584 | 584 |
{ |
585 | 585 |
// Search for identifier within the global namespace, where the |
586 | 586 |
// externals variables reside. |
587 |
-#if REAL_YARA //externals/objects/modules not supported |
|
588 | 587 |
object = (YR_OBJECT*) yr_hash_table_lookup( |
589 | 588 |
compiler->objects_table, |
590 | 589 |
$1, |
591 | 590 |
NULL); |
592 |
-#endif |
|
593 | 591 |
if (object == NULL) |
594 | 592 |
{ |
595 | 593 |
// If not found, search within the current namespace. |
596 | 594 |
|
597 |
-#if REAL_YARA //externals/objects/modules not supported |
|
598 | 595 |
ns = compiler->current_namespace->name; |
599 | 596 |
object = (YR_OBJECT*) yr_hash_table_lookup( |
600 | 597 |
compiler->objects_table, |
601 | 598 |
$1, |
602 | 599 |
ns); |
603 |
-#endif |
|
604 | 600 |
} |
605 | 601 |
|
606 | 602 |
if (object != NULL) |
607 | 603 |
{ |
608 |
-#if REAL_YARA //externals/objects/modules not supported |
|
609 | 604 |
compiler->last_result = yr_arena_write_string( |
610 | 605 |
compiler->sz_arena, |
611 | 606 |
$1, |
... | ... |
@@ -617,21 +612,15 @@ identifier |
617 | 617 |
OP_OBJ_LOAD, |
618 | 618 |
PTR_TO_UINT64(id), |
619 | 619 |
NULL); |
620 |
-#endif |
|
621 | 620 |
|
622 | 621 |
$$ = object; |
623 | 622 |
} |
624 | 623 |
else |
625 | 624 |
{ |
626 |
- //#if REAL_YARA |
|
627 | 625 |
rule = (YR_RULE*) yr_hash_table_lookup( |
628 | 626 |
compiler->rules_table, |
629 | 627 |
$1, |
630 |
-#if REAL_YARA |
|
631 | 628 |
compiler->current_namespace->name); |
632 |
-#else |
|
633 |
- NULL); |
|
634 |
-#endif |
|
635 | 629 |
if (rule != NULL) |
636 | 630 |
{ |
637 | 631 |
compiler->last_result = yr_parser_emit_with_arg_reloc( |
... | ... |
@@ -645,7 +634,6 @@ identifier |
645 | 645 |
yr_compiler_set_error_extra_info(compiler, $1); |
646 | 646 |
compiler->last_result = ERROR_UNDEFINED_IDENTIFIER; |
647 | 647 |
} |
648 |
- //#endif |
|
649 | 648 |
|
650 | 649 |
$$ = (YR_OBJECT*) -2; |
651 | 650 |
} |
... | ... |
@@ -657,7 +645,6 @@ identifier |
657 | 657 |
} |
658 | 658 |
| identifier '.' _IDENTIFIER_ |
659 | 659 |
{ |
660 |
-#ifdef REAL_YARA //externals/objects/modules not supported |
|
661 | 660 |
YR_OBJECT* object = $1; |
662 | 661 |
YR_OBJECT* field = NULL; |
663 | 662 |
|
... | ... |
@@ -704,11 +691,9 @@ identifier |
704 | 704 |
yr_free($3); |
705 | 705 |
|
706 | 706 |
ERROR_IF(compiler->last_result != ERROR_SUCCESS); |
707 |
-#endif |
|
708 | 707 |
} |
709 | 708 |
| identifier '[' primary_expression ']' |
710 | 709 |
{ |
711 |
-#ifdef REAL_YARA //externals/objects/modules not supported |
|
712 | 710 |
if ($1 != NULL && $1->type == OBJECT_TYPE_ARRAY) |
713 | 711 |
{ |
714 | 712 |
compiler->last_result = yr_parser_emit( |
... | ... |
@@ -716,7 +701,7 @@ identifier |
716 | 716 |
OP_INDEX_ARRAY, |
717 | 717 |
NULL); |
718 | 718 |
|
719 |
-X $$ = ((YR_OBJECT_ARRAY*) $1)->items->objects[0]; |
|
719 |
+ $$ = ((YR_OBJECT_ARRAY*) $1)->items->objects[0]; |
|
720 | 720 |
} |
721 | 721 |
else |
722 | 722 |
{ |
... | ... |
@@ -728,12 +713,10 @@ X $$ = ((YR_OBJECT_ARRAY*) $1)->items->objects[0]; |
728 | 728 |
} |
729 | 729 |
|
730 | 730 |
ERROR_IF(compiler->last_result != ERROR_SUCCESS); |
731 |
-#endif |
|
732 | 731 |
} |
733 | 732 |
|
734 | 733 |
| identifier '(' arguments_list ')' |
735 | 734 |
{ |
736 |
-#ifdef REAL_YARA //externals/objects/modules not supported |
|
737 | 735 |
int args_count; |
738 | 736 |
|
739 | 737 |
if ($1 != NULL && $1->type == OBJECT_TYPE_FUNCTION) |
... | ... |
@@ -766,7 +749,6 @@ X $$ = ((YR_OBJECT_ARRAY*) $1)->items->objects[0]; |
766 | 766 |
yr_free($3); |
767 | 767 |
|
768 | 768 |
ERROR_IF(compiler->last_result != ERROR_SUCCESS); |
769 |
-#endif |
|
770 | 769 |
} |
771 | 770 |
; |
772 | 771 |
|