<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nginx.git/src/http, branch release-1.30.0</title>
<subtitle>nginx</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/'/>
<entry>
<title>Upstream: reset early_hints_length on upstream reinit.</title>
<updated>2026-04-06T16:59:00+00:00</updated>
<author>
<name>David Carlier</name>
<email>devnexen@gmail.com</email>
</author>
<published>2026-03-15T15:56:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=1709bffe6ebb5bfd4d71893d65920fdc4bf82f65'/>
<id>1709bffe6ebb5bfd4d71893d65920fdc4bf82f65</id>
<content type='text'>
When a request was retried to a new upstream after receiving 103
Early Hints from the previous one, the accumulated early_hints_length
was not reset, causing valid early hints from the next upstream to be
incorrectly rejected as "too big".
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a request was retried to a new upstream after receiving 103
Early Hints from the previous one, the accumulated early_hints_length
was not reset, causing valid early hints from the next upstream to be
incorrectly rejected as "too big".
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix $request_port and $is_request_port in subrequests</title>
<updated>2026-04-06T10:53:54+00:00</updated>
<author>
<name>Zoey</name>
<email>zoey@z0ey.de</email>
</author>
<published>2026-04-05T09:31:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=067d766f210ee914b750d79d9284cbf8801058f3'/>
<id>067d766f210ee914b750d79d9284cbf8801058f3</id>
<content type='text'>
Closes #1247.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Closes #1247.
</pre>
</div>
</content>
</entry>
<entry>
<title>Added max_headers directive.</title>
<updated>2026-04-06T10:08:36+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2024-05-23T21:20:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=365694160a85229a7cb006738de9260d49ff5fa2'/>
<id>365694160a85229a7cb006738de9260d49ff5fa2</id>
<content type='text'>
The directive limits the number of request headers accepted from clients.
While the total amount of headers is believed to be sufficiently limited
by the existing buffer size limits (client_header_buffer_size and
large_client_header_buffers), the additional limit on the number of headers
might be beneficial to better protect backend servers.

Requested by Maksim Yevmenkin.

Signed-off-by: Elijah Zupancic &lt;e.zupancic@f5.com&gt;
Origin: &lt;https://freenginx.org/hg/nginx/rev/199dc0d6b05be814b5c811876c20af58cd361fea&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The directive limits the number of request headers accepted from clients.
While the total amount of headers is believed to be sufficiently limited
by the existing buffer size limits (client_header_buffer_size and
large_client_header_buffers), the additional limit on the number of headers
might be beneficial to better protect backend servers.

Requested by Maksim Yevmenkin.

Signed-off-by: Elijah Zupancic &lt;e.zupancic@f5.com&gt;
Origin: &lt;https://freenginx.org/hg/nginx/rev/199dc0d6b05be814b5c811876c20af58cd361fea&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Upstream: fix integer underflow in charset parsing</title>
<updated>2026-04-06T10:07:18+00:00</updated>
<author>
<name>David Korczynski</name>
<email>david@adalogics.com</email>
</author>
<published>2026-03-04T09:27:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=06c30ec29d392af00157c0b0eecbc545b330e50f'/>
<id>06c30ec29d392af00157c0b0eecbc545b330e50f</id>
<content type='text'>
The issue described below was only reproducible prior to
https://github.com/nginx/nginx/commit/7924a4ec6cb35291ea60a5f2a70ac0a034d94ff7

When parsing the `charset` parameter in the `Content-Type` header within
`ngx_http_upstream_copy_content_type`, an input such as `charset="`
resulted in an integer underflow.

In this scenario, both `p` and `last` point to the position immediately
following the opening quote. The logic to strip a trailing quote checked
`*(last - 1)` without verifying that `last &gt; p`. This caused `last` to
be decremented to point to the opening quote itself, making `last &lt; p`.

The subsequent length calculation `r-&gt;headers_out.charset.len = last - p`
resulted in -1, which wrapped to `SIZE_MAX` as `len` is a `size_t`. This
invalid length was later passed to `ngx_cpymem` in `ngx_http_header_filter`,
leading to an out-of-bounds memory access (detected as
`negative-size-param` by AddressSanitizer).

The fix ensures `last &gt; p` before attempting to strip a trailing quote,
correctly resulting in a zero-length charset for malformed input.

The oss-fuzz payload that triggers this issue holds multiple 103 status
lines, and it's a sequence of 2 of those Content-Type headers that
trigger the ASAN report.

Co-authored-by: CodeMender &lt;codemender-patching@google.com&gt;
Fixes: https://issues.oss-fuzz.com/issues/486561029

Signed-off-by: David Korczynski &lt;david@adalogics.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The issue described below was only reproducible prior to
https://github.com/nginx/nginx/commit/7924a4ec6cb35291ea60a5f2a70ac0a034d94ff7

When parsing the `charset` parameter in the `Content-Type` header within
`ngx_http_upstream_copy_content_type`, an input such as `charset="`
resulted in an integer underflow.

In this scenario, both `p` and `last` point to the position immediately
following the opening quote. The logic to strip a trailing quote checked
`*(last - 1)` without verifying that `last &gt; p`. This caused `last` to
be decremented to point to the opening quote itself, making `last &lt; p`.

The subsequent length calculation `r-&gt;headers_out.charset.len = last - p`
resulted in -1, which wrapped to `SIZE_MAX` as `len` is a `size_t`. This
invalid length was later passed to `ngx_cpymem` in `ngx_http_header_filter`,
leading to an out-of-bounds memory access (detected as
`negative-size-param` by AddressSanitizer).

The fix ensures `last &gt; p` before attempting to strip a trailing quote,
correctly resulting in a zero-length charset for malformed input.

The oss-fuzz payload that triggers this issue holds multiple 103 status
lines, and it's a sequence of 2 of those Content-Type headers that
trigger the ASAN report.

Co-authored-by: CodeMender &lt;codemender-patching@google.com&gt;
Fixes: https://issues.oss-fuzz.com/issues/486561029

Signed-off-by: David Korczynski &lt;david@adalogics.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Upstream: fixed processing multiple 103 (early hints) responses.</title>
<updated>2026-04-02T16:54:32+00:00</updated>
<author>
<name>Sergey Kandaurov</name>
<email>pluknet@nginx.com</email>
</author>
<published>2026-04-02T13:41:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=7924a4ec6cb35291ea60a5f2a70ac0a034d94ff7'/>
<id>7924a4ec6cb35291ea60a5f2a70ac0a034d94ff7</id>
<content type='text'>
The second 103 response in a row was treated as the final response header.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The second 103 response in a row was treated as the final response header.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed the "include" directive inside the "geo" block.</title>
<updated>2026-03-24T18:20:16+00:00</updated>
<author>
<name>Eugene Grebenschikov</name>
<email>e.grebenshchikov@f5.com</email>
</author>
<published>2026-03-12T00:57:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=0de6e878ba43b55dd23b437c5be1819a55f63ec4'/>
<id>0de6e878ba43b55dd23b437c5be1819a55f63ec4</id>
<content type='text'>
The "include" directive should be able to include multiple files if
given a filename mask.

Completes remaining changes introduced in da4ffd8.

Closes: https://github.com/nginx/nginx/issues/1165
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The "include" directive should be able to include multiple files if
given a filename mask.

Completes remaining changes introduced in da4ffd8.

Closes: https://github.com/nginx/nginx/issues/1165
</pre>
</div>
</content>
</entry>
<entry>
<title>Dav: destination length validation for COPY and MOVE.</title>
<updated>2026-03-24T14:45:25+00:00</updated>
<author>
<name>Roman Arutyunyan</name>
<email>arut@nginx.com</email>
</author>
<published>2026-03-16T16:13:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=9739e755b8dddba82e65ca2a08d079f4c9826b75'/>
<id>9739e755b8dddba82e65ca2a08d079f4c9826b75</id>
<content type='text'>
Previously, when alias was used in a location with Dav COPY or MOVE
enabled, and the destination URI was shorter than the alias, integer
underflow could happen in ngx_http_map_uri_to_path(), which could
result in heap buffer overwrite, followed by a possible segfault.
With some implementations of memcpy(), the segfault could be avoided
and the overwrite could result in a change of the source or destination
file names to be outside of the location root.

Reported by Calif.io in collaboration with Claude and Anthropic Research.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, when alias was used in a location with Dav COPY or MOVE
enabled, and the destination URI was shorter than the alias, integer
underflow could happen in ngx_http_map_uri_to_path(), which could
result in heap buffer overwrite, followed by a possible segfault.
With some implementations of memcpy(), the segfault could be avoided
and the overwrite could result in a change of the source or destination
file names to be outside of the location root.

Reported by Calif.io in collaboration with Claude and Anthropic Research.
</pre>
</div>
</content>
</entry>
<entry>
<title>Mp4: fixed possible integer overflow on 32-bit platforms.</title>
<updated>2026-03-24T14:44:57+00:00</updated>
<author>
<name>Roman Arutyunyan</name>
<email>arut@nginx.com</email>
</author>
<published>2026-03-02T17:12:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=3568812cf98dfd7661cd7516ecf9b398c134ab3c'/>
<id>3568812cf98dfd7661cd7516ecf9b398c134ab3c</id>
<content type='text'>
Previously, a 32-bit overflow could happen while validating atom entries
count.  This allowed processing of an invalid atom with entrires beyond
its boundaries with reads and writes outside of the allocated mp4 buffer.

Reported by Prabhav Srinath (sprabhav7).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, a 32-bit overflow could happen while validating atom entries
count.  This allowed processing of an invalid atom with entrires beyond
its boundaries with reads and writes outside of the allocated mp4 buffer.

Reported by Prabhav Srinath (sprabhav7).
</pre>
</div>
</content>
</entry>
<entry>
<title>Mp4: avoid zero size buffers in output.</title>
<updated>2026-03-24T14:12:29+00:00</updated>
<author>
<name>Roman Arutyunyan</name>
<email>arut@nginx.com</email>
</author>
<published>2026-02-21T08:04:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=7725c372c2fe11ff908b1d6138be219ad694c42f'/>
<id>7725c372c2fe11ff908b1d6138be219ad694c42f</id>
<content type='text'>
Previously, data validation checks did not cover the cases when the output
contained empty buffers.  Such buffers are considered illegal and produce
"zero size buf in output" alerts.  The change rejects the mp4 files which
produce such alerts.

Also, the change fixes possible buffer overread and overwrite that could
happen while processing empty stco and co64 atoms, as reported by
Pavel Kohout (Aisle Research) and Tim Becker.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, data validation checks did not cover the cases when the output
contained empty buffers.  Such buffers are considered illegal and produce
"zero size buf in output" alerts.  The change rejects the mp4 files which
produce such alerts.

Also, the change fixes possible buffer overread and overwrite that could
happen while processing empty stco and co64 atoms, as reported by
Pavel Kohout (Aisle Research) and Tim Becker.
</pre>
</div>
</content>
</entry>
<entry>
<title>Upstream keepalive: fixed parameter parsing.</title>
<updated>2026-03-24T11:38:16+00:00</updated>
<author>
<name>Roman Arutyunyan</name>
<email>arut@nginx.com</email>
</author>
<published>2026-03-24T11:12:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=d787755d50c96b8f0fc1c5c2df62e8ea3bd9031f'/>
<id>d787755d50c96b8f0fc1c5c2df62e8ea3bd9031f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
