mirror of
https://github.com/monitoring-plugins/monitoring-plugins.git
synced 2026-06-08 16:26:23 -04:00
Fixed bug where extra headers and redirect caused segfault (Dieter Van de Walle - 2089159)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@2076 f882894a-f735-0410-b71e-b25c423dba1c
This commit is contained in:
parent
288b742ed6
commit
6c5f781bc5
4 changed files with 34 additions and 3 deletions
1
NEWS
1
NEWS
|
|
@ -13,6 +13,7 @@ This file documents the major additions and syntax changes between releases.
|
|||
Fixed segfault in extra-opts under some circumstance when reading multiple sections
|
||||
Fix long options parsing in check_tcp
|
||||
check_icmp now reports min and max round trip time perfdata (Steve Rader)
|
||||
Fixed bug where additional headers with redirection caused a segfault (Dieter Van de Walle - 2089159)
|
||||
|
||||
1.4.13 25th Sept 2008
|
||||
Fix Debian bug #460097: check_http --max-age broken (Hilko Bengen)
|
||||
|
|
|
|||
|
|
@ -241,3 +241,4 @@ Erik Wasser
|
|||
Tilman Koschnick
|
||||
Olivier 'Babar' Raginel
|
||||
Steve Rader
|
||||
Dieter Van de Walle
|
||||
|
|
|
|||
|
|
@ -815,7 +815,9 @@ check_http (void)
|
|||
for ((pos = strtok(http_opt_headers[i], INPUT_DELIMITER)); pos; (pos = strtok(NULL, INPUT_DELIMITER)))
|
||||
asprintf (&buf, "%s%s\r\n", buf, pos);
|
||||
}
|
||||
free(http_opt_headers);
|
||||
/* This cannot be free'd here because a redirection will then try to access this and segfault */
|
||||
/* Covered in a testcase in tests/check_http.t */
|
||||
/* free(http_opt_headers); */
|
||||
}
|
||||
|
||||
/* optionally send the authentication info */
|
||||
|
|
|
|||
|
|
@ -28,7 +28,8 @@ if ($pid) {
|
|||
#print "child\n";
|
||||
|
||||
my $d = HTTP::Daemon->new(
|
||||
LocalPort => $port
|
||||
LocalPort => $port,
|
||||
LocalAddr => "127.0.0.1",
|
||||
) || die;
|
||||
print "Please contact me at: <URL:", $d->url, ">\n";
|
||||
while (my $c = $d->accept ) {
|
||||
|
|
@ -57,6 +58,12 @@ if ($pid) {
|
|||
$c->send_basic_header;
|
||||
$c->send_crlf;
|
||||
$c->send_response($r->method.":".$r->content);
|
||||
} elsif ($r->url->path eq "/redirect") {
|
||||
$c->send_redirect( "/redirect2" );
|
||||
} elsif ($r->url->path eq "/redirect2") {
|
||||
$c->send_basic_header;
|
||||
$c->send_crlf;
|
||||
$c->send_response("redirected");
|
||||
} else {
|
||||
$c->send_error(RC_FORBIDDEN);
|
||||
}
|
||||
|
|
@ -73,7 +80,7 @@ if ($ARGV[0] && $ARGV[0] eq "-d") {
|
|||
}
|
||||
|
||||
if (-x "./check_http") {
|
||||
plan tests => 39;
|
||||
plan tests => 47;
|
||||
} else {
|
||||
plan skip_all => "No check_http compiled";
|
||||
}
|
||||
|
|
@ -180,3 +187,23 @@ $result = NPTest->testCmd( $cmd );
|
|||
is( $result->return_code, 0, $cmd);
|
||||
like( $result->output, '/^HTTP OK HTTP/1.1 200 OK - ([\d\.]+) second/', "Output correct: ".$result->output );
|
||||
|
||||
$cmd = "$command -u /redirect";
|
||||
$result = NPTest->testCmd( $cmd );
|
||||
is( $result->return_code, 0, $cmd);
|
||||
like( $result->output, '/^HTTP OK - HTTP/1.1 301 Moved Permanently - [\d\.]+ second/', "Output correct: ".$result->output );
|
||||
|
||||
$cmd = "$command -f follow -u /redirect";
|
||||
$result = NPTest->testCmd( $cmd );
|
||||
is( $result->return_code, 0, $cmd);
|
||||
like( $result->output, '/^HTTP OK HTTP/1.1 200 OK - 183 bytes in [\d\.]+ second/', "Output correct: ".$result->output );
|
||||
|
||||
$cmd = "$command -u /redirect -k 'follow: me'";
|
||||
$result = NPTest->testCmd( $cmd );
|
||||
is( $result->return_code, 0, $cmd);
|
||||
like( $result->output, '/^HTTP OK - HTTP/1.1 301 Moved Permanently - [\d\.]+ second/', "Output correct: ".$result->output );
|
||||
|
||||
$cmd = "$command -f follow -u /redirect -k 'follow: me'";
|
||||
$result = NPTest->testCmd( $cmd );
|
||||
is( $result->return_code, 0, $cmd);
|
||||
like( $result->output, '/^HTTP OK HTTP/1.1 200 OK - 183 bytes in [\d\.]+ second/', "Output correct: ".$result->output );
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue