Add error handling in admin-cli when audit daemon doesn't work 65/177065/3 accepted/tizen/unified/20180426.062545 submit/tizen/20180425.085722
authorSungbae Yoo <sungbae.yoo@samsung.com>
Wed, 25 Apr 2018 05:30:36 +0000 (14:30 +0900)
committerSungbae Yoo <sungbae.yoo@samsung.com>
Wed, 25 Apr 2018 07:42:52 +0000 (16:42 +0900)
Signed-off-by: Sungbae Yoo <sungbae.yoo@samsung.com>
Change-Id: I6db0778c859fb34c591d4429031ef8fdddf9aeda

tools/cli/audit-trail-admin-cli.cpp
tools/tests/speed.cpp

index 5be1f549b1d8d701d7ef0a7bb7d65b337c3012b8..abe8dbc32de1ac94e1a0ac8f8c9f88c798062d87 100644 (file)
@@ -83,11 +83,13 @@ std::string printUserLog(audit_user_log_h log)
        str << "time={";
        {
                time_t time;
+               struct tm local;
                unsigned short millisec;
+
                audit_user_log_get_time(log, &time, &millisec);
-               struct tm *local = localtime(&time);
+               localtime_r(&time, &local);
 
-               str << local->tm_hour << ":" << local->tm_min << ":" << local->tm_sec
+               str << local.tm_hour << ":" << local.tm_min << ":" << local.tm_sec
                        << "." << millisec;
        }
 
@@ -120,11 +122,13 @@ std::string printSystemLog(audit_system_log_h log)
        str << "time={";
        {
                time_t time;
+               struct tm local;
                unsigned short millisec;
+
                audit_system_log_get_time(log, &time, &millisec);
-               struct tm *local = localtime(&time);
+               localtime_r(&time, &local);
 
-               str << local->tm_hour << ":" << local->tm_min << ":" << local->tm_sec
+               str << local.tm_hour << ":" << local.tm_min << ":" << local.tm_sec
                        << "." << millisec;
        }
 
@@ -261,6 +265,10 @@ int showLog(const std::string type)
 
        audit_trail_h auditTrail;
        audit_trail_create(&auditTrail);
+       if (auditTrail == nullptr) {
+               std::cerr << "Audit trail can't be usable" << std::endl;
+               return -1;
+       }
 
        while (getline(tok, word, '|')) {
                if (word == "user") {
@@ -285,6 +293,10 @@ int clearLog(const std::string type)
 
        audit_trail_h auditTrail;
        audit_trail_create(&auditTrail);
+       if (auditTrail == nullptr) {
+               std::cerr << "Audit trail can't be usable" << std::endl;
+               return -1;
+       }
 
        while (getline(tok, word, '|')) {
                if (word == "user") {
@@ -329,6 +341,10 @@ int monitorLog()
        int userCbId, systemCbId;
        audit_trail_h auditTrail;
        audit_trail_create(&auditTrail);
+       if (auditTrail == nullptr) {
+               std::cerr << "Audit trail can't be usable" << std::endl;
+               return -1;
+       }
 
        audit_trail_add_user_log_cb(auditTrail, logCallback, (void*)LOG_TYPE_USER, &userCbId);
        audit_trail_add_system_log_cb(auditTrail, logCallback, (void*)LOG_TYPE_SYSTEM, &systemCbId);
@@ -506,6 +522,13 @@ int applyDacRules()
                                                                "dac-denied");
 
        audit_trail_create(&auditTrail);
+       if (auditTrail == nullptr) {
+               std::cerr << "Audit trail can't be usable" << std::endl;
+               audit_rule_destroy(eaccessRule);
+               audit_rule_destroy(epermRule);
+               return -1;
+       }
+
        audit_trail_add_rule(auditTrail, eaccessRule);
        audit_trail_add_rule(auditTrail, epermRule);
        audit_trail_destroy(auditTrail);
@@ -585,6 +608,11 @@ int listAppliedRules()
        int count = 0;
 
        audit_trail_create(&auditTrail);
+       if (auditTrail == nullptr) {
+               std::cerr << "Audit trail can't be usable" << std::endl;
+               return -1;
+       }
+
        audit_trail_foreach_rule(auditTrail, foreachRule, &count);
        audit_trail_destroy(auditTrail);
 
@@ -607,6 +635,11 @@ int removeRules()
        audit_trail_h auditTrail;
 
        audit_trail_create(&auditTrail);
+       if (auditTrail == nullptr) {
+               std::cerr << "Audit trail can't be usable" << std::endl;
+               return -1;
+       }
+
        audit_trail_foreach_rule(auditTrail, foreachRuleToRemove, auditTrail);
        audit_trail_destroy(auditTrail);
 
index 2fb8836bd257d81728a47a4dd22209c30f65394c..90c89f3967ab9712f2c7d4fc09be90556568ebbe 100644 (file)
@@ -83,6 +83,10 @@ int main(int argc, char* argv[])
 
        audit_trail_h auditTrail;
        audit_trail_create(&auditTrail);
+       if (auditTrail == nullptr) {
+               std::cerr << "Audit trail can't be usable" << std::endl;
+               return EXIT_FAILURE;
+       }
 
        audit_trail_add_user_log_cb(auditTrail, logCb, NULL, &ret);