提交 f22a4d8c 编写于 作者: V Vakul Garg 提交者: Greg Kroah-Hartman

selftests/tls: Fix recv(MSG_PEEK) & splice() test cases

[ Upstream commit 0ed3015c9964dab7a1693b3e40650f329c16691e ]

TLS test cases splice_from_pipe, send_and_splice &
recv_peek_multiple_records expect to receive a given nummber of bytes
and then compare them against the number of bytes which were sent.
Therefore, system call recv() must not return before receiving the
requested number of bytes, otherwise the subsequent memcmp() fails.
This patch passes MSG_WAITALL flag to recv() so that it does not return
prematurely before requested number of bytes are copied to receive
buffer.
Signed-off-by: NVakul Garg <vakul.garg@nxp.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
Signed-off-by: NSasha Levin <sashal@kernel.org>
上级 475398b7
...@@ -288,7 +288,7 @@ TEST_F(tls, splice_from_pipe) ...@@ -288,7 +288,7 @@ TEST_F(tls, splice_from_pipe)
ASSERT_GE(pipe(p), 0); ASSERT_GE(pipe(p), 0);
EXPECT_GE(write(p[1], mem_send, send_len), 0); EXPECT_GE(write(p[1], mem_send, send_len), 0);
EXPECT_GE(splice(p[0], NULL, self->fd, NULL, send_len, 0), 0); EXPECT_GE(splice(p[0], NULL, self->fd, NULL, send_len, 0), 0);
EXPECT_GE(recv(self->cfd, mem_recv, send_len, 0), 0); EXPECT_EQ(recv(self->cfd, mem_recv, send_len, MSG_WAITALL), send_len);
EXPECT_EQ(memcmp(mem_send, mem_recv, send_len), 0); EXPECT_EQ(memcmp(mem_send, mem_recv, send_len), 0);
} }
...@@ -322,13 +322,13 @@ TEST_F(tls, send_and_splice) ...@@ -322,13 +322,13 @@ TEST_F(tls, send_and_splice)
ASSERT_GE(pipe(p), 0); ASSERT_GE(pipe(p), 0);
EXPECT_EQ(send(self->fd, test_str, send_len2, 0), send_len2); EXPECT_EQ(send(self->fd, test_str, send_len2, 0), send_len2);
EXPECT_NE(recv(self->cfd, buf, send_len2, 0), -1); EXPECT_EQ(recv(self->cfd, buf, send_len2, MSG_WAITALL), send_len2);
EXPECT_EQ(memcmp(test_str, buf, send_len2), 0); EXPECT_EQ(memcmp(test_str, buf, send_len2), 0);
EXPECT_GE(write(p[1], mem_send, send_len), send_len); EXPECT_GE(write(p[1], mem_send, send_len), send_len);
EXPECT_GE(splice(p[0], NULL, self->fd, NULL, send_len, 0), send_len); EXPECT_GE(splice(p[0], NULL, self->fd, NULL, send_len, 0), send_len);
EXPECT_GE(recv(self->cfd, mem_recv, send_len, 0), 0); EXPECT_EQ(recv(self->cfd, mem_recv, send_len, MSG_WAITALL), send_len);
EXPECT_EQ(memcmp(mem_send, mem_recv, send_len), 0); EXPECT_EQ(memcmp(mem_send, mem_recv, send_len), 0);
} }
...@@ -516,17 +516,17 @@ TEST_F(tls, recv_peek_multiple_records) ...@@ -516,17 +516,17 @@ TEST_F(tls, recv_peek_multiple_records)
len = strlen(test_str_second) + 1; len = strlen(test_str_second) + 1;
EXPECT_EQ(send(self->fd, test_str_second, len, 0), len); EXPECT_EQ(send(self->fd, test_str_second, len, 0), len);
len = sizeof(buf); len = strlen(test_str_first);
memset(buf, 0, len); memset(buf, 0, len);
EXPECT_NE(recv(self->cfd, buf, len, MSG_PEEK), -1); EXPECT_EQ(recv(self->cfd, buf, len, MSG_PEEK | MSG_WAITALL), len);
/* MSG_PEEK can only peek into the current record. */ /* MSG_PEEK can only peek into the current record. */
len = strlen(test_str_first) + 1; len = strlen(test_str_first);
EXPECT_EQ(memcmp(test_str_first, buf, len), 0); EXPECT_EQ(memcmp(test_str_first, buf, len), 0);
len = sizeof(buf); len = strlen(test_str) + 1;
memset(buf, 0, len); memset(buf, 0, len);
EXPECT_NE(recv(self->cfd, buf, len, 0), -1); EXPECT_EQ(recv(self->cfd, buf, len, MSG_WAITALL), len);
/* Non-MSG_PEEK will advance strparser (and therefore record) /* Non-MSG_PEEK will advance strparser (and therefore record)
* however. * however.
...@@ -543,9 +543,9 @@ TEST_F(tls, recv_peek_multiple_records) ...@@ -543,9 +543,9 @@ TEST_F(tls, recv_peek_multiple_records)
len = strlen(test_str_second) + 1; len = strlen(test_str_second) + 1;
EXPECT_EQ(send(self->fd, test_str_second, len, 0), len); EXPECT_EQ(send(self->fd, test_str_second, len, 0), len);
len = sizeof(buf); len = strlen(test_str) + 1;
memset(buf, 0, len); memset(buf, 0, len);
EXPECT_NE(recv(self->cfd, buf, len, MSG_PEEK), -1); EXPECT_EQ(recv(self->cfd, buf, len, MSG_PEEK | MSG_WAITALL), len);
len = strlen(test_str) + 1; len = strlen(test_str) + 1;
EXPECT_EQ(memcmp(test_str, buf, len), 0); EXPECT_EQ(memcmp(test_str, buf, len), 0);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册