J W created THRIFT-4658:
---------------------------
Summary: Rust's TBinaryInputProtocol fails when strict is false
Key: THRIFT-4658
URL: https://issues.apache.org/jira/browse/THRIFT-4658
Project: Thrift
Issue Type: Bug
Components: Rust - Library
Affects Versions: 0.11.0
Environment:
`rustup show` output:
Default host: x86_64-apple-darwin
installed toolchains
--------------------
stable-x86_64-apple-darwin
nightly-x86_64-apple-darwin
active toolchain
----------------
stable-x86_64-apple-darwin (default)
rustc 1.30.0 (da5f414c2 2018-10-24)
Reporter: J W
When use `TBinaryInputProtocol::new(..., false)`, any trivial example will fail:
service TestService {
bool Test()
}
Problem is here:
[https://github.com/apache/thrift/blob/master/lib/rs/src/protocol/binary.rs#L126]
with_capacity() allocates space, but len() of resulting Vec<> is 0.
read_exact() reads 0 bytes and read_byte() below receives first byte of the
string which may or may not convert to TMessageType.
Change it to:
let mut name_buf: Vec<u8> = vec![0; name_size];
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)