merge fixes from RHEL (r1848298, etc)
This commit is contained in:
parent
e862bd87cf
commit
cc68ed4869
87
mod_fcgid-2.3.9-r1848298.patch
Normal file
87
mod_fcgid-2.3.9-r1848298.patch
Normal file
@ -0,0 +1,87 @@
|
||||
# ./pullrev.sh 1848298
|
||||
|
||||
http://svn.apache.org/viewvc?view=revision&revision=1848298
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1652493
|
||||
|
||||
--- mod_fcgid-2.3.9/modules/fcgid/fcgid_bridge.c
|
||||
+++ mod_fcgid-2.3.9/modules/fcgid/fcgid_bridge.c
|
||||
@@ -526,7 +526,8 @@
|
||||
}
|
||||
|
||||
static int add_request_body(request_rec *r, apr_pool_t *request_pool,
|
||||
- apr_bucket_brigade *output_brigade)
|
||||
+ apr_bucket_brigade *output_brigade,
|
||||
+ apr_off_t *body_length)
|
||||
{
|
||||
apr_bucket *bucket_input, *bucket_header;
|
||||
apr_file_t *fd = NULL;
|
||||
@@ -729,22 +730,49 @@
|
||||
}
|
||||
APR_BRIGADE_INSERT_TAIL(output_brigade, bucket_header);
|
||||
|
||||
+ *body_length = request_size;
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
int bridge_request(request_rec * r, int role, fcgid_cmd_conf *cmd_conf)
|
||||
{
|
||||
- apr_bucket_brigade *output_brigade;
|
||||
+ apr_bucket_brigade *output_brigade, *body_brigade;
|
||||
apr_bucket *bucket_eos;
|
||||
- char **envp = ap_create_environment(r->pool,
|
||||
- r->subprocess_env);
|
||||
+ char **envp;
|
||||
int rc;
|
||||
|
||||
/* Create brigade for the request to fastcgi server */
|
||||
+ body_brigade
|
||||
+ = apr_brigade_create(r->pool, r->connection->bucket_alloc);
|
||||
output_brigade =
|
||||
apr_brigade_create(r->pool, r->connection->bucket_alloc);
|
||||
|
||||
- /* Build the begin request and environ request, append them to output_brigade */
|
||||
+ /* In responder mode, handle the request body up front to ensure
|
||||
+ * the content-length is known (even if the request body is
|
||||
+ * chunked) and sent in the header. */
|
||||
+ if (role == FCGI_RESPONDER) {
|
||||
+ apr_off_t body_length;
|
||||
+
|
||||
+ rc = add_request_body(r, r->pool, body_brigade, &body_length);
|
||||
+ if (rc) {
|
||||
+ return rc;
|
||||
+ }
|
||||
+
|
||||
+ if (body_length && !apr_table_get(r->headers_in, "Content-Length")) {
|
||||
+ ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
|
||||
+ "mod_fcgid: dechunked request body length %" APR_OFF_T_FMT,
|
||||
+ body_length);
|
||||
+
|
||||
+ apr_table_set(r->subprocess_env, "CONTENT_LENGTH",
|
||||
+ apr_off_t_toa(r->pool, body_length));
|
||||
+ apr_table_unset(r->subprocess_env, "HTTP_TRANSFER_ENCODING");
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ envp = ap_create_environment(r->pool, r->subprocess_env);
|
||||
+
|
||||
+ /* Build the begin request and environ request, add them to output_brigade */
|
||||
if (!build_begin_block
|
||||
(role, r, r->connection->bucket_alloc, output_brigade)
|
||||
|| !build_env_block(r, envp, r->connection->bucket_alloc,
|
||||
@@ -754,12 +782,8 @@
|
||||
return HTTP_INTERNAL_SERVER_ERROR;
|
||||
}
|
||||
|
||||
- if (role == FCGI_RESPONDER) {
|
||||
- rc = add_request_body(r, r->pool, output_brigade);
|
||||
- if (rc) {
|
||||
- return rc;
|
||||
- }
|
||||
- }
|
||||
+ /* Append the body output. */
|
||||
+ APR_BRIGADE_CONCAT(output_brigade, body_brigade);
|
||||
|
||||
/* The eos bucket now */
|
||||
bucket_eos = apr_bucket_eos_create(r->connection->bucket_alloc);
|
49
mod_fcgid-2.3.9-segfault-upload.patch
Normal file
49
mod_fcgid-2.3.9-segfault-upload.patch
Normal file
@ -0,0 +1,49 @@
|
||||
diff --git a/modules/fcgid/fcgid_proc_unix.c b/modules/fcgid/fcgid_proc_unix.c
|
||||
index 218f3f7..8b69a89 100644
|
||||
--- a/modules/fcgid/fcgid_proc_unix.c
|
||||
+++ b/modules/fcgid/fcgid_proc_unix.c
|
||||
@@ -762,14 +762,15 @@ apr_status_t proc_write_ipc(fcgid_ipc *ipc_handle,
|
||||
struct iovec vec[FCGID_VEC_COUNT];
|
||||
int nvec = 0;
|
||||
apr_bucket *e;
|
||||
+ apr_bucket_brigade* tmpbb = apr_brigade_create(output_brigade->p,output_brigade->bucket_alloc);
|
||||
|
||||
- for (e = APR_BRIGADE_FIRST(output_brigade);
|
||||
- e != APR_BRIGADE_SENTINEL(output_brigade);
|
||||
- e = APR_BUCKET_NEXT(e)) {
|
||||
+ while (!APR_BRIGADE_EMPTY(output_brigade)) {
|
||||
+ e = APR_BRIGADE_FIRST(output_brigade);
|
||||
apr_size_t len;
|
||||
const char* base;
|
||||
|
||||
if (APR_BUCKET_IS_METADATA(e)) {
|
||||
+ apr_bucket_delete(e);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -780,6 +781,9 @@ apr_status_t proc_write_ipc(fcgid_ipc *ipc_handle,
|
||||
return rv;
|
||||
}
|
||||
|
||||
+ APR_BUCKET_REMOVE(e);
|
||||
+ APR_BRIGADE_INSERT_TAIL(tmpbb, e);
|
||||
+
|
||||
vec[nvec].iov_len = len;
|
||||
vec[nvec].iov_base = (char*) base;
|
||||
if (nvec == (FCGID_VEC_COUNT - 1)) {
|
||||
@@ -789,6 +793,7 @@ apr_status_t proc_write_ipc(fcgid_ipc *ipc_handle,
|
||||
FCGID_VEC_COUNT)) != APR_SUCCESS)
|
||||
return rv;
|
||||
nvec = 0;
|
||||
+ apr_brigade_cleanup(tmpbb);
|
||||
}
|
||||
else
|
||||
nvec++;
|
||||
@@ -800,6 +805,7 @@ apr_status_t proc_write_ipc(fcgid_ipc *ipc_handle,
|
||||
return rv;
|
||||
}
|
||||
|
||||
+ apr_brigade_destroy(tmpbb);
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
|
@ -35,7 +35,7 @@
|
||||
|
||||
Name: mod_fcgid
|
||||
Version: 2.3.9
|
||||
Release: 21%{?dist}
|
||||
Release: 22%{?dist}
|
||||
Summary: FastCGI interface module for Apache 2
|
||||
License: ASL 2.0
|
||||
URL: http://httpd.apache.org/mod_fcgid/
|
||||
@ -46,6 +46,8 @@ Source3: mod_fcgid-2.1-README.SELinux
|
||||
Source4: mod_fcgid-tmpfs.conf
|
||||
Source5: fcgid24.conf
|
||||
Patch0: mod_fcgid-2.3.4-fixconf-shellbang.patch
|
||||
Patch1: mod_fcgid-2.3.9-segfault-upload.patch
|
||||
Patch2: mod_fcgid-2.3.9-r1848298.patch
|
||||
BuildRequires: coreutils
|
||||
BuildRequires: gcc
|
||||
BuildRequires: httpd-devel >= 2.0
|
||||
@ -76,6 +78,9 @@ cp -p %{SOURCE5} fcgid24.conf
|
||||
%patch0 -p1
|
||||
%endif
|
||||
|
||||
%patch1 -p1 -b .segfault_upload
|
||||
%patch2 -p1 -b .r1848298
|
||||
|
||||
%build
|
||||
APXS=%{_httpd_apxs} ./configure.apxs
|
||||
make
|
||||
@ -127,6 +132,9 @@ install -p -m 644 %{SOURCE4} %{buildroot}%{_tmpfilesdir}/mod_fcgid.conf
|
||||
%dir %attr(0775,root,apache) %{rundir}/mod_fcgid/
|
||||
|
||||
%changelog
|
||||
* Thu Aug 27 2020 Joe Orton <jorton@redhat.com> - 2.3.9-22
|
||||
- merge fixes from RHEL (r1848298, etc)
|
||||
|
||||
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.9-21
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user