1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-30 03:19:02 +00:00

Break out separate SCTP tests for half-open sockets.

These should have different behavior than TCP.
http://seclists.org/nmap-dev/2013/q1/227
This commit is contained in:
david
2013-02-23 06:54:28 +00:00
parent 84773c74a5
commit a9cb84f189

View File

@@ -191,6 +191,10 @@ sub server_client_test_tcp_ssl {
server_client_test_multi(["tcp", "tcp ssl"], @_);
}
sub server_client_test_sctp_ssl {
server_client_test_multi(["sctp", "sctp ssl"], @_);
}
# Set up a proxy running on $PROXY_PORT. Start a server on $PORT and connect a
# client to the server through the proxy. The proxy is controlled through the
# variables
@@ -790,7 +794,7 @@ server_client_test_tcp_ssl "--send-only server closes socket write and stops run
};
kill_children;
server_client_test_tcp_sctp_ssl "Client closes stdout and keeps running after socket EOF",
server_client_test_tcp_ssl "Client closes stdout and keeps running after socket EOF",
[], [], sub {
my $resp;
@@ -807,6 +811,25 @@ server_client_test_tcp_sctp_ssl "Client closes stdout and keeps running after so
};
kill_children;
# SCTP doesn't have half-open sockets, so the program should exit.
# http://seclists.org/nmap-dev/2013/q1/203
server_client_test_sctp_ssl "Client closes stdout and stops running after socket EOF",
[], [], sub {
my $resp;
syswrite($s_in, "abc\n");
$resp = timeout_read($c_out) or die "Read timeout";
$resp eq "abc\n" or die "Client got \"$resp\", not \"abc\\n\"";
close($s_in);
$resp = timeout_read($c_out);
!defined($resp) or die "Client didn't get EOF and didn't exit (got \"$resp\")";
sleep 1;
waitpid($c_pid, WNOHANG) == -1 or die "Client still running";
};
kill_children;
server_client_test_tcp_sctp_ssl "--recv-only client closes stdout and stops running after socket EOF",
[], ["--recv-only"], sub {
my $resp;
@@ -831,7 +854,7 @@ kill_children;
# where tar on the listening side could be any program that potentially buffers
# its input. The listener must close its standard output so the program knows
# to stop reading and process what remains in its buffer.
server_client_test_tcp_sctp_ssl "Server closes stdout and keeps running after socket EOF",
server_client_test_tcp_ssl "Server closes stdout and keeps running after socket EOF",
[], [], sub {
my $resp;
@@ -848,6 +871,23 @@ server_client_test_tcp_sctp_ssl "Server closes stdout and keeps running after so
};
kill_children;
server_client_test_sctp_ssl "Server closes stdout and stops running after socket EOF",
[], [], sub {
my $resp;
syswrite($c_in, "abc\n");
$resp = timeout_read($s_out) or die "Read timeout";
$resp eq "abc\n" or die "Server got \"$resp\", not \"abc\\n\"";
close($c_in);
$resp = timeout_read($s_out);
!defined($resp) or die "Server didn't send EOF";
sleep 1;
waitpid($s_pid, WNOHANG) == -1 or die "Server still running";
};
kill_children;
server_client_test_tcp_sctp_ssl "--recv-only server closes stdout and stops running after socket EOF",
["--recv-only"], [], sub {
my $resp;