diff options
| author | liuwentan <[email protected]> | 2022-12-27 18:12:05 +0800 |
|---|---|---|
| committer | liuwentan <[email protected]> | 2022-12-27 18:12:05 +0800 |
| commit | 9c4741d0c189278ea5c98406f8769e5d3a09f96f (patch) | |
| tree | 43e201bda1819b81c42196b0a26dc2bcf58c69a5 | |
| parent | af3058e9eb9c015c8cb829f26a91c6afa3fe1a61 (diff) | |
fix flagScan multiHit bugv3.6.19
| -rw-r--r-- | src/entry/Maat_api.cpp | 10 | ||||
| -rw-r--r-- | src/entry/flag_matcher.cpp | 5 | ||||
| -rw-r--r-- | test/maat_json.json | 23 | ||||
| -rw-r--r-- | test/test_maatframe.cpp | 29 |
4 files changed, 55 insertions, 12 deletions
diff --git a/src/entry/Maat_api.cpp b/src/entry/Maat_api.cpp index 50747c8..bdf8e2b 100644 --- a/src/entry/Maat_api.cpp +++ b/src/entry/Maat_api.cpp @@ -219,9 +219,10 @@ void scan_region_hit_wraper_build_with_GIE(struct scan_region_hit_wraper* wraper wraper->virtual_table_ids=NULL; for(i=0; i< n_rslt; i++) { - wraper->wrapped_regions[wraper->n_wrapped_region]=(struct Maat_region_inner*)(GIE_rslt[i].tag); + wraper->wrapped_regions[wraper->n_wrapped_region]=(struct Maat_region_inner*)(GIE_rslt[i].tag); + wraper->n_wrapped_region++; } - wraper->n_wrapped_region=n_rslt; + wraper->is_last_region=is_last_region; wraper->virtual_table_id=virtual_table_id; wraper->Nth_scan=Nth_scan; @@ -237,9 +238,10 @@ void scan_region_hit_wraper_build_with_flag_matcher(struct scan_region_hit_wrape wraper->virtual_table_ids=NULL; for(i=0; i< n_rslt; i++) { - wraper->wrapped_regions[wraper->n_wrapped_region]=(struct Maat_region_inner*)(flag_rslt[i].user_tag); + wraper->wrapped_regions[wraper->n_wrapped_region]=(struct Maat_region_inner*)(flag_rslt[i].user_tag); + wraper->n_wrapped_region++; } - wraper->n_wrapped_region=n_rslt; + wraper->is_last_region=is_last_region; wraper->virtual_table_id=virtual_table_id; wraper->Nth_scan=Nth_scan; diff --git a/src/entry/flag_matcher.cpp b/src/entry/flag_matcher.cpp index b229a12..1c9577b 100644 --- a/src/entry/flag_matcher.cpp +++ b/src/entry/flag_matcher.cpp @@ -14,13 +14,11 @@ struct flag_matcher *flag_matcher_new(struct flag_rule *rule, uint32_t n_rule) { if (!rule) { - fprintf(stderr, "Invalid argument: struct flag_rule *rule\n"); return NULL; } if (!n_rule) { - fprintf(stderr, "Invalid argument: uint32_t n_rule\n"); return NULL; } @@ -41,7 +39,6 @@ void flag_matcher_free(struct flag_matcher *flag_matcher) { if (!flag_matcher) { - fprintf(stderr, "Invalid argument: struct flag_matcher *flag_matcher\n"); return; } @@ -55,7 +52,6 @@ int flag_matcher_match(struct flag_matcher *flag_matcher, uint64_t flag, struct { if (!flag_matcher) { - fprintf(stderr, "Invalid argument: struct flag_matcher *flag_matcher\n"); return -1; } @@ -70,7 +66,6 @@ int flag_matcher_match(struct flag_matcher *flag_matcher, uint64_t flag, struct result_number++; if (result_number == n_result) { - fprintf(stderr, "result array is full\n"); return result_number; } } diff --git a/test/maat_json.json b/test/maat_json.json index 1b26da0..71e0c4b 100644 --- a/test/maat_json.json +++ b/test/maat_json.json @@ -2404,6 +2404,29 @@ ] } ] + }, + { + "compile_id": 194, + "service": 0, + "action": 0, + "do_blacklist": 0, + "do_log": 0, + "user_region": "anything", + "is_valid": "yes", + "groups": [ + { + "regions": [ + { + "table_type": "flag", + "table_name": "FLAG_CONFIG", + "table_content": { + "flag": 21, + "flag_mask": 31 + } + } + ] + } + ] } ], "plugin_table": [ diff --git a/test/test_maatframe.cpp b/test/test_maatframe.cpp index fb4d3ab..27a631a 100644 --- a/test/test_maatframe.cpp +++ b/test/test_maatframe.cpp @@ -159,14 +159,14 @@ TEST(FlagScan, basic) ASSERT_GT(table_id, 0); //compile_id:192 flag: 0000 0001 mask: 0000 0011 - //scan_data: 0000 0001 or 0000 0101 should hit - uint64_t scan_data=1; + //scan_data: 0000 1001 or 0000 1101 should hit + uint64_t scan_data=9; ret=Maat_scan_flag(g_feather, table_id, scan_data, result, 4, &mid, 0); EXPECT_EQ(ret, 1); EXPECT_EQ(result[0].config_id, 192); Maat_clean_status(&mid); - scan_data=5; + scan_data=13; ret=Maat_scan_flag(g_feather, table_id, scan_data, result, 4, &mid, 0); EXPECT_EQ(ret, 1); EXPECT_EQ(result[0].config_id, 192); @@ -208,6 +208,29 @@ TEST(FlagScan, withExprRegion) Maat_clean_status(&mid); } +TEST(FlagScan, hitMultiCompile) +{ + int ret=0; + int flag_table_id=0; + struct Maat_rule_t result[4]; + int found_pos[4]; + const char* flag_table_name="FLAG_CONFIG"; + scan_status_t mid=NULL; + + flag_table_id=Maat_table_register(g_feather,flag_table_name); + ASSERT_GT(flag_table_id, 0); + + //compile_id:192 flag: 0000 0001 mask: 0000 0011 + //compile_id:194 flag: 0001 0101 mask: 0001 1111 + //scan_data: 0001 0101 should hit compile192 and compile194 + uint64_t flag_scan_data=21; + ret=Maat_scan_flag(g_feather, flag_table_id, flag_scan_data, result, 4, &mid, 0); + EXPECT_EQ(ret, 2); + EXPECT_EQ(result[0].config_id, 194); + EXPECT_EQ(result[1].config_id, 192); + Maat_clean_status(&mid); +} + TEST_F(JSONUpdate, OldCfg) { scan_with_old_or_new_cfg(JSONUpdate::_shared_feather_j, 1); |
