[ https://issues.apache.org/jira/browse/THRIFT-4658?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Allen George updated THRIFT-4658: --------------------------------- Fix Version/s: (was: 1.0) 0.12.0 > 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 > Assignee: Allen George > Priority: Major > Fix For: 0.12.0 > > > 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)