From 5d1ff4fc99a2393a83c311d0944fdfdbc99cf720 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20Sandstr=C3=B6m?= Date: Mon, 18 Mar 2024 09:38:55 +0100 Subject: [PATCH] Valdiate bit index of ethercat entries --- src/ecmcSS1SafetyGroup.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/ecmcSS1SafetyGroup.cpp b/src/ecmcSS1SafetyGroup.cpp index eac5317..d085aa4 100644 --- a/src/ecmcSS1SafetyGroup.cpp +++ b/src/ecmcSS1SafetyGroup.cpp @@ -290,6 +290,10 @@ void ecmcSS1SafetyGroup::connectToDataSources() { throw std::runtime_error( "Safety: EtherCAT entry for rampdown I/O NULL."); } + if(bitRampDown_ >= ecEntryRampDown_->getBits()) { + throw std::runtime_error( "Safety: Bit out of range for rampdown ethercat entry."); + } + // standstill slave = ecMaster_->findSlave(slaveIdStandStill_); if(!slave) { @@ -301,6 +305,9 @@ void ecmcSS1SafetyGroup::connectToDataSources() { throw std::runtime_error( "Safety: EtherCAT entry for standstill I/O NULL."); }; + if(bitStandStill_ >= ecEntryStandstill_->getBits()) { + throw std::runtime_error( "Safety: Bit out of range for standstill ethercat entry."); + } // Limit velo if( limitMaxVeloEnable_ ) { @@ -313,6 +320,10 @@ void ecmcSS1SafetyGroup::connectToDataSources() { if(!ecEntryLimitVelo_) { throw std::runtime_error( "Safety: EtherCAT entry for limit velo I/O NULL."); }; + + if(bitLimitVelo_ >= ecEntryLimitVelo_->getBits()) { + throw std::runtime_error( "Safety: Bit out of range for limit velo ethercat entry."); + } } dataSourcesLinked_ = 1;