Blame t/malicious-commands.t

Packit 4e8bc4
#!/usr/bin/perl
Packit 4e8bc4
Packit 4e8bc4
# These command strings are always expected to be malicious and as such we
Packit 4e8bc4
# should just hang up on them.
Packit 4e8bc4
Packit 4e8bc4
use strict;
Packit 4e8bc4
use Test::More tests => 3;
Packit 4e8bc4
use FindBin qw($Bin);
Packit 4e8bc4
use lib "$Bin/lib";
Packit 4e8bc4
use MemcachedTest;
Packit 4e8bc4
Packit 4e8bc4
my @strs = (
Packit 4e8bc4
    "GET / HTTP/1.0",
Packit 4e8bc4
    "PUT /asdf/asd/fasdfasdf/sadf HTTP/1.1",
Packit 4e8bc4
    "DELETE HTTP/1.1"
Packit 4e8bc4
);
Packit 4e8bc4
Packit 4e8bc4
for my $str (@strs) {
Packit 4e8bc4
    my $server = new_memcached();
Packit 4e8bc4
    my $sock = $server->sock;
Packit 4e8bc4
Packit 4e8bc4
    print $sock "$str\r\n";
Packit 4e8bc4
Packit 4e8bc4
    # Five seconds ought to be enough to get hung up on.
Packit 4e8bc4
    my $oldalarmt = alarm(5);
Packit 4e8bc4
Packit 4e8bc4
    # Verify we can't read anything.
Packit 4e8bc4
    my $bytesread = -1;
Packit 4e8bc4
    eval {
Packit 4e8bc4
        local $SIG{'ALRM'} = sub { die "timeout" };
Packit 4e8bc4
        my $data = "";
Packit 4e8bc4
        $bytesread = sysread($sock, $data, 24),
Packit 4e8bc4
    };
Packit 4e8bc4
    is($bytesread, 0, $str);
Packit 4e8bc4
Packit 4e8bc4
    # Restore signal stuff.
Packit 4e8bc4
    alarm($oldalarmt);
Packit 4e8bc4
}