From 5465707d7713bc308af21a423a6f4fbd1821b748 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Fri, 11 Mar 2022 12:34:59 -0800 Subject: [PATCH] PDP11, VAX: Fix Coverity issues in XQ and XU devices --- PDP11/pdp11_xq.c | 6 ++++-- PDP11/pdp11_xu.c | 2 +- sim_ether.c | 3 +++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/PDP11/pdp11_xq.c b/PDP11/pdp11_xq.c index e2bbc058..b9ac5182 100644 --- a/PDP11/pdp11_xq.c +++ b/PDP11/pdp11_xq.c @@ -1940,7 +1940,9 @@ t_stat xq_process_turbo_xbdl(CTLR* xq) xq->var->xring[i].tmd2 = XQ_TMD2_RON | XQ_TMD2_TON; } - Map_ReadW (tdra+(uint32)(((char *)(&xq->var->xring[xq->var->tbindx].tmd3))-((char *)&xq->var->xring)), sizeof(xq->var->xring[xq->var->tbindx].tmd3), (uint16 *)&xq->var->xring[xq->var->tbindx].tmd3); + status = Map_ReadW (tdra+(uint32)(((char *)(&xq->var->xring[xq->var->tbindx].tmd3))-((char *)&xq->var->xring)), sizeof(xq->var->xring[xq->var->tbindx].tmd3), (uint16 *)&xq->var->xring[xq->var->tbindx].tmd3); + if (status != SCPE_OK) + return xq_nxm_error(xq); if (xq->var->xring[xq->var->tbindx].tmd3 & XQ_TMD3_OWN) xq->var->xring[i].tmd2 |= XQ_TMD2_EOR; @@ -2024,7 +2026,7 @@ t_stat xq_process_loopback(CTLR* xq, ETH_PACK* pack) ++xq->var->stats.loop; if (DBG_PCK & xq->dev->dctrl) - eth_packet_trace_ex(xq->var->etherface, response.msg, response.len, ((function == 1) ? "xq-loopbackreply" : "xq-loopbackforward"), DBG_DAT & xq->dev->dctrl, DBG_PCK); + eth_packet_trace_ex(xq->var->etherface, response.msg, response.len, "xq-loopbackforward", DBG_DAT & xq->dev->dctrl, DBG_PCK); return status; } diff --git a/PDP11/pdp11_xu.c b/PDP11/pdp11_xu.c index 38cc86e6..8343ce5a 100644 --- a/PDP11/pdp11_xu.c +++ b/PDP11/pdp11_xu.c @@ -593,7 +593,7 @@ t_stat xu_process_loopback(CTLR* xu, ETH_PACK* pack) ++xu->var->stats.loopf; if (DBG_PCK & xu->dev->dctrl) - eth_packet_trace_ex(xu->var->etherface, response.msg, response.len, ((function == 1) ? "xu-loopbackreply" : "xu-loopbackforward"), DBG_DAT & xu->dev->dctrl, DBG_PCK); + eth_packet_trace_ex(xu->var->etherface, response.msg, response.len, "xu-loopbackforward", DBG_DAT & xu->dev->dctrl, DBG_PCK); return status; } diff --git a/sim_ether.c b/sim_ether.c index 16d383db..d2d0ae0c 100644 --- a/sim_ether.c +++ b/sim_ether.c @@ -3116,6 +3116,9 @@ int write_queue_size = 1; /* make sure device exists */ if ((!dev) || (dev->eth_api == ETH_API_NONE)) return SCPE_UNATT; +if (packet->len > sizeof (packet->msg)) /* packet ovesized? */ + return SCPE_IERR; /* that's no good! */ + /* Get a buffer */ pthread_mutex_lock (&dev->writer_lock); if (NULL != (request = dev->write_buffers))