Module: check_mk
Branch: master
Commit: ca5aa1c9f81bad0c5d35f078f44e032e8f9ef5ed
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=ca5aa1c9f81bad…
Author: Sven Panne <sp(a)mathias-kettner.de>
Date: Mon Apr 24 13:18:36 2017 +0200
Made several row accesses more robust.
They worked only by accident, because some structs start with a field, so a
pointer to the struct and a pointer to the field have the same value. This
is highly fragile, so we access the first field in type-safe manner now.
While we're there, use "auto" a bit more often, following Scott Meyer's
advice in "Effective Modern C++", item 5: "Prefer auto to explicit type
declarations."
Change-Id: I2dd8358046fadabd6070947db79073d5579ebf2e
---
livestatus/src/TableComments.cc | 2 +-
livestatus/src/TableDowntimes.cc | 2 +-
livestatus/src/TableHostsByGroup.cc | 2 +-
livestatus/src/TableLog.cc | 2 +-
livestatus/src/TableServices.cc | 2 +-
livestatus/src/TableServicesByGroup.cc | 2 +-
livestatus/src/TableServicesByHostGroup.cc | 2 +-
livestatus/src/TableStateHistory.cc | 2 +-
8 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/livestatus/src/TableComments.cc b/livestatus/src/TableComments.cc
index fd9959f..4db7d9d 100644
--- a/livestatus/src/TableComments.cc
+++ b/livestatus/src/TableComments.cc
@@ -103,6 +103,6 @@ void TableComments::answerQuery(Query *query) {
}
bool TableComments::isAuthorized(Row row, contact *ctc) {
- DowntimeOrComment *dtc = rowData<DowntimeOrComment>(row);
+ auto dtc = rowData<DowntimeOrComment>(row);
return is_authorized_for(ctc, dtc->_host, dtc->_service);
}
diff --git a/livestatus/src/TableDowntimes.cc b/livestatus/src/TableDowntimes.cc
index 00adaf1..29aec62 100644
--- a/livestatus/src/TableDowntimes.cc
+++ b/livestatus/src/TableDowntimes.cc
@@ -104,6 +104,6 @@ void TableDowntimes::answerQuery(Query *query) {
}
bool TableDowntimes::isAuthorized(Row row, contact *ctc) {
- DowntimeOrComment *dtc = rowData<DowntimeOrComment>(row);
+ auto dtc = rowData<DowntimeOrComment>(row);
return is_authorized_for(ctc, dtc->_host, dtc->_service);
}
diff --git a/livestatus/src/TableHostsByGroup.cc b/livestatus/src/TableHostsByGroup.cc
index b743d2c..527292e 100644
--- a/livestatus/src/TableHostsByGroup.cc
+++ b/livestatus/src/TableHostsByGroup.cc
@@ -81,7 +81,7 @@ void TableHostsByGroup::answerQuery(Query *query) {
}
bool TableHostsByGroup::isAuthorized(Row row, contact *ctc) {
- return is_authorized_for(ctc, rowData<host>(row), nullptr);
+ return is_authorized_for(ctc, &rowData<hostbygroup>(row)->_host,
nullptr);
}
Row TableHostsByGroup::findObject(const string &objectspec) {
diff --git a/livestatus/src/TableLog.cc b/livestatus/src/TableLog.cc
index 86c9f45..3966407 100644
--- a/livestatus/src/TableLog.cc
+++ b/livestatus/src/TableLog.cc
@@ -183,7 +183,7 @@ void TableLog::answerQuery(Query *query) {
}
bool TableLog::isAuthorized(Row row, contact *ctc) {
- LogEntry *entry = rowData<LogEntry>(row);
+ auto entry = rowData<LogEntry>(row);
service *svc = entry->_service;
host *hst = entry->_host;
diff --git a/livestatus/src/TableServices.cc b/livestatus/src/TableServices.cc
index a0b9698..659e585 100644
--- a/livestatus/src/TableServices.cc
+++ b/livestatus/src/TableServices.cc
@@ -524,7 +524,7 @@ void TableServices::answerQuery(Query *query) {
}
bool TableServices::isAuthorized(Row row, contact *ctc) {
- service *svc = rowData<service>(row);
+ auto svc = rowData<service>(row);
return is_authorized_for(ctc, svc->host_ptr, svc);
}
diff --git a/livestatus/src/TableServicesByGroup.cc
b/livestatus/src/TableServicesByGroup.cc
index be6128d..330f744 100644
--- a/livestatus/src/TableServicesByGroup.cc
+++ b/livestatus/src/TableServicesByGroup.cc
@@ -83,7 +83,7 @@ void TableServicesByGroup::answerQuery(Query *query) {
}
bool TableServicesByGroup::isAuthorized(Row row, contact *ctc) {
- service *svc = rowData<service>(row);
+ auto svc = &rowData<servicebygroup>(row)->_service;
return is_authorized_for(ctc, svc->host_ptr, svc);
}
diff --git a/livestatus/src/TableServicesByHostGroup.cc
b/livestatus/src/TableServicesByHostGroup.cc
index 6d53ceb..f3f06af 100644
--- a/livestatus/src/TableServicesByHostGroup.cc
+++ b/livestatus/src/TableServicesByHostGroup.cc
@@ -67,7 +67,7 @@ void TableServicesByHostGroup::answerQuery(Query *query) {
}
bool TableServicesByHostGroup::isAuthorized(Row row, contact *ctc) {
- service *svc = rowData<service>(row);
+ auto svc = &rowData<servicebyhostgroup>(row)->_service;
return is_authorized_for(ctc, svc->host_ptr, svc);
}
diff --git a/livestatus/src/TableStateHistory.cc b/livestatus/src/TableStateHistory.cc
index 8492e9a..dde51e5 100644
--- a/livestatus/src/TableStateHistory.cc
+++ b/livestatus/src/TableStateHistory.cc
@@ -958,7 +958,7 @@ void TableStateHistory::process(Query *query, HostServiceState
*hs_state) {
}
bool TableStateHistory::isAuthorized(Row row, contact *ctc) {
- HostServiceState *entry = rowData<HostServiceState>(row);
+ auto entry = rowData<HostServiceState>(row);
service *svc = entry->_service;
host *hst = entry->_host;
return (hst != nullptr || svc != nullptr) &&