fix MaatCmd testcase
This commit is contained in:
@@ -20,6 +20,13 @@ extern "C"
|
||||
#include "maat_table.h"
|
||||
#include "cJSON/cJSON.h"
|
||||
|
||||
enum expr_type {
|
||||
EXPR_TYPE_INVALID = -1,
|
||||
EXPR_TYPE_AND = 0,
|
||||
EXPR_TYPE_REGEX,
|
||||
EXPR_TYPE_MAX
|
||||
};
|
||||
|
||||
struct expr_runtime;
|
||||
|
||||
void *expr_schema_new(cJSON *json, struct table_manager *tbl_mgr,
|
||||
|
||||
@@ -323,7 +323,7 @@ error_out:
|
||||
int maat_cmd_set_file(struct maat *maat_inst, const char *key,
|
||||
const char *value, size_t size, enum maat_operation op)
|
||||
{
|
||||
redisContext *ctx = maat_inst->opts.redis_ctx.write_ctx;
|
||||
redisContext *ctx = get_redis_ctx_for_write(maat_inst);
|
||||
if (NULL == ctx) {
|
||||
log_fatal(maat_inst->logger, MODULE_MAAT_COMMAND,
|
||||
"[%s:%d] failed: Redis is not connected.",
|
||||
|
||||
@@ -39,13 +39,6 @@ struct expr_schema {
|
||||
struct table_manager *ref_tbl_mgr;
|
||||
};
|
||||
|
||||
enum expr_type {
|
||||
EXPR_TYPE_INVALID = -1,
|
||||
EXPR_TYPE_AND = 0,
|
||||
EXPR_TYPE_REGEX,
|
||||
EXPR_TYPE_MAX
|
||||
};
|
||||
|
||||
enum match_method {
|
||||
MATCH_METHOD_SUB = 0,
|
||||
MATCH_METHOD_RIGHT,
|
||||
@@ -478,8 +471,14 @@ static int expr_keywords_to_expr_pattern(char *keywords, struct expr_pattern *pa
|
||||
region_str_len = hex2bin(hex_str_start, strlen(hex_str_start), region_string, region_str_len);
|
||||
|
||||
tmp_start_str = str_unescape(tmp_start_str);
|
||||
snprintf(tmp_keywords + pattern_len, MAX_KEYWORDS_STR_LEN - pattern_len, "%s%s", tmp_start_str, region_string);
|
||||
pattern_len = strlen(tmp_keywords);
|
||||
//snprintf(tmp_keywords + pattern_len, MAX_KEYWORDS_STR_LEN - pattern_len, "%s%s", tmp_start_str, region_string);
|
||||
if (pattern_len + strlen(tmp_start_str) + region_str_len > MAX_KEYWORDS_STR_LEN) {
|
||||
return -1;
|
||||
}
|
||||
memcpy(tmp_keywords + pattern_len, tmp_start_str, strlen(tmp_start_str));
|
||||
pattern_len += strlen(tmp_start_str);
|
||||
memcpy(tmp_keywords + pattern_len, region_string, region_str_len);//can't use strcpy cause region_string is from hexbin and may contain '\0'
|
||||
pattern_len += region_str_len;
|
||||
|
||||
if (region_string != NULL) {
|
||||
FREE(region_string);
|
||||
@@ -490,6 +489,9 @@ static int expr_keywords_to_expr_pattern(char *keywords, struct expr_pattern *pa
|
||||
}
|
||||
if (tmp_end_str != NULL && tmp_end_str[0] != '\0') {
|
||||
tmp_end_str = str_unescape(tmp_end_str);
|
||||
if (pattern_len + strlen(tmp_start_str) + strlen(tmp_end_str) > MAX_KEYWORDS_STR_LEN) {
|
||||
return -1;
|
||||
}
|
||||
snprintf(tmp_keywords + pattern_len, MAX_KEYWORDS_STR_LEN - pattern_len, "%s%s", tmp_start_str, tmp_end_str);
|
||||
pattern_len = strlen(tmp_keywords);
|
||||
}
|
||||
|
||||
@@ -70,17 +70,17 @@ get_foregin_keys(struct serial_rule *p_rule, char foreign_names[][MAX_FOREIGN_NA
|
||||
int foreign_key_size = 0;
|
||||
p_rule->f_keys = ALLOC(struct foreign_key, n_foreign);
|
||||
|
||||
cJSON *json = cJSON_Parse(p_rule->table_line);
|
||||
if (json == NULL) {
|
||||
log_fatal(logger, MODULE_REDIS_MONITOR,
|
||||
"[%s:%d] Get %s,%s foreign key failed: "
|
||||
"Invalid table line", __FUNCTION__, __LINE__,
|
||||
p_rule->table_name, p_rule->rule_uuid_str);
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < n_foreign; i++) {
|
||||
const char *p_foreign_name = foreign_names[i];
|
||||
cJSON *json = cJSON_Parse(p_rule->table_line);
|
||||
|
||||
if (json == NULL) {
|
||||
log_fatal(logger, MODULE_REDIS_MONITOR,
|
||||
"[%s:%d] Get %s,%s foreign key failed: "
|
||||
"Invalid table line", __FUNCTION__, __LINE__,
|
||||
p_rule->table_name, p_rule->rule_uuid_str);
|
||||
continue;
|
||||
}
|
||||
|
||||
cJSON *item = cJSON_GetObjectItem(json, p_foreign_name);
|
||||
if (item == NULL || item->type != cJSON_String) {
|
||||
@@ -129,6 +129,8 @@ get_foregin_keys(struct serial_rule *p_rule, char foreign_names[][MAX_FOREIGN_NA
|
||||
p_rule->n_foreign++;
|
||||
}
|
||||
|
||||
cJSON_Delete(json);
|
||||
|
||||
if (0 == p_rule->n_foreign) {
|
||||
FREE(p_rule->f_keys);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user