|
@@ -14604,8 +14604,11 @@ static void tg3_read_vpd(struct tg3 *tp)
|
|
|
if (j + len > block_end)
|
|
|
goto partno;
|
|
|
|
|
|
- memcpy(tp->fw_ver, &vpd_data[j], len);
|
|
|
- strncat(tp->fw_ver, " bc ", vpdlen - len - 1);
|
|
|
+ if (len >= sizeof(tp->fw_ver))
|
|
|
+ len = sizeof(tp->fw_ver) - 1;
|
|
|
+ memset(tp->fw_ver, 0, sizeof(tp->fw_ver));
|
|
|
+ snprintf(tp->fw_ver, sizeof(tp->fw_ver), "%.*s bc ", len,
|
|
|
+ &vpd_data[j]);
|
|
|
}
|
|
|
|
|
|
partno:
|