Jens Geyer created THRIFT-6085:
----------------------------------

             Summary: Add message byte tracking to consumeBuffer() in Java 
transports
                 Key: THRIFT-6085
                 URL: https://issues.apache.org/jira/browse/THRIFT-6085
             Project: Thrift
          Issue Type: Bug
          Components: Java - Library
            Reporter: Jens Geyer
             Fix For: 0.24.0


TMemoryInputTransport.consumeBuffer(int len) advanced the buffer read position 
without calling countConsumedMessageBytes(len), so remainingMessageSize in 
TEndpointTransport was never decremented when a protocol used the fast path 
(data already buffered). The same gap existed in 
AutoExpandingBufferReadTransport (used by TFastFramedTransport). This let a 
caller bypass both maxMessageSize enforcement and 
TBinaryProtocol.readString()'s stringLengthLimit_ check on the fast path.

Fixed by having consumeBuffer() call countConsumedMessageBytes() in both 
transports, propagating TTransportException through the call chain, and calling 
checkStringReadLength() before TBinaryProtocol's fast-path string read.

*Affects:* Java (libthrift), 0.19.0-0.23.0; fixed in 0.24.0
*Fixed by:* commit 2d2b23b2e, PR #3452

*CWE-770:* Allocation of Resources Without Limits or Throttling
*CVSS 4.0:* 6.9 Medium 
({{CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N}})

*Reported by:* icysun, via [email protected]
*CVE:* CVE-2026-45112



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to