tests: net: socket: Add recvfrom addr validation

Add address length validation and expected source address
checks in packet socket tests.

Signed-off-by: Christoph Seitz <christoph.seitz@infineon.com>
This commit is contained in:
Christoph Seitz 2025-03-06 11:19:42 +01:00 committed by Benjamin Cabé
parent 0e4cf09b55
commit 5340fa49a7

View File

@ -337,8 +337,13 @@ ZTEST(socket_packet, test_packet_sockets_dgram)
-errno);
k_msleep(10); /* Let the packet enter the system */
memset(&src, 0, sizeof(src));
ret = zsock_recvfrom(sock2, data_to_receive, sizeof(data_to_receive), 0,
(struct sockaddr *)&src, &addrlen);
zassert_equal(ret, -1, "Received something (%d)", ret);
zassert_equal(errno, EAGAIN, "Wrong errno (%d)", errno);
memset(&src, 0, sizeof(src));
errno = 0;
iter = 0;
do {
@ -352,6 +357,21 @@ ZTEST(socket_packet, test_packet_sockets_dgram)
"Cannot receive all data (%d vs %zd) (%d)",
ret, sizeof(data_to_send), -errno);
zassert_equal(addrlen, sizeof(struct sockaddr_ll),
"Invalid address length (%d)", addrlen);
struct sockaddr_ll src_expected = {
.sll_family = AF_PACKET,
.sll_protocol = dst.sll_protocol,
.sll_ifindex = net_if_get_by_iface(ud.first),
.sll_pkttype = PACKET_OTHERHOST,
.sll_hatype = ARPHRD_ETHER,
.sll_halen = sizeof(lladdr2),
.sll_addr = {0},
};
memcpy(&src_expected.sll_addr, lladdr2, ARRAY_SIZE(lladdr2));
zassert_mem_equal(&src, &src_expected, addrlen, "Invalid source address");
zassert_mem_equal(data_to_send, data_to_receive, sizeof(data_to_send),
"Data mismatch");
@ -386,6 +406,21 @@ ZTEST(socket_packet, test_packet_sockets_dgram)
zassert_equal(ret, sizeof(data_to_send), "Cannot receive all data (%d)",
-errno);
zassert_equal(addrlen, sizeof(struct sockaddr_ll),
"Invalid address length (%d)", addrlen);
src_expected = (struct sockaddr_ll){
.sll_family = AF_PACKET,
.sll_protocol = dst.sll_protocol,
.sll_ifindex = net_if_get_by_iface(ud.second),
.sll_pkttype = PACKET_OTHERHOST,
.sll_hatype = ARPHRD_ETHER,
.sll_halen = ARRAY_SIZE(lladdr2),
.sll_addr = {0},
};
memcpy(&src_expected.sll_addr, lladdr2, ARRAY_SIZE(lladdr2));
zassert_mem_equal(&src, &src_expected, addrlen, "Invalid source address");
zassert_mem_equal(data_to_send, data_to_receive, sizeof(data_to_send),
"Data mismatch");