Compare commits
2
Commits
d7328232ba
...
b3b205dd9a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b3b205dd9a | ||
|
|
cd7f9280b3 |
@@ -479,3 +479,4 @@ f8134640e8615448205785cf00b0bc810489b495 release-1.25.1
|
|||||||
173a0a7dbce569adbb70257c6ec4f0f6bc585009 release-1.25.4
|
173a0a7dbce569adbb70257c6ec4f0f6bc585009 release-1.25.4
|
||||||
8618e4d900cc71082fbe7dc72af087937d64faf5 release-1.25.5
|
8618e4d900cc71082fbe7dc72af087937d64faf5 release-1.25.5
|
||||||
2166e329fb4ed7d6da7c823ee6499f7d06d7bc00 release-1.27.0
|
2166e329fb4ed7d6da7c823ee6499f7d06d7bc00 release-1.27.0
|
||||||
|
417b1045b18ecbca0ca583073a221ffbfbaee5d9 release-1.27.1
|
||||||
@@ -5,6 +5,55 @@
|
|||||||
<change_log title="nginx">
|
<change_log title="nginx">
|
||||||
|
|
||||||
|
|
||||||
|
<changes ver="1.27.1" date="2024-08-14">
|
||||||
|
|
||||||
|
<change type="security">
|
||||||
|
<para lang="ru">
|
||||||
|
обработка специально созданного mp4-файла модулем ngx_http_mp4_module
|
||||||
|
могла приводить к падению рабочего процесса (CVE-2024-7347).<br/>
|
||||||
|
Спасибо Nils Bars.
|
||||||
|
</para>
|
||||||
|
<para lang="en">
|
||||||
|
processing of a specially crafted mp4 file by the ngx_http_mp4_module
|
||||||
|
might cause a worker process crash (CVE-2024-7347).<br/>
|
||||||
|
Thanks to Nils Bars.
|
||||||
|
</para>
|
||||||
|
</change>
|
||||||
|
|
||||||
|
<change type="change">
|
||||||
|
<para lang="ru">
|
||||||
|
теперь обработчик в модуле stream не является обязательным.
|
||||||
|
</para>
|
||||||
|
<para lang="en">
|
||||||
|
now the stream module handler is not mandatory.
|
||||||
|
</para>
|
||||||
|
</change>
|
||||||
|
|
||||||
|
<change type="bugfix">
|
||||||
|
<para lang="ru">
|
||||||
|
новые HTTP/2-соединения могли игнорировать
|
||||||
|
плавное завершение старых рабочих процессов.<br/>
|
||||||
|
Спасибо Kasei Wang.
|
||||||
|
</para>
|
||||||
|
<para lang="en">
|
||||||
|
new HTTP/2 connections might ignore
|
||||||
|
graceful shutdown of old worker processes.<br/>
|
||||||
|
Thanks to Kasei Wang.
|
||||||
|
</para>
|
||||||
|
</change>
|
||||||
|
|
||||||
|
<change>
|
||||||
|
<para lang="ru">
|
||||||
|
Исправления в HTTP/3.
|
||||||
|
</para>
|
||||||
|
<para lang="en">
|
||||||
|
Bugfixes in HTTP/3.
|
||||||
|
</para>
|
||||||
|
</change>
|
||||||
|
|
||||||
|
</changes>
|
||||||
|
|
||||||
|
|
||||||
<changes ver="1.27.0" date="2024-05-29">
|
<changes ver="1.27.0" date="2024-05-29">
|
||||||
|
|
||||||
<change type="security">
|
<change type="security">
|
||||||
@@ -51,12 +100,12 @@ if "gzip", "gunzip", "ssi", "sub_filter", or "grpc_pass" directives are used.
|
|||||||
<change type="bugfix">
|
<change type="bugfix">
|
||||||
<para lang="ru">
|
<para lang="ru">
|
||||||
nginx не собирался gcc 14,
|
nginx не собирался gcc 14,
|
||||||
если использовался параметр --with-atomic.<br/>
|
если использовался параметр --with-libatomic.<br/>
|
||||||
Спасибо Edgar Bonet.
|
Спасибо Edgar Bonet.
|
||||||
</para>
|
</para>
|
||||||
<para lang="en">
|
<para lang="en">
|
||||||
nginx could not be built by gcc 14
|
nginx could not be built by gcc 14
|
||||||
if the --with-atomic option was used.<br/>
|
if the --with-libatomic option was used.<br/>
|
||||||
Thanks to Edgar Bonet.
|
Thanks to Edgar Bonet.
|
||||||
</para>
|
</para>
|
||||||
</change>
|
</change>
|
||||||
|
|||||||
+1
-1
Submodule lib/boringssl updated: b34976cae9...0ba2001733
Submodule lib/headers-more-nginx-module updated: 06dc0be56e...f8f80997f1
+1
-1
Submodule lib/naxsi updated: c02bc1dafb...a0c7694b09
+1
-1
Submodule lib/pcre updated: 2b30cb310a...1415565c21
+1
-1
Submodule lib/zlib-ng updated: d54e3769be...3da40c259e
+1
-1
@@ -6,7 +6,7 @@ TEMP = tmp
|
|||||||
|
|
||||||
CC = cl
|
CC = cl
|
||||||
OBJS = objs.msvc8
|
OBJS = objs.msvc8
|
||||||
OPENSSL = openssl-3.0.13
|
OPENSSL = openssl-3.0.14
|
||||||
ZLIB = zlib-1.3.1
|
ZLIB = zlib-1.3.1
|
||||||
PCRE = pcre2-10.39
|
PCRE = pcre2-10.39
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -9,8 +9,8 @@
|
|||||||
#define _NGINX_H_INCLUDED_
|
#define _NGINX_H_INCLUDED_
|
||||||
|
|
||||||
|
|
||||||
#define nginx_version 1027000
|
#define nginx_version 1027001
|
||||||
#define NGINX_VERSION "1.27.0"
|
#define NGINX_VERSION "1.27.1"
|
||||||
#define NGINX_VER "nginx/" NGINX_VERSION " by Hakase"
|
#define NGINX_VER "nginx/" NGINX_VERSION " by Hakase"
|
||||||
|
|
||||||
#ifndef NGINX_SERVER
|
#ifndef NGINX_SERVER
|
||||||
|
|||||||
@@ -1022,6 +1022,16 @@ ngx_quic_handle_payload(ngx_connection_t *c, ngx_quic_header_t *pkt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pkt->level == ssl_encryption_application) {
|
||||||
|
/*
|
||||||
|
* RFC 9001, 4.9.3. Discarding 0-RTT Keys
|
||||||
|
*
|
||||||
|
* After receiving a 1-RTT packet, servers MUST discard
|
||||||
|
* 0-RTT keys within a short time
|
||||||
|
*/
|
||||||
|
ngx_quic_discard_ctx(c, ssl_encryption_early_data);
|
||||||
|
}
|
||||||
|
|
||||||
if (qc->closing) {
|
if (qc->closing) {
|
||||||
/*
|
/*
|
||||||
* RFC 9000, 10.2. Immediate Close
|
* RFC 9000, 10.2. Immediate Close
|
||||||
|
|||||||
@@ -743,8 +743,15 @@ ngx_quic_keys_discard(ngx_quic_keys_t *keys,
|
|||||||
ngx_quic_crypto_hp_cleanup(client);
|
ngx_quic_crypto_hp_cleanup(client);
|
||||||
ngx_quic_crypto_hp_cleanup(server);
|
ngx_quic_crypto_hp_cleanup(server);
|
||||||
|
|
||||||
ngx_explicit_memzero(client->secret.data, client->secret.len);
|
if (client->secret.len) {
|
||||||
ngx_explicit_memzero(server->secret.data, server->secret.len);
|
ngx_explicit_memzero(client->secret.data, client->secret.len);
|
||||||
|
client->secret.len = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (server->secret.len) {
|
||||||
|
ngx_explicit_memzero(server->secret.data, server->secret.len);
|
||||||
|
server->secret.len = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -844,6 +851,9 @@ ngx_quic_keys_update(ngx_event_t *ev)
|
|||||||
ngx_explicit_memzero(current->server.secret.data,
|
ngx_explicit_memzero(current->server.secret.data,
|
||||||
current->server.secret.len);
|
current->server.secret.len);
|
||||||
|
|
||||||
|
current->client.secret.len = 0;
|
||||||
|
current->server.secret.len = 0;
|
||||||
|
|
||||||
ngx_explicit_memzero(client_key.data, client_key.len);
|
ngx_explicit_memzero(client_key.data, client_key.len);
|
||||||
ngx_explicit_memzero(server_key.data, server_key.len);
|
ngx_explicit_memzero(server_key.data, server_key.len);
|
||||||
|
|
||||||
@@ -870,10 +880,17 @@ ngx_quic_keys_cleanup(ngx_quic_keys_t *keys)
|
|||||||
ngx_quic_crypto_cleanup(&next->client);
|
ngx_quic_crypto_cleanup(&next->client);
|
||||||
ngx_quic_crypto_cleanup(&next->server);
|
ngx_quic_crypto_cleanup(&next->server);
|
||||||
|
|
||||||
ngx_explicit_memzero(next->client.secret.data,
|
if (next->client.secret.len) {
|
||||||
next->client.secret.len);
|
ngx_explicit_memzero(next->client.secret.data,
|
||||||
ngx_explicit_memzero(next->server.secret.data,
|
next->client.secret.len);
|
||||||
next->server.secret.len);
|
next->client.secret.len = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (next->server.secret.len) {
|
||||||
|
ngx_explicit_memzero(next->server.secret.data,
|
||||||
|
next->server.secret.len);
|
||||||
|
next->server.secret.len = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3099,7 +3099,8 @@ static ngx_int_t
|
|||||||
ngx_http_mp4_crop_stsc_data(ngx_http_mp4_file_t *mp4,
|
ngx_http_mp4_crop_stsc_data(ngx_http_mp4_file_t *mp4,
|
||||||
ngx_http_mp4_trak_t *trak, ngx_uint_t start)
|
ngx_http_mp4_trak_t *trak, ngx_uint_t start)
|
||||||
{
|
{
|
||||||
uint32_t start_sample, chunk, samples, id, next_chunk, n,
|
uint64_t n;
|
||||||
|
uint32_t start_sample, chunk, samples, id, next_chunk,
|
||||||
prev_samples;
|
prev_samples;
|
||||||
ngx_buf_t *data, *buf;
|
ngx_buf_t *data, *buf;
|
||||||
ngx_uint_t entries, target_chunk, chunk_samples;
|
ngx_uint_t entries, target_chunk, chunk_samples;
|
||||||
@@ -3155,12 +3156,19 @@ ngx_http_mp4_crop_stsc_data(ngx_http_mp4_file_t *mp4,
|
|||||||
|
|
||||||
next_chunk = ngx_mp4_get_32value(entry->chunk);
|
next_chunk = ngx_mp4_get_32value(entry->chunk);
|
||||||
|
|
||||||
|
if (next_chunk < chunk) {
|
||||||
|
ngx_log_error(NGX_LOG_ERR, mp4->file.log, 0,
|
||||||
|
"unordered mp4 stsc chunks in \"%s\"",
|
||||||
|
mp4->file.name.data);
|
||||||
|
return NGX_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
ngx_log_debug5(NGX_LOG_DEBUG_HTTP, mp4->file.log, 0,
|
ngx_log_debug5(NGX_LOG_DEBUG_HTTP, mp4->file.log, 0,
|
||||||
"sample:%uD, chunk:%uD, chunks:%uD, "
|
"sample:%uD, chunk:%uD, chunks:%uD, "
|
||||||
"samples:%uD, id:%uD",
|
"samples:%uD, id:%uD",
|
||||||
start_sample, chunk, next_chunk - chunk, samples, id);
|
start_sample, chunk, next_chunk - chunk, samples, id);
|
||||||
|
|
||||||
n = (next_chunk - chunk) * samples;
|
n = (uint64_t) (next_chunk - chunk) * samples;
|
||||||
|
|
||||||
if (start_sample < n) {
|
if (start_sample < n) {
|
||||||
goto found;
|
goto found;
|
||||||
@@ -3182,7 +3190,7 @@ ngx_http_mp4_crop_stsc_data(ngx_http_mp4_file_t *mp4,
|
|||||||
"sample:%uD, chunk:%uD, chunks:%uD, samples:%uD",
|
"sample:%uD, chunk:%uD, chunks:%uD, samples:%uD",
|
||||||
start_sample, chunk, next_chunk - chunk, samples);
|
start_sample, chunk, next_chunk - chunk, samples);
|
||||||
|
|
||||||
n = (next_chunk - chunk) * samples;
|
n = (uint64_t) (next_chunk - chunk) * samples;
|
||||||
|
|
||||||
if (start_sample > n) {
|
if (start_sample > n) {
|
||||||
ngx_log_error(NGX_LOG_ERR, mp4->file.log, 0,
|
ngx_log_error(NGX_LOG_ERR, mp4->file.log, 0,
|
||||||
|
|||||||
@@ -294,6 +294,11 @@ ngx_http_v2_init(ngx_event_t *rev)
|
|||||||
|
|
||||||
c->data = h2c;
|
c->data = h2c;
|
||||||
|
|
||||||
|
if (ngx_exiting) {
|
||||||
|
ngx_http_v2_finalize_connection(h2c, NGX_HTTP_V2_NO_ERROR);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
rev->handler = ngx_http_v2_read_handler;
|
rev->handler = ngx_http_v2_read_handler;
|
||||||
c->write->handler = ngx_http_v2_write_handler;
|
c->write->handler = ngx_http_v2_write_handler;
|
||||||
|
|
||||||
|
|||||||
@@ -519,7 +519,7 @@ ngx_stream_ssl_preread_servername(ngx_stream_session_t *s,
|
|||||||
|
|
||||||
host = *servername;
|
host = *servername;
|
||||||
|
|
||||||
rc = ngx_stream_validate_host(&host, c->pool, 1);
|
rc = ngx_stream_validate_host(&host, c->pool, 0);
|
||||||
|
|
||||||
if (rc == NGX_ERROR) {
|
if (rc == NGX_ERROR) {
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
|
|||||||
Reference in New Issue
Block a user