Module Name:    src
Committed By:   pooka
Date:           Sat Jun 12 14:31:29 UTC 2010

Modified Files:
        src/tests/net/sys: t_connect.c

Log Message:
Connect to localhost instead of www.netbsd.org to a) make this work
in non-routed setups b) avoid the dubious security implications.
Also, to make the test actually do what it claims to do, call
getsockname() and verify we got a low port.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/tests/net/sys/t_connect.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/net/sys/t_connect.c
diff -u src/tests/net/sys/t_connect.c:1.1 src/tests/net/sys/t_connect.c:1.2
--- src/tests/net/sys/t_connect.c:1.1	Thu May  1 15:38:17 2008
+++ src/tests/net/sys/t_connect.c	Sat Jun 12 14:31:29 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_connect.c,v 1.1 2008/05/01 15:38:17 jmmv Exp $	*/
+/*	$NetBSD: t_connect.c,v 1.2 2010/06/12 14:31:29 pooka Exp $	*/
 /*
  * Copyright (c) 2007, 2008 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -45,11 +45,23 @@
 }
 ATF_TC_BODY(low_port, tc)
 {
-	struct sockaddr_in sin;
-	int sd, val;
+	struct sockaddr_in sin, sinlist;
+	int sd, val, slist;
+	socklen_t slen;
 
+	slist = socket(AF_INET, SOCK_STREAM, 0);
 	sd = socket(AF_INET, SOCK_STREAM, 0);
 
+	/* bind listening sucket */
+	memset(&sinlist, 0, sizeof(sinlist));
+	sinlist.sin_family = AF_INET;
+	sinlist.sin_port = htons(31522);
+	sinlist.sin_addr.s_addr = inet_addr("127.0.0.1");
+
+	ATF_REQUIRE_EQ(bind(slist,
+	    (struct sockaddr *)&sinlist, sizeof(sinlist)), 0);
+	ATF_REQUIRE_EQ(listen(slist, 1), 0);
+
 	val = IP_PORTRANGE_LOW;
 	if (setsockopt(sd, IPPROTO_IP, IP_PORTRANGE, &val,
 	    sizeof(val)) == -1)
@@ -57,8 +69,8 @@
 
 	memset(&sin, 0, sizeof(sin));
 
-	sin.sin_port = htons(80);
-	sin.sin_addr.s_addr = inet_addr("204.152.190.12"); /* www.NetBSD.org */
+	sin.sin_port = htons(31522);
+	sin.sin_addr.s_addr = inet_addr("127.0.0.1");
 	sin.sin_family = AF_INET;
 
 	if (connect(sd, (struct sockaddr *)&sin, sizeof(sin)) == -1) {
@@ -69,6 +81,11 @@
 		    "source-changes/2007/12/16/0011.html)");
 	}
 
+	slen = sizeof(sin);
+	ATF_REQUIRE_EQ(getsockname(sd, (struct sockaddr *)&sin, &slen), 0);
+	ATF_REQUIRE_EQ(slen, sizeof(sin));
+	ATF_REQUIRE(ntohs(sin.sin_port) <= IPPORT_RESERVEDMAX);
+
 	close(sd);
 }
 

Reply via email to