Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/tests/net/sys Connect to localhost instead of www.netbsd.org...



details:   https://anonhg.NetBSD.org/src/rev/f2c9c4c8d45c
branches:  trunk
changeset: 755617:f2c9c4c8d45c
user:      pooka <pooka%NetBSD.org@localhost>
date:      Sat Jun 12 14:31:29 2010 +0000

description:
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.

diffstat:

 tests/net/sys/t_connect.c |  29 +++++++++++++++++++++++------
 1 files changed, 23 insertions(+), 6 deletions(-)

diffs (58 lines):

diff -r e7b128b76467 -r f2c9c4c8d45c tests/net/sys/t_connect.c
--- a/tests/net/sys/t_connect.c Sat Jun 12 14:18:21 2010 +0000
+++ b/tests/net/sys/t_connect.c Sat Jun 12 14:31:29 2010 +0000
@@ -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,10 +45,22 @@
 }
 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);
 
-       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,
@@ -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);
 }
 



Home | Main Index | Thread Index | Old Index