Page MenuHomeFreeBSD

D43852.diff
No OneTemporary

D43852.diff

diff --git a/tests/sys/kern/unix_seqpacket_test.c b/tests/sys/kern/unix_seqpacket_test.c
--- a/tests/sys/kern/unix_seqpacket_test.c
+++ b/tests/sys/kern/unix_seqpacket_test.c
@@ -68,32 +68,50 @@
}
/*
- * Returns a pair of sockets made the hard way: bind, listen, connect & accept
+ * Returns a bound and listening socket.
* @return const char* The path to the socket
*/
-static const char*
-mk_pair_of_sockets(int *sv)
+static const struct sockaddr_un *
+mk_listening_socket(int *sv)
{
- struct sockaddr_un sun;
/* ATF's isolation mechanisms will guarantee uniqueness of this file */
- const char *path = "sock";
- int s, err, s2, s1;
+ static const struct sockaddr_un sun = {
+ .sun_family = AF_LOCAL,
+ .sun_len = sizeof(sun),
+ .sun_path = "sock",
+ };
+ int s, r, l;
s = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
ATF_REQUIRE(s >= 0);
- bzero(&sun, sizeof(sun));
- sun.sun_family = AF_LOCAL;
- sun.sun_len = sizeof(sun);
- strlcpy(sun.sun_path, path, sizeof(sun.sun_path));
- err = bind(s, (struct sockaddr *)&sun, sizeof(sun));
- err = listen(s, -1);
- ATF_CHECK_EQ(0, err);
+ r = bind(s, (struct sockaddr *)&sun, sizeof(sun));
+ l = listen(s, -1);
+ ATF_CHECK_EQ(0, r);
+ ATF_CHECK_EQ(0, l);
+
+ if (sv != NULL)
+ *sv = s;
+
+ return (&sun);
+}
+
+/*
+ * Returns a pair of sockets made the hard way: bind, listen, connect & accept
+ * @return const char* The path to the socket
+ */
+static const struct sockaddr_un *
+mk_pair_of_sockets(int *sv)
+{
+ const struct sockaddr_un *sun;
+ int s, s2, err, s1;
+
+ sun = mk_listening_socket(&s);
/* Create the other socket */
s2 = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
ATF_REQUIRE(s2 >= 0);
- err = connect(s2, (struct sockaddr*)&sun, sizeof(sun));
+ err = connect(s2, (struct sockaddr *)sun, sizeof(*sun));
if (err != 0) {
perror("connect");
atf_tc_fail("connect(2) failed");
@@ -106,12 +124,14 @@
atf_tc_fail("accept(2) failed");
}
- sv[0] = s1;
- sv[1] = s2;
+ if (sv != NULL) {
+ sv[0] = s1;
+ sv[1] = s2;
+ }
close(s);
- return (path);
+ return (sun);
}
static volatile sig_atomic_t got_sigpipe = 0;
@@ -454,22 +474,9 @@
ATF_TC_WITHOUT_HEAD(listen_bound);
ATF_TC_BODY(listen_bound, tc)
{
- struct sockaddr_un sun;
- /* ATF's isolation mechanisms will guarantee uniqueness of this file */
- const char *path = "sock";
- int s, r, l;
-
- s = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
- ATF_REQUIRE(s >= 0);
+ int s;
- bzero(&sun, sizeof(sun));
- sun.sun_family = AF_LOCAL;
- sun.sun_len = sizeof(sun);
- strlcpy(sun.sun_path, path, sizeof(sun.sun_path));
- r = bind(s, (struct sockaddr *)&sun, sizeof(sun));
- l = listen(s, -1);
- ATF_CHECK_EQ(0, r);
- ATF_CHECK_EQ(0, l);
+ (void)mk_listening_socket(&s);
close(s);
}
@@ -477,27 +484,15 @@
ATF_TC_WITHOUT_HEAD(connect);
ATF_TC_BODY(connect, tc)
{
- struct sockaddr_un sun;
- /* ATF's isolation mechanisms will guarantee uniqueness of this file */
- const char *path = "sock";
- int s, r, err, l, s2;
+ const struct sockaddr_un *sun;
+ int s, err, s2;
- s = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
- ATF_REQUIRE(s >= 0);
-
- bzero(&sun, sizeof(sun));
- sun.sun_family = AF_LOCAL;
- sun.sun_len = sizeof(sun);
- strlcpy(sun.sun_path, path, sizeof(sun.sun_path));
- r = bind(s, (struct sockaddr *)&sun, sizeof(sun));
- l = listen(s, -1);
- ATF_CHECK_EQ(0, r);
- ATF_CHECK_EQ(0, l);
+ sun = mk_listening_socket(&s);
/* Create the other socket */
s2 = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
ATF_REQUIRE(s2 >= 0);
- err = connect(s2, (struct sockaddr*)&sun, sizeof(sun));
+ err = connect(s2, (struct sockaddr *)sun, sizeof(*sun));
if (err != 0) {
perror("connect");
atf_tc_fail("connect(2) failed");
@@ -670,7 +665,7 @@
ATF_TC_BODY(sendto_recvfrom, tc)
{
#ifdef TEST_SEQ_PACKET_SOURCE_ADDRESS
- const char* path;
+ const sockaddr_un *sun;
#endif
struct sockaddr_storage from;
int sv[2];
@@ -683,7 +678,7 @@
/* setup the socket pair */
#ifdef TEST_SEQ_PACKET_SOURCE_ADDRESS
- path =
+ sun =
#endif
mk_pair_of_sockets(sv);
@@ -714,7 +709,7 @@
* these checks may be reenabled
*/
ATF_CHECK_EQ(PF_LOCAL, from.ss_family);
- ATF_CHECK_STREQ(path, ((struct sockaddr_un*)&from)->sun_path);
+ ATF_CHECK_STREQ(sun->sun_path, ((struct sockaddr_un*)&from)->sun_path);
#endif
close(sv[0]);
close(sv[1]);
@@ -756,28 +751,17 @@
ATF_TC_WITHOUT_HEAD(shutdown_send);
ATF_TC_BODY(shutdown_send, tc)
{
- struct sockaddr_un sun;
- /* ATF's isolation mechanisms will guarantee uniqueness of this file */
- const char *path = "sock";
+ const struct sockaddr_un *sun;
const char *data = "data";
ssize_t datalen, ssize;
int s, err, s2;
- s = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
- ATF_REQUIRE(s >= 0);
-
- bzero(&sun, sizeof(sun));
- sun.sun_family = AF_LOCAL;
- sun.sun_len = sizeof(sun);
- strlcpy(sun.sun_path, path, sizeof(sun.sun_path));
- err = bind(s, (struct sockaddr *)&sun, sizeof(sun));
- err = listen(s, -1);
- ATF_CHECK_EQ(0, err);
+ sun = mk_listening_socket(&s);
/* Create the other socket */
s2 = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
ATF_REQUIRE(s2 >= 0);
- err = connect(s2, (struct sockaddr*)&sun, sizeof(sun));
+ err = connect(s2, (struct sockaddr *)sun, sizeof(*sun));
if (err != 0) {
perror("connect");
atf_tc_fail("connect(2) failed");
@@ -797,28 +781,17 @@
ATF_TC_WITHOUT_HEAD(shutdown_send_sigpipe);
ATF_TC_BODY(shutdown_send_sigpipe, tc)
{
- struct sockaddr_un sun;
- /* ATF's isolation mechanisms will guarantee uniqueness of this file */
- const char *path = "sock";
+ const struct sockaddr_un *sun;
const char *data = "data";
ssize_t datalen;
int s, err, s2;
- s = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
- ATF_REQUIRE(s >= 0);
-
- bzero(&sun, sizeof(sun));
- sun.sun_family = AF_LOCAL;
- sun.sun_len = sizeof(sun);
- strlcpy(sun.sun_path, path, sizeof(sun.sun_path));
- err = bind(s, (struct sockaddr *)&sun, sizeof(sun));
- err = listen(s, -1);
- ATF_CHECK_EQ(0, err);
+ sun = mk_listening_socket(&s);
/* Create the other socket */
s2 = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
ATF_REQUIRE(s2 >= 0);
- err = connect(s2, (struct sockaddr*)&sun, sizeof(sun));
+ err = connect(s2, (struct sockaddr *)sun, sizeof(*sun));
if (err != 0) {
perror("connect");
atf_tc_fail("connect(2) failed");

File Metadata

Mime Type
text/plain
Expires
Wed, Apr 30, 11:23 AM (13 h, 46 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17857030
Default Alt Text
D43852.diff (6 KB)

Event Timeline