Fedora Account System
Red Hat Associate
Red Hat Customer
A flaw was found in libsoup. The HTTP/2 client request-body path for non-pollable GInputStream sources buffers an asynchronous read sized to the current flow-control window, then later copies that entire buffer into nghttp2's DATA callback buffer without clamping to the callback length. A malicious HTTP/2 server can send a SETTINGS frame that reduces SETTINGS_INITIAL_WINDOW_SIZE while that read is in flight, making the next DATA callback length smaller than the already-buffered byte count. The only check is a g_assert(), which aborts the client in typical builds. If assertions are compiled out, nghttp2 rejects a return value larger than the allowed length and fails the session.