Skip to content

Commit 486eeaa

Browse files
committed
Internal change.
PiperOrigin-RevId: 834846209
1 parent 6a387a4 commit 486eeaa

File tree

2 files changed

+29
-21
lines changed

2 files changed

+29
-21
lines changed

test/syscalls/linux/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1617,6 +1617,7 @@ cc_binary(
16171617
"//test/util:test_main",
16181618
"//test/util:test_util",
16191619
"@com_google_absl//absl/base:core_headers",
1620+
"@com_google_absl//absl/strings",
16201621
],
16211622
)
16221623

test/syscalls/linux/packet_socket_dgram.cc

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@
2828
#include <sys/types.h>
2929
#include <unistd.h>
3030

31+
#include <string_view>
32+
33+
#include "gmock/gmock.h"
3134
#include "gtest/gtest.h"
35+
#include "absl/strings/escaping.h"
3236
#include "test/syscalls/linux/ip_socket_test_util.h"
3337
#include "test/syscalls/linux/unix_domain_socket_test_util.h"
3438
#include "test/util/capability_util.h"
@@ -66,7 +70,7 @@ namespace {
6670
using ::testing::AnyOf;
6771
using ::testing::Eq;
6872

69-
constexpr char kMessage[] = "soweoneul malhaebwa";
73+
constexpr std::string_view kMessage = "soweoneul malhaebwa";
7074
constexpr in_port_t kPort = 0x409c; // htons(40000)
7175
constexpr int kTimeoutMS = 60 * 1000;
7276

@@ -82,9 +86,9 @@ void SendUDPMessage(int sock) {
8286
dest.sin_port = kPort;
8387
dest.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
8488
dest.sin_family = AF_INET;
85-
EXPECT_THAT(sendto(sock, kMessage, sizeof(kMessage), 0,
89+
EXPECT_THAT(sendto(sock, kMessage.data(), kMessage.size(), 0,
8690
reinterpret_cast<struct sockaddr*>(&dest), sizeof(dest)),
87-
SyscallSucceedsWithValue(sizeof(kMessage)));
91+
SyscallSucceedsWithValue(kMessage.size()));
8892
}
8993

9094
// Send an IP packet and make sure ETH_P_<something else> doesn't pick it up.
@@ -177,7 +181,7 @@ void ReceiveMessage(int sock, int ifindex) {
177181

178182
// Read and verify the data.
179183
constexpr size_t packet_size =
180-
sizeof(struct iphdr) + sizeof(struct udphdr) + sizeof(kMessage);
184+
sizeof(struct iphdr) + sizeof(struct udphdr) + kMessage.size();
181185
char buf[64];
182186
struct sockaddr_ll src = {};
183187
socklen_t src_len = sizeof(src);
@@ -215,11 +219,11 @@ void ReceiveMessage(int sock, int ifindex) {
215219
struct udphdr udp = {};
216220
memcpy(&udp, buf + sizeof(iphdr), sizeof(udp));
217221
EXPECT_EQ(udp.dest, kPort);
218-
EXPECT_EQ(udp.len, htons(sizeof(udphdr) + sizeof(kMessage)));
222+
EXPECT_EQ(udp.len, htons(sizeof(udphdr) + kMessage.size()));
219223

220224
// Verify the payload.
221225
char* payload = reinterpret_cast<char*>(buf + sizeof(iphdr) + sizeof(udphdr));
222-
EXPECT_EQ(strncmp(payload, kMessage, sizeof(kMessage)), 0);
226+
EXPECT_EQ(std::string_view(payload, kMessage.size()), kMessage);
223227
}
224228

225229
// Receive via a packet socket.
@@ -267,7 +271,7 @@ TEST_P(CookedPacketTest, Send) {
267271
iphdr.version = 4;
268272
iphdr.tos = 0;
269273
iphdr.tot_len =
270-
htons(sizeof(struct iphdr) + sizeof(struct udphdr) + sizeof(kMessage));
274+
htons(sizeof(struct iphdr) + sizeof(struct udphdr) + kMessage.size());
271275
// Get a pseudo-random ID. If we clash with an in-use ID the test will fail,
272276
// but we have no way of getting an ID we know to be good.
273277
srand(*reinterpret_cast<unsigned int*>(&iphdr));
@@ -284,14 +288,15 @@ TEST_P(CookedPacketTest, Send) {
284288
struct udphdr udphdr = {};
285289
udphdr.source = kPort;
286290
udphdr.dest = kPort;
287-
udphdr.len = htons(sizeof(udphdr) + sizeof(kMessage));
288-
udphdr.check = UDPChecksum(iphdr, udphdr, kMessage, sizeof(kMessage));
291+
udphdr.len = htons(sizeof(udphdr) + kMessage.size());
292+
udphdr.check = UDPChecksum(iphdr, udphdr, kMessage.data(), kMessage.size());
289293

290294
// Copy both headers and the payload into our packet buffer.
291-
char send_buf[sizeof(iphdr) + sizeof(udphdr) + sizeof(kMessage)];
295+
char send_buf[sizeof(iphdr) + sizeof(udphdr) + kMessage.size()];
292296
memcpy(send_buf, &iphdr, sizeof(iphdr));
293297
memcpy(send_buf + sizeof(iphdr), &udphdr, sizeof(udphdr));
294-
memcpy(send_buf + sizeof(iphdr) + sizeof(udphdr), kMessage, sizeof(kMessage));
298+
memcpy(send_buf + sizeof(iphdr) + sizeof(udphdr), kMessage.data(),
299+
kMessage.size());
295300

296301
// Send it.
297302
ASSERT_THAT(sendto(socket_, send_buf, sizeof(send_buf), 0,
@@ -313,16 +318,18 @@ TEST_P(CookedPacketTest, Send) {
313318
char recv_buf[sizeof(send_buf)];
314319
ASSERT_THAT(recv(socket_, recv_buf, sizeof(recv_buf), 0),
315320
SyscallSucceedsWithValue(sizeof(recv_buf)));
316-
ASSERT_EQ(memcmp(recv_buf, send_buf, sizeof(send_buf)), 0);
321+
ASSERT_EQ(
322+
absl::BytesToHexString(std::string_view(recv_buf, sizeof(recv_buf))),
323+
absl::BytesToHexString(std::string_view(send_buf, sizeof(send_buf))));
317324

318325
// Receive on the UDP socket.
319326
struct sockaddr_in src;
320327
socklen_t src_len = sizeof(src);
321328
ASSERT_THAT(recvfrom(udp_sock.get(), recv_buf, sizeof(recv_buf), MSG_DONTWAIT,
322329
reinterpret_cast<struct sockaddr*>(&src), &src_len),
323-
SyscallSucceedsWithValue(sizeof(kMessage)));
330+
SyscallSucceedsWithValue(kMessage.size()));
324331
// Check src and payload.
325-
EXPECT_EQ(strncmp(recv_buf, kMessage, sizeof(kMessage)), 0);
332+
EXPECT_EQ(std::string_view(recv_buf, kMessage.size()), kMessage);
326333
EXPECT_EQ(src.sin_family, AF_INET);
327334
EXPECT_EQ(src.sin_port, kPort);
328335
EXPECT_EQ(src.sin_addr.s_addr, htonl(INADDR_LOOPBACK));
@@ -414,9 +421,9 @@ TEST_P(CookedPacketTest, BindDrop) {
414421
dest.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
415422
dest.sin_family = AF_INET;
416423
dest.sin_port = kPort;
417-
EXPECT_THAT(sendto(udp_sock.get(), kMessage, sizeof(kMessage), 0,
424+
EXPECT_THAT(sendto(udp_sock.get(), kMessage.data(), kMessage.size(), 0,
418425
reinterpret_cast<struct sockaddr*>(&dest), sizeof(dest)),
419-
SyscallSucceedsWithValue(sizeof(kMessage)));
426+
SyscallSucceedsWithValue(kMessage.size()));
420427

421428
// Wait and make sure the socket never receives any data.
422429
struct pollfd pfd = {};
@@ -485,9 +492,9 @@ TEST_P(CookedPacketTest, ReceiveOutbound) {
485492
ASSERT_EQ(inet_pton(AF_INET, "8.8.8.8", &dest.sin_addr.s_addr), 1);
486493
dest.sin_family = AF_INET;
487494
dest.sin_port = kPort;
488-
EXPECT_THAT(sendto(udp_sock.get(), kMessage, sizeof(kMessage), 0,
495+
EXPECT_THAT(sendto(udp_sock.get(), kMessage.data(), kMessage.size(), 0,
489496
reinterpret_cast<struct sockaddr*>(&dest), sizeof(dest)),
490-
SyscallSucceedsWithValue(sizeof(kMessage)));
497+
SyscallSucceedsWithValue(kMessage.size()));
491498

492499
// Wait and make sure the socket receives the data.
493500
struct pollfd pfd = {};
@@ -499,7 +506,7 @@ TEST_P(CookedPacketTest, ReceiveOutbound) {
499506
// Now read and check that the packet is the one we just sent.
500507
// Read and verify the data.
501508
constexpr size_t packet_size =
502-
sizeof(struct iphdr) + sizeof(struct udphdr) + sizeof(kMessage);
509+
sizeof(struct iphdr) + sizeof(struct udphdr) + kMessage.size();
503510
char buf[64];
504511
struct sockaddr_ll src = {};
505512
socklen_t src_len = sizeof(src);
@@ -539,11 +546,11 @@ TEST_P(CookedPacketTest, ReceiveOutbound) {
539546
struct udphdr udp = {};
540547
memcpy(&udp, buf + sizeof(iphdr), sizeof(udp));
541548
EXPECT_EQ(udp.dest, kPort);
542-
EXPECT_EQ(udp.len, htons(sizeof(udphdr) + sizeof(kMessage)));
549+
EXPECT_EQ(udp.len, htons(sizeof(udphdr) + kMessage.size()));
543550

544551
// Verify the payload.
545552
char* payload = reinterpret_cast<char*>(buf + sizeof(iphdr) + sizeof(udphdr));
546-
EXPECT_EQ(strncmp(payload, kMessage, sizeof(kMessage)), 0);
553+
EXPECT_EQ(std::string_view(payload, kMessage.size()), kMessage);
547554
}
548555

549556
// Bind with invalid address.

0 commit comments

Comments
 (0)