Skip to content

Commit

Permalink
selftests/tls: Fix recv(MSG_PEEK) & splice() test cases
Browse files Browse the repository at this point in the history
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: Vakul Garg <vakul.garg@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
nxa22042 authored and davem330 committed Oct 2, 2018
1 parent e3a9667 commit 0ed3015
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions tools/testing/selftests/net/tls.c
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ TEST_F(tls, splice_from_pipe)
ASSERT_GE(pipe(p), 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(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);
}

Expand Down Expand Up @@ -322,13 +322,13 @@ TEST_F(tls, send_and_splice)

ASSERT_GE(pipe(p), 0);
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_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(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);
}

Expand Down Expand Up @@ -516,17 +516,17 @@ TEST_F(tls, recv_peek_multiple_records)
len = strlen(test_str_second) + 1;
EXPECT_EQ(send(self->fd, test_str_second, len, 0), len);

len = sizeof(buf);
len = strlen(test_str_first);
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. */
len = strlen(test_str_first) + 1;
len = strlen(test_str_first);
EXPECT_EQ(memcmp(test_str_first, buf, len), 0);

len = sizeof(buf);
len = strlen(test_str) + 1;
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)
* however.
Expand All @@ -543,9 +543,9 @@ TEST_F(tls, recv_peek_multiple_records)
len = strlen(test_str_second) + 1;
EXPECT_EQ(send(self->fd, test_str_second, len, 0), len);

len = sizeof(buf);
len = strlen(test_str) + 1;
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;
EXPECT_EQ(memcmp(test_str, buf, len), 0);
Expand Down

0 comments on commit 0ed3015

Please sign in to comment.