mirror of
https://github.com/torvalds/linux.git
synced 2026-09-12 20:53:03 +02:00
selftest: af_unix: Add zero-buffer test for msg_oob.c
The previous patches fixed two issues related to zero-length buffer with MSG_PEEK for MSG_OOB skb. Let's add corresponding tests in msg_oob.c. Without this series: # FAILED: 50 / 60 tests passed. # Totals: pass:50 fail:10 xfail:0 xpass:0 skip:0 error:0 With this series: # PASSED: 60 / 60 tests passed. # Totals: pass:60 fail:0 xfail:0 xpass:0 skip:0 error:0 Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com> Link: https://patch.msgid.link/20260902202202.892676-4-kuniyu@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
6e5ee08eb5
commit
ca0b0a8687
|
|
@ -290,6 +290,25 @@ static void __setinlinepair(struct __test_metadata *_metadata,
|
|||
}
|
||||
}
|
||||
|
||||
static void __setblockingpair(struct __test_metadata *_metadata,
|
||||
FIXTURE_DATA(msg_oob) *self)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
int ret, old_flags, flags;
|
||||
|
||||
old_flags = fcntl(self->fd[i * 2 + 1], F_GETFL, 0);
|
||||
ASSERT_NE(-1, old_flags);
|
||||
|
||||
ret = fcntl(self->fd[i * 2 + 1], F_SETFL, old_flags & ~O_NONBLOCK);
|
||||
ASSERT_EQ(0, ret);
|
||||
|
||||
flags = fcntl(self->fd[i * 2 + 1], F_GETFL, 0);
|
||||
ASSERT_EQ(old_flags & ~O_NONBLOCK, flags);
|
||||
}
|
||||
}
|
||||
|
||||
static void __siocatmarkpair(struct __test_metadata *_metadata,
|
||||
FIXTURE_DATA(msg_oob) *self,
|
||||
bool oob_head)
|
||||
|
|
@ -347,6 +366,9 @@ static void __resetpair(struct __test_metadata *_metadata,
|
|||
#define setinlinepair() \
|
||||
__setinlinepair(_metadata, self)
|
||||
|
||||
#define setblockingpair() \
|
||||
__setblockingpair(_metadata, self)
|
||||
|
||||
#define resetpair(reset) \
|
||||
__resetpair(_metadata, self, variant, reset)
|
||||
|
||||
|
|
@ -888,4 +910,49 @@ TEST_F(msg_oob, inline_ex_oob_siocatmark)
|
|||
resetpair(true);
|
||||
}
|
||||
|
||||
TEST_F(msg_oob, zero_buf_oob)
|
||||
{
|
||||
sendpair("a", 1, MSG_OOB);
|
||||
recvpair("", 0, 0, 0);
|
||||
}
|
||||
|
||||
TEST_F(msg_oob, zero_buf_oob_blocking)
|
||||
{
|
||||
sendpair("a", 1, MSG_OOB);
|
||||
setblockingpair();
|
||||
recvpair("", 0, 0, 0);
|
||||
}
|
||||
|
||||
TEST_F(msg_oob, zero_buf_non_oob_oob)
|
||||
{
|
||||
sendpair("ab", 2, MSG_OOB);
|
||||
recvpair("", 0, 0, 0);
|
||||
}
|
||||
|
||||
TEST_F(msg_oob, zero_buf_non_oob_oob_blocking)
|
||||
{
|
||||
sendpair("ab", 2, MSG_OOB);
|
||||
setblockingpair();
|
||||
recvpair("", 0, 0, 0);
|
||||
}
|
||||
|
||||
TEST_F(msg_oob, zero_buf_ex_oob_oob)
|
||||
{
|
||||
sendpair("a", 1, MSG_OOB);
|
||||
recvpair("a", 1, 1, MSG_OOB);
|
||||
|
||||
sendpair("b", 1, MSG_OOB);
|
||||
recvpair("", 0, 0, 0);
|
||||
}
|
||||
|
||||
TEST_F(msg_oob, zero_buf_ex_oob_oob_blocking)
|
||||
{
|
||||
sendpair("a", 1, MSG_OOB);
|
||||
recvpair("a", 1, 1, MSG_OOB);
|
||||
|
||||
sendpair("b", 1, MSG_OOB);
|
||||
setblockingpair();
|
||||
recvpair("", 0, 0, 0);
|
||||
}
|
||||
|
||||
TEST_HARNESS_MAIN
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user