|
Packit |
4e8bc4 |
#!/usr/bin/perl
|
|
Packit |
4e8bc4 |
|
|
Packit |
4e8bc4 |
use strict;
|
|
Packit |
4e8bc4 |
use Test::More;
|
|
Packit |
4e8bc4 |
use FindBin qw($Bin);
|
|
Packit |
4e8bc4 |
use Socket qw(MSG_PEEK MSG_DONTWAIT);
|
|
Packit |
4e8bc4 |
use lib "$Bin/lib";
|
|
Packit |
4e8bc4 |
use MemcachedTest;
|
|
Packit |
4e8bc4 |
|
|
Packit |
4e8bc4 |
if (!enabled_tls_testing() && supports_drop_priv()) {
|
|
Packit |
4e8bc4 |
plan tests => 1;
|
|
Packit |
4e8bc4 |
} else {
|
|
Packit |
4e8bc4 |
plan skip_all => 'Privilege drop not supported';
|
|
Packit |
4e8bc4 |
exit 0;
|
|
Packit |
4e8bc4 |
}
|
|
Packit |
4e8bc4 |
|
|
Packit |
4e8bc4 |
my $server = new_memcached('-o drop_privileges');
|
|
Packit |
4e8bc4 |
my $sock = $server->sock;
|
|
Packit |
4e8bc4 |
|
|
Packit |
4e8bc4 |
print $sock "misbehave\r\n";
|
|
Packit |
4e8bc4 |
sleep(1);
|
|
Packit |
4e8bc4 |
|
|
Packit |
4e8bc4 |
# check if the socket is dead now
|
|
Packit |
4e8bc4 |
my $buff;
|
|
Packit |
4e8bc4 |
my $ret = recv($sock, $buff, 1, MSG_PEEK | MSG_DONTWAIT);
|
|
Packit |
4e8bc4 |
# ret = 0 means read 0 bytes, which means a closed socket
|
|
Packit |
4e8bc4 |
ok($ret == 0, "did not allow misbehaving");
|
|
Packit |
4e8bc4 |
|
|
Packit |
4e8bc4 |
$server->DESTROY();
|