diff options
author | Nayana Bidari <nybidari@google.com> | 2020-03-02 16:30:51 -0800 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2020-03-02 16:31:52 -0800 |
commit | 43abb24657e737dee1108ff0d512b2e1b6d8a3f6 (patch) | |
tree | b217bfeb0656f0a4988432e581f0023234b6850b /test | |
parent | d80b6a6e498fa9301250572a1abcfa68c5aaaa1c (diff) |
Fix panic caused by invalid address for Bind in packet sockets.
PiperOrigin-RevId: 298476533
Diffstat (limited to 'test')
-rw-r--r-- | test/syscalls/linux/packet_socket.cc | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/test/syscalls/linux/packet_socket.cc b/test/syscalls/linux/packet_socket.cc index bc22de788..248762ca9 100644 --- a/test/syscalls/linux/packet_socket.cc +++ b/test/syscalls/linux/packet_socket.cc @@ -417,6 +417,19 @@ TEST_P(CookedPacketTest, BindDrop) { EXPECT_THAT(RetryEINTR(poll)(&pfd, 1, 1000), SyscallSucceedsWithValue(0)); } +// Bind with invalid address. +TEST_P(CookedPacketTest, BindFail) { + // Null address. + ASSERT_THAT(bind(socket_, nullptr, sizeof(struct sockaddr)), + SyscallFailsWithErrno(EFAULT)); + + // Address of size 1. + uint8_t addr = 0; + ASSERT_THAT( + bind(socket_, reinterpret_cast<struct sockaddr*>(&addr), sizeof(addr)), + SyscallFailsWithErrno(EINVAL)); +} + INSTANTIATE_TEST_SUITE_P(AllInetTests, CookedPacketTest, ::testing::Values(ETH_P_IP, ETH_P_ALL)); |