Close #9 修复加载回调表时未正确匹配空tag的bug。6b42c711b3
This commit is contained in:
@@ -3217,7 +3217,7 @@ void garbage_bury(MESA_lqueue_head garbage_q,int timeout,void *logger)
|
||||
}
|
||||
void update_plugin_table(struct Maat_table_desc* table,const char* table_line,Maat_scanner_t* scanner, const struct rule_tag* tags, int n_tags, void* logger)
|
||||
{
|
||||
int i=0, ret=1;
|
||||
int i=0, ret=1, matched_tag=1;
|
||||
unsigned int len=strlen(table_line)+1;
|
||||
struct plugin_table_desc* plugin_desc=&(table->plugin);
|
||||
struct Maat_table_runtime* table_rt=scanner->table_rt[table->table_id];
|
||||
@@ -3242,22 +3242,22 @@ void update_plugin_table(struct Maat_table_desc* table,const char* table_line,Ma
|
||||
{
|
||||
copy=ALLOC(char, accept_tag_len+1);
|
||||
memcpy(copy, table_line+accept_tag_offset, accept_tag_len);
|
||||
ret=compare_accept_tag(copy, tags, n_tags);
|
||||
if(ret<0)
|
||||
matched_tag=compare_accept_tag(copy, tags, n_tags);
|
||||
if(matched_tag<0)
|
||||
{
|
||||
MESA_handle_runtime_log(logger,RLOG_LV_FATAL,maat_module ,
|
||||
"update error,invalid tag format of plugin table %s:%s"
|
||||
,table->table_name[table->updating_name],table_line);
|
||||
table->udpate_err_cnt++;
|
||||
}
|
||||
if(ret==0)
|
||||
if(matched_tag==0)
|
||||
{
|
||||
table->unmatch_tag_cnt++;
|
||||
}
|
||||
free(copy);
|
||||
copy=NULL;
|
||||
}
|
||||
if(ret!=1)
|
||||
if(!matched_tag)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -762,6 +762,13 @@
|
||||
"3\tFAILED\t11\t1\t{\"tag_sets\":[[{\"tag\":\"location\",\"value\":[\"北京/朝阳/华严北里\",\"上海/浦东/陆家嘴\"]},{\"tag\":\"isp\",\"value\":[\"电信\",\"联通\"]}],[{\"tag\":\"location\",\"value\":[\"北京\"]},{\"tag\":\"isp\",\"value\":[\"联通\"]}]]}\t333",
|
||||
"4\tSUCCESS\t66\t1\t{}\t444"
|
||||
]
|
||||
},
|
||||
{
|
||||
"table_name": "IR_INTERCEPT_IP",
|
||||
"table_content": [
|
||||
"1000000130\t1000000130\t4\t192.168.10.99\t255.255.255.255\t0\t65535\t0.0.0.0\t255.255.255.255\t0\t65535\t0\t1\t1\t96\t1\tuser_region\t{}\t2019/1/24/18:0:34",
|
||||
"161\t161\t4\t0.0.0.0\t255.255.255.255\t0\t65535\t61.135.169.121\t255.255.255.255\t0\t65535\t0\t0\t1\t96\t832\t0\t0\t2019/1/24/18:48:42"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -31,3 +31,4 @@
|
||||
12 TEST_FOREIGN_KEY plugin {"valid":4,"foreign":[6,8],"tag":3} --
|
||||
13 COMPILE_ALIAS compile escape --
|
||||
14 TEST_PLUGIN_EXDATA_TABLE plugin {"key":2,"valid":4,"tag":5,"estimate_size":1024} --
|
||||
15 IR_INTERCEPT_IP plugin {"valid":14,"tag":18}
|
||||
@@ -784,30 +784,59 @@ TEST(StringScan, OffsetChunk1460)
|
||||
|
||||
void accept_tags_entry_cb(int table_id,const char* table_line,void* u_para)
|
||||
{
|
||||
int* callback_times=(int*)u_para;
|
||||
char status[32]={0};
|
||||
int entry_id=-1,seq=-1;
|
||||
int is_valid=0;
|
||||
sscanf(table_line,"%d\t%s\t%d\t%d",&seq,status,&entry_id,&is_valid);
|
||||
EXPECT_STREQ(status ,"SUCCESS");
|
||||
|
||||
(*callback_times)++;
|
||||
return;
|
||||
}
|
||||
|
||||
TEST(RuleTags, Plugin)
|
||||
TEST(RuleTags, Plugin1)
|
||||
{
|
||||
#define RuleTags_Plugin
|
||||
int table_id=0,ret=0;
|
||||
const char* table_name="TEST_EFFECTIVE_RANGE_TABLE";
|
||||
table_id=Maat_table_register(g_feather,table_name);
|
||||
int ret=0;
|
||||
|
||||
int table_id=Maat_table_register(g_feather,"TEST_EFFECTIVE_RANGE_TABLE");
|
||||
ASSERT_GT(table_id, 0);
|
||||
|
||||
int callback_times=0;
|
||||
ret=Maat_table_callback_register(g_feather, table_id,
|
||||
NULL,
|
||||
accept_tags_entry_cb,
|
||||
NULL,
|
||||
NULL);
|
||||
&callback_times);
|
||||
|
||||
ASSERT_GE(ret, 0);
|
||||
EXPECT_EQ(callback_times, 3);
|
||||
return;
|
||||
}
|
||||
void accept_tags_entry2_cb(int table_id,const char* table_line,void* u_para)
|
||||
{
|
||||
int* callback_times=(int*)u_para;
|
||||
(*callback_times)++;
|
||||
return;
|
||||
}
|
||||
|
||||
TEST(RuleTags, Plugin2)
|
||||
{
|
||||
#define RuleTags_Plugin2
|
||||
int ret=0;
|
||||
|
||||
int table_id=Maat_table_register(g_feather,"IR_INTERCEPT_IP");
|
||||
ASSERT_GT(table_id, 0);
|
||||
|
||||
int callback_times=0;
|
||||
ret=Maat_table_callback_register(g_feather, table_id,
|
||||
NULL,
|
||||
accept_tags_entry2_cb,
|
||||
NULL,
|
||||
&callback_times);
|
||||
|
||||
ASSERT_GE(ret, 0);
|
||||
EXPECT_EQ(callback_times, 2);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1910,8 +1939,8 @@ int main(int argc, char ** argv)
|
||||
const char* log_file="./test.log";
|
||||
const char* stat_file="./scan_staus.log";
|
||||
const char* decrypt_key="mesa2017wy";
|
||||
const char* accept_tags="{\"tags\":[{\"tag\":\"location\",\"value\":\"北京/朝阳/华严北里/甲22号\"},{\"tag\":\"isp\",\"value\":\"移动\"}]}";
|
||||
|
||||
const char* accept_tags="{\"tags\":[{\"tag\":\"location\",\"value\":\"北京/朝阳/华严北里/甲22号\"},{\"tag\":\"isp\",\"value\":\"移动\"},{\"tag\":\"location\",\"value\":\"Astana\"}]}";
|
||||
// const char* subsitute_acc_tags="{\"tags\":[{\"tag\":\"location\",\"value\":\"Astana\"}]}";
|
||||
int scan_detail=0;
|
||||
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
|
||||
Reference in New Issue
Block a user