From: Hugo Villeneuve Date: Wed, 5 Nov 2025 16:50:16 +0000 (-0500) Subject: tlv_eeprom: make sure key exist when deleting it X-Git-Url: http://gitweb.hugovil.com/?a=commitdiff_plain;h=ea6f9346e602cbf83dfbdda5e2db3c725a5dcd94;p=mtlv.git tlv_eeprom: make sure key exist when deleting it Signed-off-by: Hugo Villeneuve --- diff --git a/src/tlv_eeprom.c b/src/tlv_eeprom.c index 7ceae37..a1a5d96 100644 --- a/src/tlv_eeprom.c +++ b/src/tlv_eeprom.c @@ -438,20 +438,23 @@ bool tlvinfo_delete_tlv(u8 *eeprom, u8 code) struct tlvinfo_tlv *eeprom_tlv; // Find the TLV and then move all following TLVs "forward" - if (tlvinfo_find_tlv(eeprom, code, &eeprom_index)) { - eeprom_tlv = to_entry(&eeprom[eeprom_index]); - tlength = ENT_SIZE + eeprom_tlv->length; - memcpy(&eeprom[eeprom_index], &eeprom[eeprom_index + tlength], - HDR_SIZE + - be16_to_cpu(eeprom_hdr->totallen) - eeprom_index - - tlength); - eeprom_hdr->totallen = - cpu_to_be16(be16_to_cpu(eeprom_hdr->totallen) - - tlength); - update_crc(eeprom); - return true; + if (!tlvinfo_find_tlv(eeprom, code, &eeprom_index)) { + printf("ERROR: missing TLV key: $%02X\n", code); + return false; } - return false; + + eeprom_tlv = to_entry(&eeprom[eeprom_index]); + tlength = ENT_SIZE + eeprom_tlv->length; + memcpy(&eeprom[eeprom_index], &eeprom[eeprom_index + tlength], + HDR_SIZE + + be16_to_cpu(eeprom_hdr->totallen) - eeprom_index - + tlength); + eeprom_hdr->totallen = + cpu_to_be16(be16_to_cpu(eeprom_hdr->totallen) - + tlength); + update_crc(eeprom); + + return true; } /**