passenger 6.0.25 → 6.0.26
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +6 -1
- data/src/agent/Core/Config.h +1 -1
- data/src/agent/Core/Controller/Config.h +1 -1
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +19 -21
- data/src/ruby_supportlib/phusion_passenger.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0715fd22339d788849a10399857aa8cacbcf6720fe409d7a94a3760aa5233597
|
4
|
+
data.tar.gz: 4a37b6dbe1d2631dfd4fc9b20a610beffc631466ec419bfaa2e65fe82eae4847
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea4c77be27c6cf6ef4148c33704382b0119bbe56ec40d9d3ec2e69e87a28dce4ecf23474826634930dd0f452074bf09404e6e7c75a8bc49f51107a01bb51b964
|
7
|
+
data.tar.gz: 2baf57d7686439f951da69c5d02dfd9f092a00ea306e9e16060b916418f55c7b815ad63f27eb80c89e17fb2046e62f1fb63b73e7a8ee33f0ad70857697d0baae
|
data/CHANGELOG
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
-
Release 6.0.
|
1
|
+
Release 6.0.26 (Not yet released)
|
2
|
+
-------------
|
3
|
+
* [CVE-2025-26803] The http parser (from Passenger 6.0.21-6.0.25) was susceptible to a denial of service attack when parsing a request with an invalid HTTP method.
|
4
|
+
|
5
|
+
|
6
|
+
Release 6.0.25
|
2
7
|
-------------
|
3
8
|
* Fixes compilation with clang 19 (latest Fedora update) by dropping a buggy stddev function from the moving average header. Closes GH-2580.
|
4
9
|
* [Standalone] Adds a config option to specify the stop timeout for Passenger: `--stop-timeout 120` or `PASSENGER_STOP_TIMEOUT=120`.
|
data/src/agent/Core/Config.h
CHANGED
@@ -168,7 +168,7 @@ using namespace std;
|
|
168
168
|
* security_update_checker_interval unsigned integer - default(86400)
|
169
169
|
* security_update_checker_proxy_url string - -
|
170
170
|
* security_update_checker_url string - default("https://securitycheck.phusionpassenger.com/v1/check.json")
|
171
|
-
* server_software string - default("Phusion_Passenger/6.0.
|
171
|
+
* server_software string - default("Phusion_Passenger/6.0.26")
|
172
172
|
* show_version_in_header boolean - default(true)
|
173
173
|
* single_app_mode_app_root string - default,read_only
|
174
174
|
* single_app_mode_app_start_command string - read_only
|
@@ -118,7 +118,7 @@ parseControllerBenchmarkMode(const StaticString &mode) {
|
|
118
118
|
* old_routing boolean - default(false),read_only
|
119
119
|
* request_freelist_limit unsigned integer - default(1024)
|
120
120
|
* response_buffer_high_watermark unsigned integer - default(134217728)
|
121
|
-
* server_software string - default("Phusion_Passenger/6.0.
|
121
|
+
* server_software string - default("Phusion_Passenger/6.0.26")
|
122
122
|
* show_version_in_header boolean - default(true)
|
123
123
|
* start_reading_after_accept boolean - default(true)
|
124
124
|
* stat_throttle_rate unsigned integer - default(10)
|
data/src/agent/Watchdog/Config.h
CHANGED
@@ -156,7 +156,7 @@ using namespace std;
|
|
156
156
|
* security_update_checker_interval unsigned integer - default(86400)
|
157
157
|
* security_update_checker_proxy_url string - -
|
158
158
|
* security_update_checker_url string - default("https://securitycheck.phusionpassenger.com/v1/check.json")
|
159
|
-
* server_software string - default("Phusion_Passenger/6.0.
|
159
|
+
* server_software string - default("Phusion_Passenger/6.0.26")
|
160
160
|
* setsid boolean - default(false)
|
161
161
|
* show_version_in_header boolean - default(true)
|
162
162
|
* single_app_mode_app_root string - default,read_only
|
@@ -83,7 +83,7 @@
|
|
83
83
|
#define PASSENGER_API_VERSION_MAJOR 0
|
84
84
|
#define PASSENGER_API_VERSION_MINOR 3
|
85
85
|
#define PASSENGER_DEFAULT_USER "nobody"
|
86
|
-
#define PASSENGER_VERSION "6.0.
|
86
|
+
#define PASSENGER_VERSION "6.0.26"
|
87
87
|
#define POOL_HELPER_THREAD_STACK_SIZE 262144
|
88
88
|
#define PROCESS_SHUTDOWN_TIMEOUT 60
|
89
89
|
#define PROCESS_SHUTDOWN_TIMEOUT_DISPLAY "1 minute"
|
@@ -119,31 +119,26 @@ private:
|
|
119
119
|
}
|
120
120
|
|
121
121
|
static size_t http_parser_execute_and_handle_pause(llhttp_t *parser,
|
122
|
-
const char *data, size_t len
|
122
|
+
const char *data, size_t len)
|
123
123
|
{
|
124
124
|
llhttp_errno_t rc = llhttp_get_errno(parser);
|
125
125
|
switch (rc) {
|
126
126
|
case HPE_PAUSED_UPGRADE:
|
127
127
|
llhttp_resume_after_upgrade(parser);
|
128
|
+
rc = llhttp_get_errno(parser);
|
128
129
|
goto happy_path;
|
129
130
|
case HPE_PAUSED:
|
130
131
|
llhttp_resume(parser);
|
132
|
+
rc = llhttp_get_errno(parser);
|
131
133
|
goto happy_path;
|
132
134
|
case HPE_OK:
|
135
|
+
rc = llhttp_execute(parser, data, len);
|
133
136
|
happy_path:
|
134
|
-
|
135
|
-
case HPE_PAUSED_H2_UPGRADE:
|
136
|
-
case HPE_PAUSED_UPGRADE:
|
137
|
-
case HPE_PAUSED:
|
138
|
-
paused = true;
|
139
|
-
return (llhttp_get_error_pos(parser) - data);
|
140
|
-
case HPE_OK:
|
137
|
+
if (rc == HPE_OK) {
|
141
138
|
return len;
|
142
|
-
|
143
|
-
|
144
|
-
}
|
139
|
+
}
|
140
|
+
// deliberate fall through
|
145
141
|
default:
|
146
|
-
error_path:
|
147
142
|
return (llhttp_get_error_pos(parser) - data);
|
148
143
|
}
|
149
144
|
}
|
@@ -488,20 +483,22 @@ public:
|
|
488
483
|
TRACE_POINT();
|
489
484
|
P_ASSERT_EQ(message->httpState, Message::PARSING_HEADERS);
|
490
485
|
|
491
|
-
size_t ret;
|
492
|
-
bool paused;
|
493
|
-
|
494
486
|
state->parser.data = this;
|
495
487
|
currentBuffer = &buffer;
|
496
|
-
ret = http_parser_execute_and_handle_pause(&state->parser,
|
497
|
-
buffer.start, buffer.size()
|
488
|
+
size_t ret = http_parser_execute_and_handle_pause(&state->parser,
|
489
|
+
buffer.start, buffer.size());
|
498
490
|
currentBuffer = NULL;
|
499
491
|
|
500
|
-
|
492
|
+
llhttp_errno_t llerrno = llhttp_get_errno(&state->parser);
|
493
|
+
|
494
|
+
bool paused = (llerrno == HPE_PAUSED_H2_UPGRADE || llerrno == HPE_PAUSED_UPGRADE || llerrno == HPE_PAUSED);
|
495
|
+
|
496
|
+
if ( (!llhttp_get_upgrade(&state->parser) && ret != buffer.size() && !paused) ||
|
497
|
+
(llerrno != HPE_OK && !paused) ) {
|
501
498
|
UPDATE_TRACE_POINT();
|
502
499
|
message->httpState = Message::ERROR;
|
503
|
-
switch (
|
504
|
-
case HPE_CB_HEADER_FIELD_COMPLETE
|
500
|
+
switch (llerrno) {
|
501
|
+
case HPE_CB_HEADER_FIELD_COMPLETE:// does this match? was HPE_CB_header_field in old impl
|
505
502
|
case HPE_CB_HEADERS_COMPLETE:
|
506
503
|
switch (state->state) {
|
507
504
|
case HttpHeaderParserState::ERROR_SECURITY_PASSWORD_MISMATCH:
|
@@ -526,9 +523,10 @@ public:
|
|
526
523
|
break;
|
527
524
|
default:
|
528
525
|
default_error:
|
529
|
-
message->aux.parseError = HTTP_PARSER_ERRNO_BEGIN -
|
526
|
+
message->aux.parseError = HTTP_PARSER_ERRNO_BEGIN - llerrno;
|
530
527
|
break;
|
531
528
|
}
|
529
|
+
llhttp_finish(&state->parser);
|
532
530
|
} else if (messageHttpStateIndicatesCompletion(MessageType())) {
|
533
531
|
UPDATE_TRACE_POINT();
|
534
532
|
message->httpMajor = llhttp_get_http_major(&state->parser);
|
@@ -31,7 +31,7 @@ module PhusionPassenger
|
|
31
31
|
|
32
32
|
PACKAGE_NAME = 'passenger'
|
33
33
|
# Run 'rake src/cxx_supportlib/Constants.h configkit_schemas_inline_comments' after changing this number.
|
34
|
-
VERSION_STRING = '6.0.
|
34
|
+
VERSION_STRING = '6.0.26'
|
35
35
|
|
36
36
|
# Tip: find the SHA-256 with ./dev/nginx_version_sha256 <VERSION>
|
37
37
|
PREFERRED_NGINX_VERSION = '1.26.2'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: passenger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0.
|
4
|
+
version: 6.0.26
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Phusion - http://www.phusion.nl/
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-02-
|
11
|
+
date: 2025-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|