Fix some SVACE issues 90/177490/9 accepted/tizen/unified/20180502.071207 submit/tizen/20180502.041736
authorSungbae Yoo <sungbae.yoo@samsung.com>
Mon, 30 Apr 2018 11:22:25 +0000 (20:22 +0900)
committerSungbae Yoo <sungbae.yoo@samsung.com>
Wed, 2 May 2018 02:07:45 +0000 (11:07 +0900)
1. Make new operations no-throw
2. Add missing initializations

Signed-off-by: Sungbae Yoo <sungbae.yoo@samsung.com>
Change-Id: I1387792b32e63d47fbbed21f853037df2f110356

lib/audit-rule/field.h
lib/audit-rule/rule.cpp
lib/audit-rule/rule.h
lib/audit-trail/audit-trail.cpp
lib/audit-trail/rule.cpp
tools/cli/audit-trail-admin-cli.cpp
tools/tests/speed.cpp

index 269568a3206c34ce9705c5e2e8583d5597089106..181185cb425b7c7787056d0769d021f97d76c6cb 100644 (file)
@@ -125,7 +125,7 @@ public:
 
        Field(FieldType type)
                : _type(static_cast<unsigned int>(type)),
-               _op(0)
+               _op(0), _value()
        {
        }
        /* TODO: to be removed below constructor */
index 63ceac46d919fbae03ef6163b96a2c95e097ffd2..aa1478169bdc8f7027c953c761e33dc5c6820b58 100644 (file)
@@ -143,10 +143,10 @@ void Rule::setComponents(const std::vector<char> &rule)
        for (unsigned int i = 0; i < r->field_count; i++) {
                if (FieldBase::isString(r->fields[i])) {
                        std::string value(ruleBuf, ruleBuf + r->values[i]);
-                       conditions[r->fields[i]].reset(new Field<std::string>(r->fields[i], r->fieldflags[i], value));
+                       conditions[r->fields[i]].reset(new(std::nothrow) Field<std::string>(r->fields[i], r->fieldflags[i], value));
                        ruleBuf += r->values[i];
                } else {
-                       conditions[r->fields[i]].reset(new Field<int>(r->fields[i], r->fieldflags[i], r->values[i]));
+                       conditions[r->fields[i]].reset(new(std::nothrow) Field<int>(r->fields[i], r->fieldflags[i], r->values[i]));
                }
        }
 }
index a791f6558b50333e48810db1d63e99e90514a048..6c1ea4329a494b8eaf777ccc394de0447478464a 100644 (file)
@@ -133,7 +133,7 @@ private:
 template <typename T>
 void Rule::setCondition(const Field<T> &field)
 {
-       conditions[field.type()].reset(new Field<T>(field));
+       conditions[field.type()].reset(new(std::nothrow) Field<T>(field));
 }
 
 template <typename T>
index ac01e8ccad66283e7805e3fbe5f39d97bae82711..61e84c3ce9dd6bfdd46ee76f66978589ab6827a4 100644 (file)
@@ -30,7 +30,7 @@ int audit_trail_create(audit_trail_h* handle)
 
        if (client->connect() < 0) {
                delete client;
-               RET_ON_FAILURE(handle, AUDIT_TRAIL_ERROR_CONNECTION_REFUSED);
+               return AUDIT_TRAIL_ERROR_CONNECTION_REFUSED;
        }
 
        *handle = reinterpret_cast<audit_trail_h>(client);
index 85cd8a152a9b6ed6d7630dc36c2ca59b8c0aae22..a4ae03d69a3324d0b501c105fc4af552191996b5 100644 (file)
@@ -33,7 +33,7 @@ static inline Rule& GetAuditRule(void* handle)
 int audit_rule_create(audit_rule_h* handle)
 {
        RET_ON_FAILURE(handle, AUDIT_TRAIL_ERROR_INVALID_PARAMETER);
-       *handle = reinterpret_cast<audit_rule_h>(new Rule());
+       *handle = reinterpret_cast<audit_rule_h>(new(std::nothrow) Rule());
 
        return AUDIT_TRAIL_ERROR_NONE;
 }
@@ -173,9 +173,8 @@ int audit_trail_add_rule(audit_trail_h handle, audit_rule_h rule)
 
        AuditTrailContext &client = GetAuditTrailContext(handle);
        auto manager = client.createInterface<RuleManagement>();
-       auto r = GetAuditRule(rule);
 
-       manager.addRule(r.data());
+       manager.addRule(GetAuditRule(rule).data());
 
        return AUDIT_TRAIL_ERROR_NONE;
 }
@@ -187,9 +186,8 @@ int audit_trail_remove_rule(audit_trail_h handle, audit_rule_h rule)
 
        AuditTrailContext &client = GetAuditTrailContext(handle);
        auto manager = client.createInterface<RuleManagement>();
-       auto r = GetAuditRule(rule);
 
-       manager.removeRule(r.data());
+       manager.removeRule(GetAuditRule(rule).data());
 
        return AUDIT_TRAIL_ERROR_NONE;
 }
@@ -205,8 +203,15 @@ int audit_trail_foreach_rule(audit_trail_h handle,
        auto rulesData = manager.getRules();
 
        for (auto data : rulesData) {
-               callback(reinterpret_cast<audit_rule_h>(new Rule(data)),
-                                       user_data);
+               audit_rule_h rule;
+
+               try {
+                       rule = reinterpret_cast<audit_rule_h>(new Rule(data));
+               } catch(runtime::Exception &e) {
+                       continue;
+               }
+
+               callback(rule, user_data);
        }
 
        return AUDIT_TRAIL_ERROR_NONE;
index abe8dbc32de1ac94e1a0ac8f8c9f88c798062d87..32fcd59b7e1453e1fe2093713164b11641239b33 100644 (file)
@@ -263,7 +263,7 @@ int showLog(const std::string type)
        std::stringstream tok(type);
        std::string word;
 
-       audit_trail_h auditTrail;
+       audit_trail_h auditTrail = nullptr;
        audit_trail_create(&auditTrail);
        if (auditTrail == nullptr) {
                std::cerr << "Audit trail can't be usable" << std::endl;
@@ -291,7 +291,7 @@ int clearLog(const std::string type)
        std::stringstream tok(type);
        std::string word;
 
-       audit_trail_h auditTrail;
+       audit_trail_h auditTrail = nullptr;
        audit_trail_create(&auditTrail);
        if (auditTrail == nullptr) {
                std::cerr << "Audit trail can't be usable" << std::endl;
@@ -339,7 +339,7 @@ void logCallback(void* log, void *userData)
 int monitorLog()
 {
        int userCbId, systemCbId;
-       audit_trail_h auditTrail;
+       audit_trail_h auditTrail = nullptr;
        audit_trail_create(&auditTrail);
        if (auditTrail == nullptr) {
                std::cerr << "Audit trail can't be usable" << std::endl;
@@ -369,7 +369,7 @@ int monitorLog()
 
 int applyDacRules()
 {
-       audit_trail_h auditTrail;
+       audit_trail_h auditTrail = nullptr;
        audit_rule_h eaccessRule, epermRule;
 
        audit_rule_create(&eaccessRule);
@@ -604,7 +604,7 @@ void foreachRule(audit_rule_h rule, void *userData)
 
 int listAppliedRules()
 {
-       audit_trail_h auditTrail;
+       audit_trail_h auditTrail = nullptr;
        int count = 0;
 
        audit_trail_create(&auditTrail);
@@ -632,7 +632,7 @@ void foreachRuleToRemove(audit_rule_h rule, void *userData)
 
 int removeRules()
 {
-       audit_trail_h auditTrail;
+       audit_trail_h auditTrail = nullptr;
 
        audit_trail_create(&auditTrail);
        if (auditTrail == nullptr) {
index 90c89f3967ab9712f2c7d4fc09be90556568ebbe..d0ea54f8cf4566b145e5c6c944fc04d77239843c 100644 (file)
@@ -81,7 +81,7 @@ int main(int argc, char* argv[])
 
        ::memcpy(NLMSG_DATA(buf), message.c_str(), message.size());
 
-       audit_trail_h auditTrail;
+       audit_trail_h auditTrail = nullptr;
        audit_trail_create(&auditTrail);
        if (auditTrail == nullptr) {
                std::cerr << "Audit trail can't be usable" << std::endl;