Blame t/malicious-commands.t

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