1111#include " hdr/types/size_t.h"
1212#include " hdr/types/struct_sockaddr_un.h"
1313#include " src/fcntl/fcntl.h"
14+ #include " src/stdio/remove.h"
1415#include " src/sys/socket/accept.h"
1516#include " src/sys/socket/accept4.h"
1617#include " src/sys/socket/bind.h"
1718#include " src/sys/socket/connect.h"
1819#include " src/sys/socket/listen.h"
1920#include " src/sys/socket/socket.h"
20-
21- #include " src/stdio/remove.h"
22- #include " src/string/strlen.h"
23- #include " src/string/strncpy.h"
2421#include " src/unistd/close.h"
2522
2623#include " test/UnitTest/ErrnoCheckingTest.h"
2724#include " test/UnitTest/ErrnoSetterMatcher.h"
28- #include " test/UnitTest/Test .h"
25+ #include " test/src/sys/socket/linux/socket_test_support .h"
2926
27+ using LIBC_NAMESPACE ::testing::make_sockaddr_un;
3028using LIBC_NAMESPACE ::testing::ErrnoSetterMatcher::Fails;
3129using LIBC_NAMESPACE ::testing::ErrnoSetterMatcher::Succeeds;
3230using LlvmLibcConnectAcceptTest = LIBC_NAMESPACE ::testing::ErrnoCheckingTest;
3331
34- constexpr size_t MAX_SOCKET_PATH =
35- sizeof (struct sockaddr_un ) - sizeof (sa_family_t );
36-
37- struct sockaddr_un make_sockaddr (const char *path) {
38- struct sockaddr_un result;
39- result.sun_family = AF_UNIX ;
40- LIBC_NAMESPACE::strncpy (result.sun_path , path, MAX_SOCKET_PATH );
41- return result;
42- }
43-
4432TEST_F (LlvmLibcConnectAcceptTest, ConnectLocalSocket) {
4533 const char *CONNECT_FILE = " connect_file.test" ;
46- auto CONNECT_PATH = libc_make_test_file_path (CONNECT_FILE );
47- // It's important that the path fits in the struct, if it doesn't then we
48- // can't try to bind to the file.
49- ASSERT_LT (LIBC_NAMESPACE::strlen (CONNECT_PATH ), MAX_SOCKET_PATH );
50- const struct sockaddr_un CONNECT_ADDR = make_sockaddr (CONNECT_PATH );
34+ const auto CONNECT_PATH = libc_make_test_file_path (CONNECT_FILE );
35+ struct sockaddr_un connect_addr;
36+ ASSERT_TRUE (make_sockaddr_un (CONNECT_PATH , connect_addr));
5137
5238 const char *ACCEPT_FILE = " accept_file.test" ;
53- auto ACCEPT_PATH = libc_make_test_file_path (ACCEPT_FILE );
54- ASSERT_LT ( LIBC_NAMESPACE::strlen ( ACCEPT_PATH ), MAX_SOCKET_PATH ) ;
55- const struct sockaddr_un ACCEPT_ADDR = make_sockaddr ( ACCEPT_PATH );
39+ const auto ACCEPT_PATH = libc_make_test_file_path (ACCEPT_FILE );
40+ struct sockaddr_un accept_addr ;
41+ ASSERT_TRUE ( make_sockaddr_un ( ACCEPT_PATH , accept_addr) );
5642
5743 int accepting_socket = LIBC_NAMESPACE::socket (AF_UNIX , SOCK_STREAM , 0 );
5844 ASSERT_GE (accepting_socket, 0 );
5945 ASSERT_ERRNO_SUCCESS ();
6046
6147 ASSERT_THAT (LIBC_NAMESPACE::bind (
6248 accepting_socket,
63- reinterpret_cast <const struct sockaddr *>(&ACCEPT_ADDR ),
49+ reinterpret_cast <const struct sockaddr *>(&accept_addr ),
6450 sizeof (struct sockaddr_un )),
6551 Succeeds (0 ));
6652
@@ -73,15 +59,15 @@ TEST_F(LlvmLibcConnectAcceptTest, ConnectLocalSocket) {
7359 Fails (EINVAL ));
7460 ASSERT_THAT (LIBC_NAMESPACE::connect (
7561 connecting_socket,
76- reinterpret_cast <const struct sockaddr *>(&ACCEPT_ADDR ),
62+ reinterpret_cast <const struct sockaddr *>(&accept_addr ),
7763 sizeof (struct sockaddr_un )),
7864 Fails (ECONNREFUSED ));
7965
8066 ASSERT_THAT (LIBC_NAMESPACE::listen (accepting_socket, 1 ), Succeeds (0 ));
8167
8268 ASSERT_THAT (LIBC_NAMESPACE::connect (
8369 connecting_socket,
84- reinterpret_cast <const struct sockaddr *>(&ACCEPT_ADDR ),
70+ reinterpret_cast <const struct sockaddr *>(&accept_addr ),
8571 sizeof (struct sockaddr_un )),
8672 Succeeds (0 ));
8773
@@ -99,13 +85,13 @@ TEST_F(LlvmLibcConnectAcceptTest, ConnectLocalSocket) {
9985
10086 ASSERT_THAT (LIBC_NAMESPACE::bind (
10187 connecting_socket,
102- reinterpret_cast <const struct sockaddr *>(&CONNECT_ADDR ),
88+ reinterpret_cast <const struct sockaddr *>(&connect_addr ),
10389 sizeof (struct sockaddr_un )),
10490 Succeeds (0 ));
10591
10692 ASSERT_THAT (LIBC_NAMESPACE::connect (
10793 connecting_socket,
108- reinterpret_cast <const struct sockaddr *>(&ACCEPT_ADDR ),
94+ reinterpret_cast <const struct sockaddr *>(&accept_addr ),
10995 sizeof (struct sockaddr_un )),
11096 Succeeds (0 ));
11197
@@ -117,9 +103,9 @@ TEST_F(LlvmLibcConnectAcceptTest, ConnectLocalSocket) {
117103 ASSERT_GE (accepted_socket, 0 );
118104 ASSERT_ERRNO_SUCCESS ();
119105 ASSERT_THAT (LIBC_NAMESPACE::close (accepted_socket), Succeeds (0 ));
120- ASSERT_EQ ( accepted_addr. sun_family , static_cast < sa_family_t >( AF_UNIX ));
121- for ( size_t i = 0 ; i < accepted_addr_len - sizeof ( sa_family_t ); ++i)
122- ASSERT_EQ (accepted_addr. sun_path [i], CONNECT_ADDR . sun_path [i] );
106+ ASSERT_THAT (( LIBC_NAMESPACE ::testing::SocketAddress{ accepted_addr,
107+ accepted_addr_len}),
108+ LIBC_NAMESPACE::testing::MatchesAddress ( CONNECT_PATH ) );
123109
124110 ASSERT_THAT (LIBC_NAMESPACE::close (accepting_socket), Succeeds (0 ));
125111 ASSERT_THAT (LIBC_NAMESPACE::close (connecting_socket), Succeeds (0 ));
@@ -130,16 +116,16 @@ TEST_F(LlvmLibcConnectAcceptTest, ConnectLocalSocket) {
130116TEST_F (LlvmLibcConnectAcceptTest, Accept4Flags) {
131117 const char *ACCEPT_FILE = " accept4_file.test" ;
132118 auto ACCEPT_PATH = libc_make_test_file_path (ACCEPT_FILE );
133- ASSERT_LT ( LIBC_NAMESPACE::strlen ( ACCEPT_PATH ), MAX_SOCKET_PATH ) ;
134- const struct sockaddr_un ACCEPT_ADDR = make_sockaddr ( ACCEPT_PATH );
119+ struct sockaddr_un accept_addr ;
120+ ASSERT_TRUE ( make_sockaddr_un ( ACCEPT_PATH , accept_addr) );
135121
136122 int accepting_socket = LIBC_NAMESPACE::socket (AF_UNIX , SOCK_STREAM , 0 );
137123 ASSERT_GE (accepting_socket, 0 );
138124 ASSERT_ERRNO_SUCCESS ();
139125
140126 ASSERT_THAT (LIBC_NAMESPACE::bind (
141127 accepting_socket,
142- reinterpret_cast <const struct sockaddr *>(&ACCEPT_ADDR ),
128+ reinterpret_cast <const struct sockaddr *>(&accept_addr ),
143129 sizeof (struct sockaddr_un )),
144130 Succeeds (0 ));
145131
@@ -155,7 +141,7 @@ TEST_F(LlvmLibcConnectAcceptTest, Accept4Flags) {
155141
156142 ASSERT_THAT (LIBC_NAMESPACE::connect (
157143 connecting_socket,
158- reinterpret_cast <const struct sockaddr *>(&ACCEPT_ADDR ),
144+ reinterpret_cast <const struct sockaddr *>(&accept_addr ),
159145 sizeof (struct sockaddr_un )),
160146 Succeeds (0 ));
161147
0 commit comments