Hi,
Please find the latest report on new defect(s) introduced to Zephyr found with Coverity Scan.
17 new defect(s) introduced to Zephyr found with Coverity Scan.
6 defect(s), reported by Coverity Scan earlier, were marked fixed in the recent build analyzed by Coverity Scan.
New defect(s) Reported-by: Coverity Scan
Showing 17 of 17 defect(s)
** CID 178249: Parse warnings (PARSE_ERROR)
/samples/mpu/mem_domain_apis_test/src/main.c: 44 in ()
________________________________________________________________________________________________________
*** CID 178249: Parse warnings (PARSE_ERROR)
/samples/mpu/mem_domain_apis_test/src/main.c: 44 in ()
38 &app0_parts0,
39 &app0_parts1
40 };
41
42 K_MEM_PARTITION_DEFINE(app1_parts0, app1_buf, sizeof(app1_buf),
43 K_MEM_PARTITION_P_RW_U_RW);
CID 178249: Parse warnings (PARSE_ERROR)
expression must be an integral constant expression
44 K_MEM_PARTITION_DEFINE(app1_parts1, app0_buf, sizeof(app0_buf),
45 K_MEM_PARTITION_P_RW_U_RO);
46
47 struct k_mem_partition *app1_parts[] = {
48 &app1_parts0,
49 &app1_parts1
** CID 178248: Null pointer dereferences (REVERSE_INULL)
/subsys/net/lib/coap/coap.c: 1233 in coap_packet_get_payload()
________________________________________________________________________________________________________
*** CID 178248: Null pointer dereferences (REVERSE_INULL)
/subsys/net/lib/coap/coap.c: 1233 in coap_packet_get_payload()
1227 u16_t coap_pkt_len;
1228
1229 frag = NULL;
1230 *offset = 0xffff;
1231 *len = 0;
1232
CID 178248: Null pointer dereferences (REVERSE_INULL)
Null-checking "offset" suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
1233 if (!cpkt || !cpkt->pkt || !offset || !len) {
1234 return NULL;
1235 }
1236
1237 coap_pkt_len = get_coap_packet_len(cpkt->pkt);
1238
** CID 178247: Error handling issues (CHECKED_RETURN)
/subsys/net/lib/sockets/sockets.c: 111 in zsock_accepted_cb()
________________________________________________________________________________________________________
*** CID 178247: Error handling issues (CHECKED_RETURN)
/subsys/net/lib/sockets/sockets.c: 111 in zsock_accepted_cb()
105
106 static void zsock_accepted_cb(struct net_context *new_ctx,
107 struct sockaddr *addr, socklen_t addrlen,
108 int status, void *user_data) {
109 struct net_context *parent = user_data;
110
CID 178247: Error handling issues (CHECKED_RETURN)
Calling "net_context_recv" without checking return value (as is done elsewhere 21 out of 26 times).
111 net_context_recv(new_ctx, zsock_received_cb, K_NO_WAIT, NULL);
112 k_fifo_init(&new_ctx->recv_q);
113
114 NET_DBG("parent=%p, ctx=%p, st=%d", parent, new_ctx, status);
115
116 k_fifo_put(&parent->accept_q, new_ctx);
** CID 178246: Error handling issues (CHECKED_RETURN)
/subsys/net/lib/app/client.c: 479 in _app_connected()
________________________________________________________________________________________________________
*** CID 178246: Error handling issues (CHECKED_RETURN)
/subsys/net/lib/app/client.c: 479 in _app_connected()
473 #if defined(CONFIG_NET_APP_TLS) || defined(CONFIG_NET_APP_DTLS)
474 if (ctx->is_tls) {
475 k_sem_give(&ctx->client.connect_wait);
476 }
477 #endif
478
CID 178246: Error handling issues (CHECKED_RETURN)
Calling "net_context_recv" without checking return value (as is done elsewhere 21 out of 26 times).
479 net_context_recv(net_ctx, ctx->recv_cb, K_NO_WAIT, ctx);
480
481 #if defined(CONFIG_NET_APP_TLS) || defined(CONFIG_NET_APP_DTLS)
482 if (ctx->is_tls) {
483 /* If we have TLS connection, the connect cb is called
484 * after TLS handshakes are done.
** CID 178245: Parse warnings (PARSE_ERROR)
/samples/mpu/mem_domain_apis_test/src/main.c: 42 in ()
________________________________________________________________________________________________________
*** CID 178245: Parse warnings (PARSE_ERROR)
/samples/mpu/mem_domain_apis_test/src/main.c: 42 in ()
36
37 struct k_mem_partition *app0_parts[] = {
38 &app0_parts0,
39 &app0_parts1
40 };
41
CID 178245: Parse warnings (PARSE_ERROR)
expression must be an integral constant expression
42 K_MEM_PARTITION_DEFINE(app1_parts0, app1_buf, sizeof(app1_buf),
43 K_MEM_PARTITION_P_RW_U_RW);
44 K_MEM_PARTITION_DEFINE(app1_parts1, app0_buf, sizeof(app0_buf),
45 K_MEM_PARTITION_P_RW_U_RO);
46
47 struct k_mem_partition *app1_parts[] = {
** CID 178244: Error handling issues (CHECKED_RETURN)
/subsys/net/lib/http/http_server.c: 800 in accept_cb()
________________________________________________________________________________________________________
*** CID 178244: Error handling issues (CHECKED_RETURN)
/subsys/net/lib/http/http_server.c: 800 in accept_cb()
794 }
795
796 http_ctx->req.net_ctx = net_ctx;
797
798 new_client(http_ctx, net_ctx, addr);
799
CID 178244: Error handling issues (CHECKED_RETURN)
Calling "net_context_recv" without checking return value (as is done elsewhere 21 out of 26 times).
800 net_context_recv(net_ctx, http_ctx->recv_cb, K_NO_WAIT, http_ctx);
801 }
802
803 static int set_net_ctx(struct http_server_ctx *http_ctx,
804 struct net_context *ctx,
805 struct sockaddr *addr,
** CID 178243: Error handling issues (CHECKED_RETURN)
/drivers/ethernet/eth_enc28j60.c: 88 in eth_enc28j60_read_reg()
________________________________________________________________________________________________________
*** CID 178243: Error handling issues (CHECKED_RETURN)
/drivers/ethernet/eth_enc28j60.c: 88 in eth_enc28j60_read_reg()
82 tx_size = 3;
83 }
84
85 tx_buf[0] = ENC28J60_SPI_RCR | (reg_addr & 0xFF);
86 tx_buf[1] = 0x0;
87
CID 178243: Error handling issues (CHECKED_RETURN)
Calling "spi_transceive" without checking return value (as is done elsewhere 20 out of 25 times).
88 spi_transceive(context->spi, tx_buf, tx_size, tx_buf, tx_size);
89
90 *value = tx_buf[tx_size - 1];
91
92 k_sem_give(&context->spi_sem);
93 }
** CID 178242: Parse warnings (PARSE_ERROR)
/samples/mpu/mem_domain_apis_test/src/main.c: 34 in ()
________________________________________________________________________________________________________
*** CID 178242: Parse warnings (PARSE_ERROR)
/samples/mpu/mem_domain_apis_test/src/main.c: 34 in ()
28 /* the start address of the MPU region needs to align with its size */
29 u8_t __aligned(32) app0_buf[32];
30 u8_t __aligned(32) app1_buf[32];
31
32 K_MEM_PARTITION_DEFINE(app0_parts0, app0_buf, sizeof(app0_buf),
33 K_MEM_PARTITION_P_RW_U_RW);
CID 178242: Parse warnings (PARSE_ERROR)
expression must be an integral constant expression
34 K_MEM_PARTITION_DEFINE(app0_parts1, app1_buf, sizeof(app1_buf),
35 K_MEM_PARTITION_P_RW_U_RO);
36
37 struct k_mem_partition *app0_parts[] = {
38 &app0_parts0,
39 &app0_parts1
** CID 178241: (CHECKED_RETURN)
/drivers/ethernet/eth_enc28j60.c: 174 in eth_enc28j60_read_mem()
/drivers/ethernet/eth_enc28j60.c: 185 in eth_enc28j60_read_mem()
________________________________________________________________________________________________________
*** CID 178241: (CHECKED_RETURN)
/drivers/ethernet/eth_enc28j60.c: 174 in eth_enc28j60_read_mem()
168
169 k_sem_take(&context->spi_sem, K_FOREVER);
170
171 for (int i = 0; i < num_segments;
172 ++i, data_buffer += MAX_BUFFER_LENGTH) {
173 context->mem_buf[0] = ENC28J60_SPI_RBM;
CID 178241: (CHECKED_RETURN)
Calling "spi_transceive" without checking return value (as is done elsewhere 20 out of 25 times).
174 spi_transceive(context->spi,
175 context->mem_buf, MAX_BUFFER_LENGTH + 1,
176 context->mem_buf, MAX_BUFFER_LENGTH + 1);
177 if (data_buffer) {
178 memcpy(data_buffer, context->mem_buf + 1,
179 MAX_BUFFER_LENGTH);
/drivers/ethernet/eth_enc28j60.c: 185 in eth_enc28j60_read_mem()
179 MAX_BUFFER_LENGTH);
180 }
181 }
182
183 if (num_remaining > 0) {
184 context->mem_buf[0] = ENC28J60_SPI_RBM;
CID 178241: (CHECKED_RETURN)
Calling "spi_transceive" without checking return value (as is done elsewhere 20 out of 25 times).
185 spi_transceive(context->spi,
186 context->mem_buf, num_remaining + 1,
187 context->mem_buf, num_remaining + 1);
188 if (data_buffer) {
189 memcpy(data_buffer, context->mem_buf + 1,
190 num_remaining);
** CID 178240: Error handling issues (CHECKED_RETURN)
/drivers/ethernet/eth_enc28j60.c: 46 in eth_enc28j60_set_bank()
________________________________________________________________________________________________________
*** CID 178240: Error handling issues (CHECKED_RETURN)
/drivers/ethernet/eth_enc28j60.c: 46 in eth_enc28j60_set_bank()
40
41 k_sem_take(&context->spi_sem, K_FOREVER);
42
43 tx_buf[0] = ENC28J60_SPI_RCR | ENC28J60_REG_ECON1;
44 tx_buf[1] = 0x0;
45
CID 178240: Error handling issues (CHECKED_RETURN)
Calling "spi_transceive" without checking return value (as is done elsewhere 20 out of 25 times).
46 spi_transceive(context->spi, tx_buf, 2, tx_buf, 2);
47
48 tx_buf[0] = ENC28J60_SPI_WCR | ENC28J60_REG_ECON1;
49 tx_buf[1] = (tx_buf[1] & 0xFC) | ((reg_addr >> 8) & 0x0F);
50
51 spi_write(context->spi, tx_buf, 2);
** CID 178239: (FORWARD_NULL)
/tests/net/app/src/main.c: 192 in iface_setup()
/tests/net/app/src/main.c: 202 in iface_setup()
________________________________________________________________________________________________________
*** CID 178239: (FORWARD_NULL)
/tests/net/app/src/main.c: 192 in iface_setup()
186 DBG("Cannot add IPv6 address %s\n",
187 net_sprint_ipv6_addr(&my_addr1));
188 zassert_not_null(ifaddr, "addr1");
189 }
190
191 /* For testing purposes we need to set the adddresses preferred */
CID 178239: (FORWARD_NULL)
Dereferencing null pointer "ifaddr".
192 ifaddr->addr_state = NET_ADDR_PREFERRED;
193
194 ifaddr = net_if_ipv6_addr_add(iface1, &ll_addr,
195 NET_ADDR_MANUAL, 0);
196 if (!ifaddr) {
197 DBG("Cannot add IPv6 address %s\n",
/tests/net/app/src/main.c: 202 in iface_setup()
196 if (!ifaddr) {
197 DBG("Cannot add IPv6 address %s\n",
198 net_sprint_ipv6_addr(&ll_addr));
199 zassert_not_null(ifaddr, "ll_addr");
200 }
201
CID 178239: (FORWARD_NULL)
Dereferencing null pointer "ifaddr".
202 ifaddr->addr_state = NET_ADDR_PREFERRED;
203
204 net_ipv6_addr_create(&in6addr_mcast, 0xff02, 0, 0, 0, 0, 0, 0, 0x0001);
205
206 maddr = net_if_ipv6_maddr_add(iface1, &in6addr_mcast);
207 if (!maddr) {
** CID 178238: Parse warnings (PARSE_ERROR)
/samples/mpu/mem_domain_apis_test/src/main.c: 32 in ()
________________________________________________________________________________________________________
*** CID 178238: Parse warnings (PARSE_ERROR)
/samples/mpu/mem_domain_apis_test/src/main.c: 32 in ()
26 struct k_mem_domain app_domain[2];
27
28 /* the start address of the MPU region needs to align with its size */
29 u8_t __aligned(32) app0_buf[32];
30 u8_t __aligned(32) app1_buf[32];
31
CID 178238: Parse warnings (PARSE_ERROR)
expression must be an integral constant expression
32 K_MEM_PARTITION_DEFINE(app0_parts0, app0_buf, sizeof(app0_buf),
33 K_MEM_PARTITION_P_RW_U_RW);
34 K_MEM_PARTITION_DEFINE(app0_parts1, app1_buf, sizeof(app1_buf),
35 K_MEM_PARTITION_P_RW_U_RO);
36
37 struct k_mem_partition *app0_parts[] = {
** CID 178237: Memory - corruptions (OVERRUN)
/drivers/ieee802154/ieee802154_mcr20a.c: 218 in _mcr20a_write_burst()
________________________________________________________________________________________________________
*** CID 178237: Memory - corruptions (OVERRUN)
/drivers/ieee802154/ieee802154_mcr20a.c: 218 in _mcr20a_write_burst()
212 spi->cmd_buf[0] = MCR20A_REG_WRITE | addr;
213 memcpy(&spi->cmd_buf[1], data_buf, len);
214 len += 1;
215 } else {
216 spi->cmd_buf[0] = MCR20A_IAR_INDEX | MCR20A_REG_WRITE;
217 spi->cmd_buf[1] = addr | MCR20A_REG_WRITE;
CID 178237: Memory - corruptions (OVERRUN)
Overrunning buffer pointed to by "&spi->cmd_buf[2]" of 12 bytes by passing it to a function which accesses it at byte offset 12 using argument "len" (which evaluates to 11). [Note: The source code implementation of the function has been
overridden by a builtin model.]
218 memcpy(&spi->cmd_buf[2], data_buf, len);
219 len += 2;
220 }
221
222 spi_slave_select(spi->dev, spi->slave);
223 retval = (spi_write(spi->dev, spi->cmd_buf, len) == 0);
** CID 178236: Memory - corruptions (OVERRUN)
/drivers/ieee802154/ieee802154_mcr20a.c: 260 in _mcr20a_read_burst()
________________________________________________________________________________________________________
*** CID 178236: Memory - corruptions (OVERRUN)
/drivers/ieee802154/ieee802154_mcr20a.c: 260 in _mcr20a_read_burst()
254 return 0;
255 }
256
257 if (dreg) {
258 memcpy(data_buf, &spi->cmd_buf[1], len - 1);
259 } else {
CID 178236: Memory - corruptions (OVERRUN)
Overrunning buffer pointed to by "&spi->cmd_buf[2]" of 12 bytes by passing it to a function which accesses it at byte offset 12 using argument "len - 2" (which evaluates to 11). [Note: The source code implementation of the function has
been overridden by a builtin model.]
260 memcpy(data_buf, &spi->cmd_buf[2], len - 2);
261 }
262
263 k_sem_give(&spi->spi_sem);
264
265 return 1;
** CID 178235: Null pointer dereferences (REVERSE_INULL)
/subsys/net/lib/dns/mdns_responder.c: 241 in send_response()
________________________________________________________________________________________________________
*** CID 178235: Null pointer dereferences (REVERSE_INULL)
/subsys/net/lib/dns/mdns_responder.c: 241 in send_response()
235
236 } else {
237 /* TODO: support also service PTRs */
238 return -EINVAL;
239 }
240
CID 178235: Null pointer dereferences (REVERSE_INULL)
Null-checking "reply" suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
241 if (!reply) {
242 return -ENOMEM;
243 }
244
245 ret = net_context_sendto(reply, &dst, dst_len, NULL, K_NO_WAIT,
246 NULL, NULL);
** CID 178234: Null pointer dereferences (REVERSE_INULL)
/subsys/net/lib/coap/coap.c: 1233 in coap_packet_get_payload()
________________________________________________________________________________________________________
*** CID 178234: Null pointer dereferences (REVERSE_INULL)
/subsys/net/lib/coap/coap.c: 1233 in coap_packet_get_payload()
1227 u16_t coap_pkt_len;
1228
1229 frag = NULL;
1230 *offset = 0xffff;
1231 *len = 0;
1232
CID 178234: Null pointer dereferences (REVERSE_INULL)
Null-checking "len" suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
1233 if (!cpkt || !cpkt->pkt || !offset || !len) {
1234 return NULL;
1235 }
1236
1237 coap_pkt_len = get_coap_packet_len(cpkt->pkt);
1238
** CID 178233: Null pointer dereferences (REVERSE_INULL)
/samples/net/echo_client/src/tcp.c: 194 in compare_tcp_data()
________________________________________________________________________________________________________
*** CID 178233: Null pointer dereferences (REVERSE_INULL)
/samples/net/echo_client/src/tcp.c: 194 in compare_tcp_data()
188 * length is directly the fragment len.
189 */
190 len = frag->len - (ptr - frag->data);
191
192 start = lorem_ipsum + received_len;
193
CID 178233: Null pointer dereferences (REVERSE_INULL)
Null-checking "frag" suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
194 while (frag) {
195 if (memcmp(ptr, start + pos, len)) {
196 NET_DBG("Invalid data received");
197 return false;
198 }
199
________________________________________________________________________________________________________
To view the defects in Coverity Scan visit,
https://u2389337.ct.sendgrid.net/wf/click?upn=08onrYu34A-2BWcWUl-2F-2BfV0V05UPxvVjWch-2Bd2MGckcRbO5jMuM3qcdgkQ-2B8GeSLDbY-2BGxhHXRVXXhN9J-2FGl-2FrBg-3D-3D_qb0Uj4AheYo18oR3ufs7U2EqDpE-2BCuzW5lXxy9dw9-2BCYGJAjGVBvdMSEIXid9MGVLnYaCxQWNCEO6x0llsKktGNllYqBFTSj2s3BUW8QUrdvl233u8LuFGWpOgSu2rc-2BvqdYiOVm0hPLHncFd4V-2F9JHMSM1BZTFpzNZeXoef3wWEMVzKSvGT6UGq3Ro61uQfOZk28XrY3pDBluqFe6LAeaHu5vYnVkhOARe-2BxPHSkKM-3D
To manage Coverity Scan email notifications for "anas.nashif@...", click
https://u2389337.ct.sendgrid.net/wf/click?upn=08onrYu34A-2BWcWUl-2F-2BfV0V05UPxvVjWch-2Bd2MGckcRbVDbis712qZDP-2FA8y06Nq4QuJ4n4mXbeIpNhS8BGwxNLHj-2BTxeFwdI3SDDdsncH-2Bz9xw1m0wMt3vy-2F0hadYzJBea4I9eUVx23T6CU82-2BIxqn54S4Kugeb6uiTfRhIn290-3D_qb0Uj4AheYo18oR3ufs7U2EqDpE-2BCuzW5lXxy9dw9-2BCYGJAjGVBvdMSEIXid9MGVJ6piO1tzXPVgJVeRiqIumtvn4xp-2FsSSqAXdL4A3zXUPunFRRDa8MYZonXqSTke1mxlt6PHAxaGm6uFhYWiI7GnJ2TrKZIQU-2Bd3wMUQD-2FpCWVJwmYlOLvhtcJ2f-2BhdG03bLQdH57Of3UzdhGrU-2B4hZzPeOMladuanpRCD-2FHbkM-2Bs-3D