1
0
Fork 0
mirror of https://gitlab.alpinelinux.org/alpine/aports.git synced 2025-07-19 01:05:15 +03:00

testing/apache2-mod-perl: add fedora patches

This commit is contained in:
Natanael Copa 2018-10-12 18:37:49 +00:00
parent f5608240f6
commit c5c23eafc1
5 changed files with 258 additions and 6 deletions

View file

@ -4,7 +4,7 @@
pkgname=apache2-mod-perl
_pkgreal=mod_perl
pkgver=2.0.10
pkgrel=2
pkgrel=3
pkgdesc="Perl Module for Apache2"
url="https://perl.apache.org/"
arch="all"
@ -14,6 +14,10 @@ depends_dev="$pkgname"
makedepends="apache2-dev perl-dev perl-linux-pid apr-dev apr-util-dev"
subpackages="$pkgname-doc $pkgname-dev"
source="https://www-eu.apache.org/dist/perl/$_pkgreal-$pkgver.tar.gz
mod_perl-2.0.10-http_syntax.patch
mod_perl-2.0.10-inject_header_line_terminators.patch
mod_perl-2.0.10-restrict_perl_section_to_server_scope.patch
mod_perl-2.0.7-fix_pipelines_reponse_deadlock_in_tests.patch
$pkgname.conf"
builddir="$srcdir/$_pkgreal-$pkgver"
@ -27,7 +31,7 @@ build() {
check() {
cd "$builddir"
make test
make -j1 test
}
@ -50,9 +54,9 @@ dev() {
"$subpkgdir"/usr/lib/perl5/vendor_perl/auto/Apache2
}
md5sums="cef55e715b5770a63b3becbe9d271121 mod_perl-2.0.10.tar.gz
326cad2b2324c4a59fde4c232e8465b1 apache2-mod-perl.conf"
sha256sums="d1cf83ed4ea3a9dfceaa6d9662ff645177090749881093051020bf42f9872b64 mod_perl-2.0.10.tar.gz
02b359afff4da0c4a94cc2c253505f301f8b4fca5a14655fdd846f07cbd33530 apache2-mod-perl.conf"
sha512sums="0bf1a885cb32a3393e95f87e71983097613e263b9052dbf22494663b506e36a25d0256afed24285232276d9f43ebd3adaa18b91129bfb62116a8ccb023855bca mod_perl-2.0.10.tar.gz
bd4d84d4f464edaa59d514e604e3f33a7f7504084cb9f36ecff76a952cb2af1278185defdc2ad44bbc9f762bdfaabcca942808cf016ba5370e010db9f164f837 mod_perl-2.0.10-http_syntax.patch
5ad666766994116c59569581c5e9e09cec17e4122348885f639be1ad0a0efe57ba6694fd11af3acad9f66c85432f864dc627f2a6ee2cee4ead61a2e27af2c33f mod_perl-2.0.10-inject_header_line_terminators.patch
efc80b02b405f05dc1ed7648d7b838d09222049ce7e5487f50052c65c57ea6418a39e5abebc15e5a3cc670a10f0e80749cac0488961d71fa13b9dc86919f4400 mod_perl-2.0.10-restrict_perl_section_to_server_scope.patch
4529097462c5deb40ca548c91776638118a4ec7e2701e5b2b9c89dc0cf116574bcd2f5115afccc192a4cfd906916bc0a13489f4d77e9fe6d05c6017eb3c04004 mod_perl-2.0.7-fix_pipelines_reponse_deadlock_in_tests.patch
15a430ce597e370997a08d6aa1b5e55d4fa723ecac031fe39906c8cc767b90d5bf63e3026dfaa8b10ae8b09a17832f4f07cb8b2fdcd6c9ef427edfaf4e8a48b0 apache2-mod-perl.conf"

View file

@ -0,0 +1,33 @@
From 4a803fdb4c9eae8538293fe31c9222eecb6465be Mon Sep 17 00:00:00 2001
From: Niko Tyni <ntyni@debian.org>
Date: Fri, 23 Dec 2016 18:27:23 +0200
Subject: [PATCH 1/2] Fix t/apache/read.t HTTP syntax for Apache 2.4.24
compatibility
HTTP/1.1 RFC 7230, section 2.6. "Protocol Versioning" says the HTTP name
is case sensitive. Starting with Apache 2.4.24, using lower case will
make the server issue a 400 Bad request response, causing a test failure.
https://tools.ietf.org/html/rfc7230#section-2.6
Bug-Debian: https://bugs.debian.org/849082
---
t/apache/read.t | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/t/apache/read.t b/t/apache/read.t
index 83670c9..9f7f504 100644
--- a/t/apache/read.t
+++ b/t/apache/read.t
@@ -24,7 +24,7 @@ close $fh;
my $size = length $data;
-for my $string ("POST $location http/1.0",
+for my $string ("POST $location HTTP/1.0",
"Content-length: $size",
"") {
my $line = "$string\r\n";
--
2.11.0

View file

@ -0,0 +1,45 @@
From d59229cf4f5b91ed58e25e27977e76f59096b72d Mon Sep 17 00:00:00 2001
From: Niko Tyni <ntyni@debian.org>
Date: Sat, 24 Dec 2016 23:07:28 +0200
Subject: [PATCH 2/2] Fix in_bbs_inject_header line terminators for Apache
2.4.24 compatibility
rfc7230 3.5 says:
Although the line terminator for the start-line and header fields is
the sequence CRLF, a recipient MAY recognize a single LF as a line
terminator and ignore any preceding CR.
Apache with strict enabled chooses not to implement the MAY.
Author: Stefan Fritsch <sf@sfritsch.de>
Bug-Debian: https://bugs.debian.org/849082
---
t/filter/TestFilter/in_bbs_inject_header.pm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/t/filter/TestFilter/in_bbs_inject_header.pm b/t/filter/TestFilter/in_bbs_inject_header.pm
index b09d6f9..5380c65 100644
--- a/t/filter/TestFilter/in_bbs_inject_header.pm
+++ b/t/filter/TestFilter/in_bbs_inject_header.pm
@@ -181,7 +181,7 @@ sub handler : FilterConnectionHandler {
if ($data and $data =~ /^POST/) {
# demonstrate how to add a header while processing other headers
- my $header = "$header1_key: $header1_val\n";
+ my $header = "$header1_key: $header1_val\r\n";
push @{ $ctx->{buckets} }, APR::Bucket->new($c->bucket_alloc, $header);
debug "queued header [$header]";
}
@@ -199,7 +199,7 @@ sub handler : FilterConnectionHandler {
# we hit the headers and body separator, which is a good
# time to add extra headers:
for my $key (keys %headers) {
- my $header = "$key: $headers{$key}\n";
+ my $header = "$key: $headers{$key}\r\n";
push @{ $ctx->{buckets} }, APR::Bucket->new($c->bucket_alloc, $header);
debug "queued header [$header]";
}
--
2.11.0

View file

@ -0,0 +1,62 @@
From jani@ulrik.uio.no Wed Oct 05 09:38:47 2011
To: 644169@bugs.debian.org
Subject: Re: Bug#644169: libapache2-mod-perl2: PerlOptions -Sections not
permitted in server config, but should be
From: Jan Ingvoldstad <jani+debian-2011+@ifi.uio.no>
Date: Wed, 05 Oct 2011 11:38:37 +0200
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=utf-8
Here is a patch that ensures that <Perl> (and Pod) sections are only
allowed in the server configuration and not per directory, which
incidentally matches the specification table here:
http://perl.apache.org/docs/2.0/user/config/config.html#mod_perl_Directives_Argument_Types_and_Allowed_Location
The patch has been tested on the same system where I identified the
problem.
The patch solves the issue for me, and leaves only the following
issues, as far as I can tell:
- Should there be fine-grained control as "PerlOptions -Sections"
implies or not?
- The mod_perl documentation (online and in the module) probably
needs to be changed to reflect that PerlOptions -Sections does not
work.
Description: allow Perl and Pod sections only in server config
Author: Jan Ingvoldstad <jani+debian-mod-perl-2011+@ifi.uio.no>
Last-Update: 2011-10-05
--- a/src/modules/perl/mod_perl.c 2011-02-02 21:23:45.000000000 +0100
+++ b/src/modules/perl/mod_perl.c 2011-10-05 11:05:52.977576861 +0200
@@ -913,18 +913,18 @@
MP_CMD_DIR_ITERATE2("PerlAddVar", add_var, "PerlAddVar"),
MP_CMD_DIR_TAKE2("PerlSetEnv", set_env, "PerlSetEnv"),
MP_CMD_SRV_TAKE1("PerlPassEnv", pass_env, "PerlPassEnv"),
- MP_CMD_DIR_RAW_ARGS_ON_READ("<Perl", perl, "Perl Code"),
- MP_CMD_DIR_RAW_ARGS("Perl", perldo, "Perl Code"),
+ MP_CMD_SRV_RAW_ARGS_ON_READ("<Perl", perl, "Perl Code"),
+ MP_CMD_SRV_RAW_ARGS("Perl", perldo, "Perl Code"),
MP_CMD_DIR_TAKE1("PerlSetInputFilter", set_input_filter,
"filter[;filter]"),
MP_CMD_DIR_TAKE1("PerlSetOutputFilter", set_output_filter,
"filter[;filter]"),
- MP_CMD_DIR_RAW_ARGS_ON_READ("=pod", pod, "Start of POD"),
- MP_CMD_DIR_RAW_ARGS_ON_READ("=back", pod, "End of =over"),
- MP_CMD_DIR_RAW_ARGS_ON_READ("=cut", pod_cut, "End of POD"),
- MP_CMD_DIR_RAW_ARGS_ON_READ("__END__", END, "Stop reading config"),
+ MP_CMD_SRV_RAW_ARGS_ON_READ("=pod", pod, "Start of POD"),
+ MP_CMD_SRV_RAW_ARGS_ON_READ("=back", pod, "End of =over"),
+ MP_CMD_SRV_RAW_ARGS_ON_READ("=cut", pod_cut, "End of POD"),
+ MP_CMD_SRV_RAW_ARGS_ON_READ("__END__", END, "Stop reading config"),
MP_CMD_SRV_RAW_ARGS("PerlLoadModule", load_module, "A Perl module"),
#ifdef MP_TRACE

View file

@ -0,0 +1,108 @@
Fix pipelined response deadlock in tests
There's a race condition that can cause mod_perl's test suite to hang
in t/filter/in_str_declined.t. The problem is that the response handler
starts generating response body, and so triggers header output, before
it reads the request body. If LWP::Protocol::http, which is the client
for this test, receives a complete set of response headers, it will stop
sending the request body. (However, if the request body is no more than
8192 octets then it will send the whole body before it starts looking
for a response. The failure only shows up with an appreciably large
request body.)
RFC 2616 doesn't explicitly address this sort of pipelining, but the
start of section 6 does say "After receiving and interpreting a request
message, a server responds with an HTTP response message.", which can be
read as prohibiting sending any part of the response before the entire
request has been received.
The attached patch fixes this issue by making all the POST handlers in
the test suite read the body before doing anything that generates output
(specifically plan()).
-zefram
CPAN RT#82409
Debian bug #676754
--- a/t/filter/TestFilter/in_str_declined.pm 2011-02-08 02:00:11.000000000 +0000
+++ b/t/filter/TestFilter/in_str_declined.pm 2013-01-04 16:08:14.000000000 +0000
@@ -35,13 +35,17 @@
sub response {
my $r = shift;
+ my $data;
+ if ($r->method_number == Apache2::Const::M_POST) {
+ # consume the data so the input filter is invoked
+ $data = TestCommon::Utils::read_post($r);
+ }
+
plan $r, tests => 2;
$r->content_type('text/plain');
if ($r->method_number == Apache2::Const::M_POST) {
- # consume the data so the input filter is invoked
- my $data = TestCommon::Utils::read_post($r);
ok t_cmp(length $data, 20000, "the request body received ok");
}
--- a/t/filter/TestFilter/in_str_declined_read.pm 2011-02-08 02:00:11.000000000 +0000
+++ b/t/filter/TestFilter/in_str_declined_read.pm 2013-01-04 16:06:28.000000000 +0000
@@ -31,14 +31,19 @@
sub response {
my $r = shift;
+ my $err;
+ if ($r->method_number == Apache2::Const::M_POST) {
+ # this should fail, because of the failing filter
+ eval { TestCommon::Utils::read_post($r) };
+ $err = $@;
+ }
+
plan $r, tests => 1;
$r->content_type('text/plain');
if ($r->method_number == Apache2::Const::M_POST) {
- # this should fail, because of the failing filter
- eval { TestCommon::Utils::read_post($r) };
- ok $@;
+ ok $err;
}
Apache2::Const::OK;
--- a/t/filter/TestFilter/in_str_msg.pm 2011-02-08 02:00:11.000000000 +0000
+++ b/t/filter/TestFilter/in_str_msg.pm 2013-01-04 16:08:27.000000000 +0000
@@ -76,10 +76,10 @@
sub response {
my $r = shift;
- plan $r, tests => 1;
-
my $received = TestCommon::Utils::read_post($r);
+ plan $r, tests => 1;
+
ok t_cmp($received, $expected,
"request filter must have upcased the data");
--- a/t/response/TestModperl/post_utf8.pm 2011-02-08 02:00:12.000000000 +0000
+++ b/t/response/TestModperl/post_utf8.pm 2013-01-04 16:04:39.000000000 +0000
@@ -29,14 +29,14 @@
# $r->content_type("text/plain; charset=utf-8");
# $r->print("expected: $expected_utf8\n");
+ my $received = TestCommon::Utils::read_post($r) || "";
+
# utf encode/decode was added only in 5.8.0
# XXX: currently binmode is only available with perlio (used on the
# server side on the tied/perlio STDOUT)
plan $r, tests => 2,
need need_min_perl_version(5.008), need_perl('perlio');
- my $received = TestCommon::Utils::read_post($r) || "";
-
# workaround for perl-5.8.0, which doesn't decode correctly a
# tainted variable
require ModPerl::Util;