Commit Graph

7933 Commits

Author SHA1 Message Date
Tatsuhiro Tsujikawa
de47400a48 CMSG_DATA does not necessarily return an aligned pointer 2023-08-02 18:46:39 +09:00
Tatsuhiro Tsujikawa
871cf8e5a2 Merge pull request #1934 from nghttp2/ecn
nghttpx: Rework sending and receiving ECN bits
2023-08-02 18:46:07 +09:00
Tatsuhiro Tsujikawa
6ace578e5b nghttpx: Rework sending and receiving ECN bits
Now ECN is sent along with sendmsg ancillary message.  With this
commit, ECN should work fine with the recent Mac OS.
2023-08-02 17:47:51 +09:00
Tatsuhiro Tsujikawa
7273ec17d3 Merge pull request #1931 from nghttp2/return-void
Return void
2023-07-16 16:15:49 +09:00
Tatsuhiro Tsujikawa
07b69bb06f Make session_after_frame_sent2 return void 2023-07-15 16:27:38 +09:00
Tatsuhiro Tsujikawa
98df5b59e5 frame: Make functions that always succeed return void 2023-07-15 16:15:25 +09:00
Tatsuhiro Tsujikawa
cdfb517528 Make functions that always succeed return void 2023-07-15 15:36:50 +09:00
Tatsuhiro Tsujikawa
b16d4e951e Bump library version due to the patch release 2023-07-14 22:53:52 +09:00
Tatsuhiro Tsujikawa
feb5ff560a Merge pull request #1930 from nghttp2/fix-memory-leak
Fix memory leak
2023-07-14 21:56:30 +09:00
Tatsuhiro Tsujikawa
ce385d3f55 Fix memory leak
This commit fixes memory leak that happens when PUSH_PROMISE or
HEADERS frame cannot be sent, and nghttp2_on_stream_close_callback
fails with a fatal error.  For example, if GOAWAY frame has been
received, a HEADERS frame that opens new stream cannot be sent.

This issue has already been made public via CVE-2023-35945 [1] issued
by envoyproxy/envoy project.  During embargo period, the patch to fix
this bug was accidentally submitted to nghttp2/nghttp2 repository [2].
And they decided to disclose CVE early.  I was notified just 1.5 hours
before disclosure.  I had no time to respond.

PoC described in [1] is quite simple, but I think it is not enough to
trigger this bug.  While it is true that receiving GOAWAY prevents a
client from opening new stream, and nghttp2 enters error handling
branch, in order to cause the memory leak,
nghttp2_session_close_stream function must return a fatal error.
nghttp2 defines 2 fatal error codes:

- NGHTTP2_ERR_NOMEM
- NGHTTP2_ERR_CALLBACK_FAILURE

NGHTTP2_ERR_NOMEM, as its name suggests, indicates out of memory.  It
is unlikely that a process gets short of memory with this simple PoC
scenario unless application does something memory heavy processing.

NGHTTP2_ERR_CALLBACK_FAILURE is returned from application defined
callback function (nghttp2_on_stream_close_callback, in this case),
which indicates something fatal happened inside a callback, and a
connection must be closed immediately without any further action.  As
nghttp2_on_stream_close_error_callback documentation says, any error
code other than 0 or NGHTTP2_ERR_CALLBACK_FAILURE is treated as fatal
error code.  More specifically, it is treated as if
NGHTTP2_ERR_CALLBACK_FAILURE is returned.  I guess that envoy returns
NGHTTP2_ERR_CALLBACK_FAILURE or other error code which is translated
into NGHTTP2_ERR_CALLBACK_FAILURE.

[1] https://github.com/envoyproxy/envoy/security/advisories/GHSA-jfxv-29pc-x22r
[2] https://github.com/nghttp2/nghttp2/pull/1929
2023-07-14 21:37:37 +09:00
Tatsuhiro Tsujikawa
82fc1163c6 Merge pull request #1928 from nghttp2/doc-bump-boringssl
doc: Bump boringssl
2023-07-12 18:06:28 +09:00
Tatsuhiro Tsujikawa
79d2b7f931 doc: Bump boringssl 2023-07-12 17:44:26 +09:00
Tatsuhiro Tsujikawa
4c1f1b0efc Bump package version 2023-07-12 17:25:14 +09:00
Tatsuhiro Tsujikawa
989d69be01 Update manual pages v1.55.0 2023-07-12 17:20:52 +09:00
Tatsuhiro Tsujikawa
2143f46f45 Bump package version 2023-07-12 17:14:02 +09:00
Tatsuhiro Tsujikawa
5bbe86a713 Merge pull request #1927 from nghttp2/bump-macos
Bump macos to 12
2023-07-11 22:54:06 +09:00
Tatsuhiro Tsujikawa
3cc152a9a5 Bump macos to 12 2023-07-11 22:24:19 +09:00
Tatsuhiro Tsujikawa
693372b695 Merge pull request #1926 from nghttp2/bump-llhttp
Bump llhttp to a0e744f850d8101a51284868ffdf745bcfe4fbcc
2023-07-11 22:13:31 +09:00
Tatsuhiro Tsujikawa
43e6a01189 Bump llhttp to a0e744f850d8101a51284868ffdf745bcfe4fbcc 2023-07-11 21:24:11 +09:00
Tatsuhiro Tsujikawa
9dc39859fc Merge pull request #1925 from nghttp2/nghttpx-randomize-initial-quic-pkt-num
nghttpx: Randomize initial QUIC packet number
2023-07-11 21:04:47 +09:00
Tatsuhiro Tsujikawa
5b350acc4c nghttpx: Randomize initial QUIC packet number 2023-07-11 20:47:30 +09:00
Tatsuhiro Tsujikawa
42140d3ade Merge pull request #1923 from nghttp2/bump-ngtcp2
Bump ngtcp2
2023-07-09 22:23:31 +09:00
Tatsuhiro Tsujikawa
dfa2a59f99 Bump ngtcp2 2023-07-09 21:09:43 +09:00
Tatsuhiro Tsujikawa
5c11ad80c0 Merge pull request #1920 from nghttp2/gro
h2load, nghttpx: Add UDP_GRO support
2023-06-25 19:35:13 +09:00
Tatsuhiro Tsujikawa
ee4de34a42 h2load, nghttpx: Add UDP_GRO support 2023-06-25 18:51:57 +09:00
Tatsuhiro Tsujikawa
892a6162ab Merge pull request #1918 from nghttp2/mruby-cross
mruby: Support cross build for autotools
2023-06-24 16:32:40 +09:00
Tatsuhiro Tsujikawa
811b3554a7 mruby: Support cross build for autotools
Support mruby cross build, but now we are unable to specify host C/C++
compiler on cross build.

Do not pass compiler and linker flags because mruby does its own.

Cross build only works with autotools.  It does not work with cmake.
2023-06-11 20:06:06 +09:00
Tatsuhiro Tsujikawa
e7f5940655 Merge pull request #1917 from nghttp2/bump-go-dep
Bump go package dependencies
2023-06-11 13:27:44 +09:00
Tatsuhiro Tsujikawa
e4ad2921e5 Bump go package dependencies 2023-06-11 13:03:34 +09:00
Tatsuhiro Tsujikawa
7872401f73 Merge pull request #1916 from nghttp2/bump-go
Bump go to 1.20
2023-06-11 13:02:50 +09:00
Tatsuhiro Tsujikawa
2277f7cc68 Bump go to 1.20 2023-06-11 12:05:55 +09:00
Tatsuhiro Tsujikawa
2c955ab76b Merge pull request #1915 from nghttp2/fix-build-without-libev
Fix build error without libev
2023-06-08 20:31:41 +09:00
Tatsuhiro Tsujikawa
9fc1f85102 Fix build error without libev
Check libev availability, and guard the usage of libev in util.h.
2023-06-08 19:33:23 +09:00
Tatsuhiro Tsujikawa
2571f78ce7 Bump package version 2023-06-07 19:01:48 +09:00
Tatsuhiro Tsujikawa
ecbb12f609 Update manual pages v1.54.0 2023-06-07 18:44:22 +09:00
Tatsuhiro Tsujikawa
800e379690 Bump package version 2023-06-07 18:33:34 +09:00
Tatsuhiro Tsujikawa
45467a9bc3 Merge pull request #1913 from nghttp2/avoid-copies
Avoid copies
2023-06-05 22:44:28 +09:00
Tatsuhiro Tsujikawa
dc940764d7 Avoid copies 2023-06-05 20:56:51 +09:00
Tatsuhiro Tsujikawa
d53e3728f7 Merge pull request #1912 from nghttp2/bump-libbpf
Bump libbpf to v1.2.0
2023-06-04 19:50:44 +09:00
Tatsuhiro Tsujikawa
7414f030c3 Bump libbpf to v1.2.0 2023-06-04 19:05:05 +09:00
Tatsuhiro Tsujikawa
2674d77519 Merge pull request #1911 from nghttp2/bump-ngtcp2
Bump ngtcp2 and nghttp3
2023-06-04 18:37:28 +09:00
Tatsuhiro Tsujikawa
66bbe52576 Bump ngtcp2 and nghttp3 2023-06-04 17:22:57 +09:00
Tatsuhiro Tsujikawa
5f10d43c6b Merge pull request #1910 from nghttp2/remove-unused-macro-bswap64
Remove unused macro bswap64
2023-05-29 18:54:25 +09:00
Tatsuhiro Tsujikawa
6dec3353ec Remove unused macro bswap64 2023-05-29 17:45:11 +09:00
Tatsuhiro Tsujikawa
5e2bb54ee8 Merge pull request #1907 from nghttp2/avoid-ev_now
Avoid ev_now
2023-05-18 21:15:26 +09:00
Tatsuhiro Tsujikawa
018922b0b6 nghttpx: Avoid ev_now where monotonic clock is required 2023-05-18 19:16:24 +09:00
Tatsuhiro Tsujikawa
288b08e3d8 nghttpd: Avoid ev_now where monotonic clock is required 2023-05-18 19:16:24 +09:00
Tatsuhiro Tsujikawa
dbc607cfcc h2load: Avoid ev_now 2023-05-18 19:16:24 +09:00
Tatsuhiro Tsujikawa
4e2de8808a Merge pull request #1906 from nghttp2/h2load-quic-steady-clock
h2load: Use std::chrono::steady_clock for quic timestamp
2023-05-17 22:29:21 +09:00
Tatsuhiro Tsujikawa
71932baad7 h2load: Use std::chrono::steady_clock for quic timestamp 2023-05-17 21:03:21 +09:00