From 9a8251b53358cf8bebac1792109e457b1c59e4a6 Mon Sep 17 00:00:00 2001 From: Heebum Kwak Date: Tue, 21 May 2013 14:43:19 +0900 Subject: [PATCH] improve rule checker function in xevlog_analyze Change-Id: I35b5532d00c84e8d052b5d48bb6f24b81c860e2c --- bin/xevlog_analyze/xevlog_analyze.c | 90 ++++++++----------------------------- common/xdbg_evlog.c | 5 +++ 2 files changed, 24 insertions(+), 71 deletions(-) diff --git a/bin/xevlog_analyze/xevlog_analyze.c b/bin/xevlog_analyze/xevlog_analyze.c index 77f899e..01e45cb 100644 --- a/bin/xevlog_analyze/xevlog_analyze.c +++ b/bin/xevlog_analyze/xevlog_analyze.c @@ -112,6 +112,7 @@ static void _xEvlogAnalyzePrint (EvlogOption *eo, char* reply, int* len) if (!strlen(eo->path_name)) { printf ("failed: no evlog path\n"); + _printUsage(eo->command_name); return; } @@ -451,76 +452,33 @@ _checkOption(int argc, char** argv) len = read(fd, fs, sizeof(fs)); pfs = fs; - while (pfs != NULL) + while (pfs - fs < len) { int new_argc = 3; char *new_argv[3] = {"add", }; - char *policy[2] = {"allow", "deny"}; - char tstring[1024] = {0,}; - int pflag, i; - - if (strstr(pfs, policy[0]) && strstr(pfs, policy[1])) - if (strstr(pfs,policy[0]) > strstr(pfs,policy[1])) - { - pfs = strstr(pfs,policy[1]); - pflag = 1; - } - else - { - pfs = strstr(pfs,policy[0]); - pflag = 0; - } - else if (strstr(pfs, policy[0]) && !strstr(pfs, policy[1])) - { - pfs = strstr(pfs, policy[0]); - pflag = 0; - } - else if (!strstr(pfs, policy[0]) && strstr(pfs, policy[1])) - { - pfs = strstr(pfs, policy[1]); - pflag = 1; - } - else - break; + char policy[64] = {0, }; + char rule[1024] = {0, }; + int i; - if (pflag == 0) + if (pfs[0] == ' ' || pfs[0] == '\n') { - new_argv[1] = (char*)malloc (strlen(policy[0]) + 1); - - if(!new_argv[1]) - { - printf ("failed: malloc new_argv[1]\n"); - return; - } - memset(new_argv[1], 0, strlen(policy[0]) + 1); - strncpy(new_argv[1], policy[0], strlen(policy[0])); - pfs += (strlen(policy[0]) + 1); - } - else if (pflag == 1) - { - new_argv[1] = (char*)malloc (strlen(policy[1]) + 1); - - if(!new_argv[1]) - { - printf ("failed: malloc new_argv[1]\n"); - return; - } - memset(new_argv[1], 0, strlen(policy[1]) + 1); - strncpy(new_argv[1], policy[1], strlen(policy[1])); - pfs += (strlen(policy[1]) + 1); + pfs++; + continue; } + for (i = 0 ; pfs[i] != ' ' ; i++) + policy[i] = pfs[i]; + new_argv[1] = policy; + pfs += (strlen(new_argv[1]) + 1); + + memset(rule, 0, sizeof(rule)); for (i = 0 ; pfs[i] != '\n' ; i++) - tstring[i] = pfs[i]; + rule[i] = pfs[i]; + + new_argv[2] = rule; + + pfs += (strlen(new_argv[2]) + 1); - new_argv[2] = (char*)malloc (strlen(tstring) + 1); - if(!new_argv[2]) - { - printf ("failed: malloc new_argv[2]\n"); - return; - } - memset(new_argv[2], 0, strlen(tstring) + 1); - strncpy(new_argv[2], tstring, strlen(tstring)); if(!xDbgEvlogRuleSet ((const int) new_argc, (const char**) new_argv, @@ -530,16 +488,6 @@ _checkOption(int argc, char** argv) return; } - if (new_argv[1]) - { - free (new_argv[1]); - new_argv[1] = NULL; - } - if (new_argv[2]) - { - free (new_argv[2]); - new_argv[2] = NULL; - } } eo.isRule = TRUE; diff --git a/common/xdbg_evlog.c b/common/xdbg_evlog.c index fa314fa..7e9f86e 100644 --- a/common/xdbg_evlog.c +++ b/common/xdbg_evlog.c @@ -119,6 +119,7 @@ xDbgEvlogRuleSet (const int argc, const char **argv, char *reply, int *len) RC_RESULT_TYPE result; const char * policy = argv[1]; char rule[8192]; + int i; if (argc < 3) { @@ -138,6 +139,10 @@ xDbgEvlogRuleSet (const int argc, const char **argv, char *reply, int *len) _mergeArgs (rule, argc - 2, &(argv[2])); + for (i = 0 ; i < strlen(rule) ; i++) + if(rule[i] == '\"' || rule[i] == '\'') + rule[i] = ' '; + result = rulechecker_add_rule (rc, policy_type, rule); if (result == RC_ERR_TOO_MANY_RULES) { -- 2.7.4