mirror of
https://github.com/nmap/nmap.git
synced 2025-12-22 07:29:01 +00:00
Tests for UNIX sockets implementation in Ncat
Added tests for UNIX domain sockets to the ncat_test.pl script. Added tests for: 1. listening on and connecting to UNIX STREAM socket. 2. listening on and connecting to (client with random socket) UNIX DGRAM socket. 3. connecting to UNIX DGRAM socket with given source socket (with "-s").
This commit is contained in:
@@ -21,6 +21,8 @@ my $HOST = "localhost";
|
||||
my $IPV6_ADDR = "::1";
|
||||
my $PORT = 40000;
|
||||
my $PROXY_PORT = 40001;
|
||||
my $UNIXSOCK = "ncat.unixsock";
|
||||
my $UNIXSOCK_TMP = "ncat.unixsock_tmp";
|
||||
|
||||
my $BUFSIZ = 1024;
|
||||
|
||||
@@ -531,6 +533,36 @@ sub {
|
||||
};
|
||||
kill_children;
|
||||
|
||||
# Test UNIX domain sockets listening
|
||||
($s_pid, $s_out, $s_in) = ncat("-l", "-U", $UNIXSOCK);
|
||||
test "Server UNIX socket listen on $UNIXSOCK (STREAM)",
|
||||
sub {
|
||||
my $resp;
|
||||
|
||||
unlink($UNIXSOCK);
|
||||
my ($c_pid, $c_out, $c_in) = ncat("-U", $UNIXSOCK);
|
||||
syswrite($c_in, "abc\n");
|
||||
$resp = timeout_read($s_out);
|
||||
$resp eq "abc\n" or die "Server got \"$resp\", not \"abc\\n\" from client";
|
||||
};
|
||||
kill_children;
|
||||
unlink($UNIXSOCK);
|
||||
|
||||
($s_pid, $s_out, $s_in) = ncat("-l", "-U", "--udp", $UNIXSOCK);
|
||||
test "Server UNIX socket listen on $UNIXSOCK --udp (DGRAM)",
|
||||
sub {
|
||||
my $resp;
|
||||
|
||||
unlink($UNIXSOCK);
|
||||
my ($c_pid, $c_out, $c_in) = ncat("-U", "--udp", $UNIXSOCK);
|
||||
syswrite($c_in, "abc\n");
|
||||
$resp = timeout_read($s_out);
|
||||
$resp eq "abc\n" or die "Server got \"$resp\", not \"abc\\n\" from client";
|
||||
};
|
||||
kill_children;
|
||||
unlink($UNIXSOCK);
|
||||
|
||||
|
||||
server_client_test "Connect success exit code",
|
||||
[], ["--send-only"], sub {
|
||||
my ($pid, $code);
|
||||
@@ -1231,6 +1263,33 @@ sub {
|
||||
};
|
||||
kill_children;
|
||||
|
||||
# Test connecting to UNIX datagram socket with -s
|
||||
test "Connect to UNIX datagram socket with -s",
|
||||
sub {
|
||||
my ($pid, $code);
|
||||
local $SIG{CHLD} = sub { };
|
||||
local *SOCK;
|
||||
my $buff;
|
||||
|
||||
unlink($UNIXSOCK);
|
||||
unlink($UNIXSOCK_TMP);
|
||||
|
||||
socket(SOCK, AF_UNIX, SOCK_DGRAM, 0) or die;
|
||||
bind(SOCK, sockaddr_un($UNIXSOCK)) or die;
|
||||
|
||||
my ($c_pid, $c_out, $c_in) = ncat("-U", "--udp", "-s", $UNIXSOCK_TMP, $UNIXSOCK);
|
||||
syswrite($c_in, "abc\n");
|
||||
close($c_in);
|
||||
|
||||
my $peeraddr = recv(SOCK, $buff, 4, 0) or die;
|
||||
my ($path) = sockaddr_un($peeraddr);
|
||||
$path eq $UNIXSOCK_TMP or die "Client connected to prosy with source socket path $path, not $UNIXSOCK_TMP";
|
||||
};
|
||||
kill_children;
|
||||
unlink($UNIXSOCK);
|
||||
unlink($UNIXSOCK_TMP);
|
||||
|
||||
|
||||
# HTTP proxy tests.
|
||||
|
||||
sub http_request {
|
||||
|
||||
Reference in New Issue
Block a user