From aa1baf50a935fe4030baf0b325e61fc72a3f5a05 Mon Sep 17 00:00:00 2001 From: Florian Pose Date: Tue, 8 Jan 2008 15:18:30 +0000 Subject: [PATCH] Cut off category data on exceeding eeprom size limit. --- master/fsm_slave.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/master/fsm_slave.c b/master/fsm_slave.c index 091a2c55..35731752 100644 --- a/master/fsm_slave.c +++ b/master/fsm_slave.c @@ -408,6 +408,7 @@ void ec_fsm_slave_scan_state_eeprom_size(ec_fsm_slave_t *fsm /**< slave state ma EC_WARN("EEPROM size of slave %i exceeds" " %u words (0xffff limiter missing?).\n", slave->ring_position, EC_MAX_EEPROM_SIZE); + // cut off category data... slave->eeprom_size = EC_FIRST_EEPROM_CATEGORY_OFFSET * 2; goto alloc_eeprom; } @@ -509,6 +510,12 @@ void ec_fsm_slave_scan_state_eeprom_data(ec_fsm_slave_t *fsm /**< slave state ma slave->sii_mailbox_protocols = EC_READ_U16(slave->eeprom_data + 2 * 0x001C); + if (eeprom_word_size == EC_FIRST_EEPROM_CATEGORY_OFFSET) { + // eeprom does not contain category data + fsm->state = ec_fsm_slave_state_end; + return; + } + if (eeprom_word_size < EC_FIRST_EEPROM_CATEGORY_OFFSET + 1) { EC_ERR("Unexpected end of EEPROM data in slave %u:" " First category header missing.\n",