Field(FieldType type)
: _type(static_cast<unsigned int>(type)),
- _op(0)
+ _op(0), _value()
{
}
/* TODO: to be removed below constructor */
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]));
}
}
}
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>
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);
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;
}
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;
}
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;
}
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;
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;
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;
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;
int applyDacRules()
{
- audit_trail_h auditTrail;
+ audit_trail_h auditTrail = nullptr;
audit_rule_h eaccessRule, epermRule;
audit_rule_create(&eaccessRule);
int listAppliedRules()
{
- audit_trail_h auditTrail;
+ audit_trail_h auditTrail = nullptr;
int count = 0;
audit_trail_create(&auditTrail);
int removeRules()
{
- audit_trail_h auditTrail;
+ audit_trail_h auditTrail = nullptr;
audit_trail_create(&auditTrail);
if (auditTrail == nullptr) {
::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;