From 07256d36edc22defecf0ba0883902329a43bfa54 Mon Sep 17 00:00:00 2001 From: richard_kuo Date: Thu, 3 Sep 2026 14:34:32 +0800 Subject: [PATCH] onlp/sysi: Make the ONIE IDPROM buffer pass strict_string_checks onlp_sysi_onie_data_get() allocated exactly 256 bytes and filled every one of them with raw IDPROM content, so the buffer handed to is_valid_tlvinfo_header__() is not guaranteed to be NUL-terminated. strcmp() requires a terminated string, so AddressSanitizer with strict_string_checks=1 reports a heap-buffer-overflow on that call whenever the device carries no zero byte at all - an erased or corrupted IDPROM. Allocating one extra zero byte makes the same run come back clean. Real hardware is not affected: on a programmed IDPROM totallen sits at offsets 9-10, so data[9] is 0x00 for any payload below 256 bytes, and the comparison resolves at index 7 or earlier. The change is about satisfying the strcmp contract under strict checking, not about a failure observed in the field. The read length is deliberately left at 256, so the decoded content and the *size == len guard behave exactly as before. - introduce a local const int len instead of repeating the literal 256 - derive the i2c word-read loop bound from len (len / 2) on as7716-24xc, as7716-32x and as7816-64x, and the byte-read bound on as9516-32d - covers 34 platforms; no behavioural change on any of them --- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 9 +++++---- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 2 +- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 19 ++++++++++--------- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../x86_64_accton_as9817_64/module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- .../module/src/sysi.c | 7 ++++--- 34 files changed, 140 insertions(+), 107 deletions(-) diff --git a/packages/platforms/accton/x86-64/as4222-28pe/onlp/builds/x86_64_accton_as4222_28pe/module/src/sysi.c b/packages/platforms/accton/x86-64/as4222-28pe/onlp/builds/x86_64_accton_as4222_28pe/module/src/sysi.c index c7587a4c5..229620aa5 100755 --- a/packages/platforms/accton/x86-64/as4222-28pe/onlp/builds/x86_64_accton_as4222_28pe/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as4222-28pe/onlp/builds/x86_64_accton_as4222_28pe/module/src/sysi.c @@ -61,10 +61,11 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sysi.c b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sysi.c index c4eeef736..71a715c95 100755 --- a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/sysi.c @@ -53,10 +53,11 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sysi.c b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sysi.c index 941c95010..3f0045358 100644 --- a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/sysi.c @@ -49,10 +49,11 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as5822-54x/onlp/builds/x86_64_accton_as5822_54x/module/src/sysi.c b/packages/platforms/accton/x86-64/as5822-54x/onlp/builds/x86_64_accton_as5822_54x/module/src/sysi.c index d319105d5..5753d5890 100644 --- a/packages/platforms/accton/x86-64/as5822-54x/onlp/builds/x86_64_accton_as5822_54x/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as5822-54x/onlp/builds/x86_64_accton_as5822_54x/module/src/sysi.c @@ -56,9 +56,10 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sysi.c b/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sysi.c index e297c3453..14b57a53f 100644 --- a/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as5835-54t/onlp/builds/x86_64_accton_as5835_54t/module/src/sysi.c @@ -57,9 +57,10 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sysi.c b/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sysi.c index 3298a8176..5ec8d0cfd 100644 --- a/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as5835-54x/onlp/builds/x86_64_accton_as5835_54x/module/src/sysi.c @@ -57,9 +57,10 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as5912-54xk/onlp/builds/x86_64_accton_as5912_54xk/module/src/sysi.c b/packages/platforms/accton/x86-64/as5912-54xk/onlp/builds/x86_64_accton_as5912_54xk/module/src/sysi.c index 7aa737e0e..925649699 100644 --- a/packages/platforms/accton/x86-64/as5912-54xk/onlp/builds/x86_64_accton_as5912_54xk/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as5912-54xk/onlp/builds/x86_64_accton_as5912_54xk/module/src/sysi.c @@ -55,9 +55,10 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sysi.c b/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sysi.c index 2b41998e1..7247ff9f2 100644 --- a/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as5915-18x/onlp/builds/x86_64_accton_as5915_18x/module/src/sysi.c @@ -55,9 +55,10 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as5916-26xb/onlp/builds/x86_64_accton_as5916_26xb/module/src/sysi.c b/packages/platforms/accton/x86-64/as5916-26xb/onlp/builds/x86_64_accton_as5916_26xb/module/src/sysi.c index d8c9f10d6..cdbd6527e 100644 --- a/packages/platforms/accton/x86-64/as5916-26xb/onlp/builds/x86_64_accton_as5916_26xb/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as5916-26xb/onlp/builds/x86_64_accton_as5916_26xb/module/src/sysi.c @@ -46,9 +46,10 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sysi.c b/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sysi.c index 44bf47a11..d53a67914 100644 --- a/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as5916-54x/onlp/builds/x86_64_accton_as5916_54x/module/src/sysi.c @@ -55,9 +55,10 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as5916-54xk/onlp/builds/x86_64_accton_as5916_54xk/module/src/sysi.c b/packages/platforms/accton/x86-64/as5916-54xk/onlp/builds/x86_64_accton_as5916_54xk/module/src/sysi.c index ec29e666d..ca07192ec 100644 --- a/packages/platforms/accton/x86-64/as5916-54xk/onlp/builds/x86_64_accton_as5916_54xk/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as5916-54xk/onlp/builds/x86_64_accton_as5916_54xk/module/src/sysi.c @@ -55,7 +55,8 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); char* idprom_path = NULL; int ret = ONLP_STATUS_OK; @@ -66,8 +67,8 @@ onlp_sysi_onie_data_get(uint8_t** data, int* size) idprom_path = (ONLP_STATUS_OK == ret) ? IDPROM_PATH_1 : IDPROM_PATH_2; - if(onlp_file_read(rdata, 256, size, idprom_path) == ONLP_STATUS_OK) { - if(*size == 256) { + if(onlp_file_read(rdata, len, size, idprom_path) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sysi.c b/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sysi.c index 86e8f7fa5..d05824d57 100755 --- a/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as5916-54xks/onlp/builds/x86_64_accton_as5916_54xks/module/src/sysi.c @@ -46,9 +46,10 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sysi.c b/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sysi.c index 1a518e963..9391dbced 100755 --- a/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as5916-54xl/onlp/builds/x86_64_accton_as5916_54xl/module/src/sysi.c @@ -46,9 +46,10 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as7315-27xb/onlp/builds/x86_64_accton_as7315_27xb/module/src/sysi.c b/packages/platforms/accton/x86-64/as7315-27xb/onlp/builds/x86_64_accton_as7315_27xb/module/src/sysi.c index 1eafed0c5..a325d498a 100644 --- a/packages/platforms/accton/x86-64/as7315-27xb/onlp/builds/x86_64_accton_as7315_27xb/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as7315-27xb/onlp/builds/x86_64_accton_as7315_27xb/module/src/sysi.c @@ -47,9 +47,10 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as7316-26xb/onlp/builds/x86_64_accton_as7316_26xb/module/src/sysi.c b/packages/platforms/accton/x86-64/as7316-26xb/onlp/builds/x86_64_accton_as7316_26xb/module/src/sysi.c index 950d2864c..debb746f2 100644 --- a/packages/platforms/accton/x86-64/as7316-26xb/onlp/builds/x86_64_accton_as7316_26xb/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as7316-26xb/onlp/builds/x86_64_accton_as7316_26xb/module/src/sysi.c @@ -46,9 +46,10 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sysi.c b/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sysi.c index 51b9e537f..1cd139146 100755 --- a/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as7326-56x/onlp/builds/x86_64_accton_as7326_56x/module/src/sysi.c @@ -69,7 +69,7 @@ int onlp_sysi_onie_data_get(uint8_t** data, int* size) { const int len = 256; - uint8_t* rdata = aim_zmalloc(len); + uint8_t* rdata = aim_zmalloc(len + 1); char *paths[] = {IDPROM_PATH_2, IDPROM_PATH_1}; int ret = ONLP_STATUS_OK; int i; diff --git a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sysi.c b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sysi.c index 8e0b8ad55..bf588b857 100644 --- a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sysi.c @@ -51,9 +51,10 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sysi.c b/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sysi.c index e08f136da..3cbbe1bae 100644 --- a/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as7712-32x/onlp/builds/x86_64_accton_as7712_32x/module/src/sysi.c @@ -61,9 +61,10 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as7716-24xc/onlp/builds/x86_64_accton_as7716_24xc/module/src/sysi.c b/packages/platforms/accton/x86-64/as7716-24xc/onlp/builds/x86_64_accton_as7716_24xc/module/src/sysi.c index 5763caef1..c34aea1e8 100644 --- a/packages/platforms/accton/x86-64/as7716-24xc/onlp/builds/x86_64_accton_as7716_24xc/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as7716-24xc/onlp/builds/x86_64_accton_as7716_24xc/module/src/sysi.c @@ -82,9 +82,10 @@ onlp_sysi_onie_data_get(uint8_t** data, int* size) { int ret = ONLP_STATUS_OK; int i = 0; - uint8_t* rdata = aim_zmalloc(256); + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); - for (i = 0; i < 128; i++) { + for (i = 0; i < len / 2; i++) { ret = onlp_i2c_readw(0, 0x56, i*2, ONLP_I2C_F_FORCE); if (ret < 0) { aim_free(rdata); @@ -96,7 +97,7 @@ onlp_sysi_onie_data_get(uint8_t** data, int* size) rdata[i*2+1] = (ret >> 8) & 0xff; } - *size = 256; + *size = len; *data = rdata; return ONLP_STATUS_OK; diff --git a/packages/platforms/accton/x86-64/as7716-32x/onlp/builds/x86_64_accton_as7716_32x/module/src/sysi.c b/packages/platforms/accton/x86-64/as7716-32x/onlp/builds/x86_64_accton_as7716_32x/module/src/sysi.c index 93502cbbe..6cb2732c3 100755 --- a/packages/platforms/accton/x86-64/as7716-32x/onlp/builds/x86_64_accton_as7716_32x/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as7716-32x/onlp/builds/x86_64_accton_as7716_32x/module/src/sysi.c @@ -55,9 +55,10 @@ onlp_sysi_onie_data_get(uint8_t** data, int* size) { int ret = ONLP_STATUS_OK; int i = 0; - uint8_t* rdata = aim_zmalloc(256); + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); - for (i = 0; i < 128; i++) { + for (i = 0; i < len / 2; i++) { ret = onlp_i2c_readw(0, 0x56, i*2, ONLP_I2C_F_FORCE); if (ret < 0) { aim_free(rdata); @@ -69,7 +70,7 @@ onlp_sysi_onie_data_get(uint8_t** data, int* size) rdata[i*2+1] = (ret >> 8) & 0xff; } - *size = 256; + *size = len; *data = rdata; return ONLP_STATUS_OK; diff --git a/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sysi.c b/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sysi.c index 79d796f82..22b64c496 100755 --- a/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as7726-32x/onlp/builds/x86_64_accton_as7726_32x/module/src/sysi.c @@ -62,10 +62,11 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sysi.c b/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sysi.c index 0d91972cb..be1356714 100755 --- a/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as7816-64x/onlp/builds/x86_64_accton_as7816_64x/module/src/sysi.c @@ -60,9 +60,10 @@ onlp_sysi_onie_data_get(uint8_t** data, int* size) { int ret = ONLP_STATUS_OK; int i = 0; - uint8_t* rdata = aim_zmalloc(256); + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); - for (i = 0; i < 128; i++) { + for (i = 0; i < len / 2; i++) { ret = onlp_i2c_readw(0, 0x56, i*2, ONLP_I2C_F_FORCE); if (ret < 0) { aim_free(rdata); @@ -74,7 +75,7 @@ onlp_sysi_onie_data_get(uint8_t** data, int* size) rdata[i*2+1] = (ret >> 8) & 0xff; } - *size = 256; + *size = len; *data = rdata; return ONLP_STATUS_OK; diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sysi.c b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sysi.c index b18026732..17e5945c5 100644 --- a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/sysi.c @@ -54,10 +54,11 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as7926-40xke/onlp/builds/x86_64_accton_as7926_40xke/module/src/sysi.c b/packages/platforms/accton/x86-64/as7926-40xke/onlp/builds/x86_64_accton_as7926_40xke/module/src/sysi.c index ba59b06e7..ecd6306d4 100755 --- a/packages/platforms/accton/x86-64/as7926-40xke/onlp/builds/x86_64_accton_as7926_40xke/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as7926-40xke/onlp/builds/x86_64_accton_as7926_40xke/module/src/sysi.c @@ -57,9 +57,10 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as7926-80xk/onlp/builds/x86_64_accton_as7926_80xk/module/src/sysi.c b/packages/platforms/accton/x86-64/as7926-80xk/onlp/builds/x86_64_accton_as7926_80xk/module/src/sysi.c index bd6c28021..74ad439cf 100644 --- a/packages/platforms/accton/x86-64/as7926-80xk/onlp/builds/x86_64_accton_as7926_80xk/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as7926-80xk/onlp/builds/x86_64_accton_as7926_80xk/module/src/sysi.c @@ -57,9 +57,10 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sysi.c b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sysi.c index 419695a71..48eb5a4ad 100644 --- a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/sysi.c @@ -54,10 +54,11 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sysi.c b/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sysi.c index 52432ff4d..969703a63 100644 --- a/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sysi.c @@ -54,10 +54,11 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as9516-32d/onlp/builds/x86_64_accton_as9516_32d/module/src/sysi.c b/packages/platforms/accton/x86-64/as9516-32d/onlp/builds/x86_64_accton_as9516_32d/module/src/sysi.c index 018da90bf..cca502725 100644 --- a/packages/platforms/accton/x86-64/as9516-32d/onlp/builds/x86_64_accton_as9516_32d/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as9516-32d/onlp/builds/x86_64_accton_as9516_32d/module/src/sysi.c @@ -61,7 +61,8 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); int fail_cnt, rd_size, wr_size, i; uint8_t pca9548_chan; uint8_t byte_buf[128]; @@ -119,7 +120,7 @@ onlp_sysi_onie_data_get(uint8_t** data, int* size) mux_chn=0; i2c_addr = 0x51; rd_size = 1; - for(i=0; i<256; i++) + for(i=0; icpld_versions); } -/*Read fanN_direction=1: The air flow of Fan6 is ˇ§AFI-Back to Frontˇ¨ - * 0: The air flow of Fan6 is ˇ§AFO-Front to backˇ¨ +/*Read fanN_direction=1: The air flow of Fan6 is "AFI-Back to Front" + * 0: The air flow of Fan6 is "AFO-Front to back" */ /* Thermal policy: diff --git a/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sysi.c b/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sysi.c index c0b0eedcd..2ce59d877 100644 --- a/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as9726-32d/onlp/builds/x86_64_accton_as9726_32d/module/src/sysi.c @@ -57,10 +57,11 @@ const char* onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); - if (onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if (*size == 256) { + if (onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if (*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sysi.c b/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sysi.c index bc0237aed..7ed68e5d4 100644 --- a/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as9817-64-nb/src/x86_64_accton_as9817_64_nb/module/src/sysi.c @@ -137,9 +137,10 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if (onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if (onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sysi.c b/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sysi.c index fff27d26a..1c3325c4e 100644 --- a/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as9817-64/src/x86_64_accton_as9817_64/module/src/sysi.c @@ -137,9 +137,10 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if (onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if (onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sysi.c b/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sysi.c index 0b5a013e2..f14efdf46 100644 --- a/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as9926-24d/onlp/builds/x86_64_accton_as9926_24d/module/src/sysi.c @@ -57,9 +57,10 @@ onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; } diff --git a/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sysi.c b/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sysi.c index 68f4ef60c..69ea9f242 100644 --- a/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/sysi.c @@ -44,9 +44,10 @@ const char* onlp_sysi_platform_get(void) int onlp_sysi_onie_data_get(uint8_t** data, int* size) { - uint8_t* rdata = aim_zmalloc(256); - if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) { - if(*size == 256) { + const int len = 256; + uint8_t* rdata = aim_zmalloc(len + 1); + if(onlp_file_read(rdata, len, size, IDPROM_PATH) == ONLP_STATUS_OK) { + if(*size == len) { *data = rdata; return ONLP_STATUS_OK; }