File fix-header-handling.diff of Package rubygem-passenger
--- ./src/apache2_module/Hooks.cpp.orig 2015-11-23 13:15:44.812756338 +0100
+++ ./src/apache2_module/Hooks.cpp 2015-11-23 15:40:20.085100070 +0100
@@ -767,10 +767,12 @@
char *current = result + sizeof("HTTP_") - 1;
while (*current != '\0') {
- if (*current == '-') {
+ if (apr_isalnum(*current)) {
+ *current = apr_toupper(*current);
+ } else if (*current == '-') {
*current = '_';
} else {
- *current = apr_toupper(*current);
+ return NULL;
}
current++;
}
@@ -852,6 +854,16 @@
}
}
+ bool valid_header_key(const char *current) {
+ while (*current != '\0') {
+ if (!apr_isalnum(*current) && *current != '-') {
+ return false;
+ }
+ current++;
+ }
+ return true;
+ }
+
string constructRequestHeaders(request_rec *r, DirectoryMapper &mapper,
bool &bodyIsChunked)
{
@@ -915,6 +927,9 @@
{
transferEncodingHeader = &hdrs[i];
} else {
+ if (!valid_header_key(hdrs[i].key)) {
+ continue;
+ }
result.append(hdrs[i].key);
result.append(": ", 2);
if (hdrs[i].val != NULL) {