https://bz.apache.org/bugzilla/show_bug.cgi?id=70304

            Bug ID: 70304
           Summary: RFC 9113 §6.4: RST_STREAM with wrong payload length
                    should be a FRAME_SIZE_ERROR connection error
           Product: Tomcat 11
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Connectors
          Assignee: [email protected]
          Reporter: [email protected]
  Target Milestone: -------

RFC 9113, section 6.4 states:

"A RST_STREAM frame with a length other than 4 octets MUST be treated as a
connection error (Section 5.4.1) of type FRAME_SIZE_ERROR."

FrameType.java declares RST with payloadErrorFatal=false. When a RST_STREAM
frame arrives with a payload length other than 4 bytes on a non-zero stream,
FrameType.check() falls into the stream-error branch and sends RST_STREAM back
to the client. RFC 9113 §6.4 requires a GOAWAY (connection error) instead.

Fix: set payloadErrorFatal=true for RST in FrameType.java so that
FrameType.check() always throws ConnectionException for a malformed RST_STREAM
payload.

For reference:
- PRIORITY (§6.3) — "stream error" → payloadErrorFatal=false (correct)
- WINDOW_UPDATE (§6.9) — "connection error" → payloadErrorFatal=true (correct)
- RST (§6.4) — "connection error" → payloadErrorFatal=false (BUG)

PR: https://github.com/apache/tomcat/pull/1141

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to