From 21995bd4b7b070058988dde91144d23ba144beb9 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Mon, 30 Oct 2017 19:41:15 -0400 Subject: [PATCH] sensors ignore invalid failover index - fixes CID 199478 --- src/modules/sensors/voted_sensors_update.cpp | 22 +++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/modules/sensors/voted_sensors_update.cpp b/src/modules/sensors/voted_sensors_update.cpp index 97a0ea7d2a..a4b47d3823 100644 --- a/src/modules/sensors/voted_sensors_update.cpp +++ b/src/modules/sensors/voted_sensors_update.cpp @@ -922,17 +922,19 @@ bool VotedSensorsUpdate::check_failover(SensorData &sensor, const char *sensor_n } else { int failover_index = sensor.voter.failover_index(); - mavlink_log_emergency(&_mavlink_log_pub, "%s #%i fail: %s%s%s%s%s!", - sensor_name, - failover_index, - ((flags & DataValidator::ERROR_FLAG_NO_DATA) ? " OFF" : ""), - ((flags & DataValidator::ERROR_FLAG_STALE_DATA) ? " STALE" : ""), - ((flags & DataValidator::ERROR_FLAG_TIMEOUT) ? " TOUT" : ""), - ((flags & DataValidator::ERROR_FLAG_HIGH_ERRCOUNT) ? " ECNT" : ""), - ((flags & DataValidator::ERROR_FLAG_HIGH_ERRDENSITY) ? " EDNST" : "")); + if (failover_index != -1) { + mavlink_log_emergency(&_mavlink_log_pub, "%s #%i fail: %s%s%s%s%s!", + sensor_name, + failover_index, + ((flags & DataValidator::ERROR_FLAG_NO_DATA) ? " OFF" : ""), + ((flags & DataValidator::ERROR_FLAG_STALE_DATA) ? " STALE" : ""), + ((flags & DataValidator::ERROR_FLAG_TIMEOUT) ? " TOUT" : ""), + ((flags & DataValidator::ERROR_FLAG_HIGH_ERRCOUNT) ? " ECNT" : ""), + ((flags & DataValidator::ERROR_FLAG_HIGH_ERRDENSITY) ? " EDNST" : "")); - // reduce priority of failed sensor to the minimum - sensor.priority[failover_index] = 1; + // reduce priority of failed sensor to the minimum + sensor.priority[failover_index] = 1; + } } sensor.last_failover_count = sensor.voter.failover_count();