drivers: ethernet: adin2111: reset state when the read packet it too big Add a bounds check to prevent a chunk from being written outside the buffer. Signed-off-by: Michael Zimmermann <michael.zimmermann@sevenlab.de> (cherry picked from commit 158df8d088316cdae20816fc07703892280b2acb)
diff --git a/drivers/ethernet/eth_adin2111.c b/drivers/ethernet/eth_adin2111.c index cb781e1..72fdd4d 100644 --- a/drivers/ethernet/eth_adin2111.c +++ b/drivers/ethernet/eth_adin2111.c
@@ -310,6 +310,13 @@ len = (ftr & ADIN2111_OA_DATA_FTR_EV) ? ((ftr & ADIN2111_OA_DATA_FTR_EBO_MSK) >> ADIN2111_OA_DATA_FTR_EBO) + 1 : ctx->oa_cps; + + if (ctx->scur + len > CONFIG_ETH_ADIN2111_BUFFER_SIZE) { + ctx->scur = 0; + LOG_ERR("OA RX: Frame is larger than maximum size !"); + goto update_pos; + } + memcpy(&ctx->buf[ctx->scur], &ctx->oa_rx_buf[rx_pos], len); ctx->scur += len;