From a5efee4a5714f504316a01f7c8c10b6cb45cff89 Mon Sep 17 00:00:00 2001 From: Justin Thomas Date: Fri, 15 Dec 2023 20:03:32 +0000 Subject: [PATCH 1/3] check for root priveleges to access eeprom --- .../n3248te/sonic_platform/eeprom.py | 64 ++++++++++--------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/platform/broadcom/sonic-platform-modules-dell/n3248te/sonic_platform/eeprom.py b/platform/broadcom/sonic-platform-modules-dell/n3248te/sonic_platform/eeprom.py index 1c1c5c6df0..3bb88b5078 100644 --- a/platform/broadcom/sonic-platform-modules-dell/n3248te/sonic_platform/eeprom.py +++ b/platform/broadcom/sonic-platform-modules-dell/n3248te/sonic_platform/eeprom.py @@ -10,6 +10,7 @@ ############################################################################# try: import os.path + import os.geteuid from sonic_eeprom import eeprom_tlvinfo except ImportError as e: raise ImportError(str(e) + "- required module not found") @@ -25,37 +26,40 @@ class Eeprom(eeprom_tlvinfo.TlvInfoDecoder): self.eeprom_path = f super(Eeprom, self).__init__(self.eeprom_path, 0, '', True) self.eeprom_tlv_dict = dict() - try: - self.eeprom_data = self.read_eeprom() - except Exception: + + if os.geteuid() == 0: + try: + self.eeprom_data = self.read_eeprom() + except Exception: + self.eeprom_data = "N/A" + raise RuntimeError("Eeprom is not Programmed") + + eeprom = self.eeprom_data + + if not self.is_valid_tlvinfo_header(eeprom): + return + + total_length = ((eeprom[9]) << 8) | (eeprom[10]) + tlv_index = self._TLV_INFO_HDR_LEN + tlv_end = self._TLV_INFO_HDR_LEN + total_length + + while (tlv_index + 2) < len(eeprom) and tlv_index < tlv_end: + if not self.is_valid_tlv(eeprom[tlv_index:]): + break + + tlv = eeprom[tlv_index:tlv_index + 2 + + (eeprom[tlv_index + 1])] + code = "0x%02X" % ((tlv[0])) + + name, value = self.decoder(None, tlv) + + self.eeprom_tlv_dict[code] = value + if (eeprom[tlv_index]) == self._TLV_CODE_CRC_32: + break + + tlv_index += (eeprom[tlv_index+1]) + 2 + else: self.eeprom_data = "N/A" - raise RuntimeError("Eeprom is not Programmed") - - eeprom = self.eeprom_data - - if not self.is_valid_tlvinfo_header(eeprom): - return - - total_length = ((eeprom[9]) << 8) | (eeprom[10]) - tlv_index = self._TLV_INFO_HDR_LEN - tlv_end = self._TLV_INFO_HDR_LEN + total_length - - while (tlv_index + 2) < len(eeprom) and tlv_index < tlv_end: - if not self.is_valid_tlv(eeprom[tlv_index:]): - break - - tlv = eeprom[tlv_index:tlv_index + 2 - + (eeprom[tlv_index + 1])] - code = "0x%02X" % ((tlv[0])) - - - name, value = self.decoder(None, tlv) - - self.eeprom_tlv_dict[code] = value - if (eeprom[tlv_index]) == self._TLV_CODE_CRC_32: - break - - tlv_index += (eeprom[tlv_index+1]) + 2 def serial_number_str(self): """ From 34d9c7111db498b9c42c1cbe75df377dd8b76121 Mon Sep 17 00:00:00 2001 From: Justin Thomas Date: Sat, 16 Dec 2023 01:22:24 +0000 Subject: [PATCH 2/3] remove problematic import --- .../sonic-platform-modules-dell/n3248te/sonic_platform/eeprom.py | 1 - 1 file changed, 1 deletion(-) diff --git a/platform/broadcom/sonic-platform-modules-dell/n3248te/sonic_platform/eeprom.py b/platform/broadcom/sonic-platform-modules-dell/n3248te/sonic_platform/eeprom.py index 3bb88b5078..ba1fd9a6cd 100644 --- a/platform/broadcom/sonic-platform-modules-dell/n3248te/sonic_platform/eeprom.py +++ b/platform/broadcom/sonic-platform-modules-dell/n3248te/sonic_platform/eeprom.py @@ -10,7 +10,6 @@ ############################################################################# try: import os.path - import os.geteuid from sonic_eeprom import eeprom_tlvinfo except ImportError as e: raise ImportError(str(e) + "- required module not found") From 6c36a44dc321b3315b79ef99fa3dbf009fee1a8b Mon Sep 17 00:00:00 2001 From: Justin Thomas Date: Mon, 25 Mar 2024 14:08:51 -0700 Subject: [PATCH 3/3] move default eeprom_data setting --- .../n3248te/sonic_platform/eeprom.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/platform/broadcom/sonic-platform-modules-dell/n3248te/sonic_platform/eeprom.py b/platform/broadcom/sonic-platform-modules-dell/n3248te/sonic_platform/eeprom.py index ba1fd9a6cd..3e4d46810b 100644 --- a/platform/broadcom/sonic-platform-modules-dell/n3248te/sonic_platform/eeprom.py +++ b/platform/broadcom/sonic-platform-modules-dell/n3248te/sonic_platform/eeprom.py @@ -25,12 +25,12 @@ class Eeprom(eeprom_tlvinfo.TlvInfoDecoder): self.eeprom_path = f super(Eeprom, self).__init__(self.eeprom_path, 0, '', True) self.eeprom_tlv_dict = dict() + self.eeprom_data = "N/A" if os.geteuid() == 0: try: self.eeprom_data = self.read_eeprom() except Exception: - self.eeprom_data = "N/A" raise RuntimeError("Eeprom is not Programmed") eeprom = self.eeprom_data @@ -57,8 +57,6 @@ class Eeprom(eeprom_tlvinfo.TlvInfoDecoder): break tlv_index += (eeprom[tlv_index+1]) + 2 - else: - self.eeprom_data = "N/A" def serial_number_str(self): """