You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "TianYI Wen (JIRA)" <ji...@apache.org> on 2017/08/07 11:26:00 UTC
[jira] [Created] (THRIFT-4278) Thrift Node.js library crashes app
TianYI Wen created THRIFT-4278:
----------------------------------
Summary: Thrift Node.js library crashes app
Key: THRIFT-4278
URL: https://issues.apache.org/jira/browse/THRIFT-4278
Project: Thrift
Issue Type: Bug
Components: Node.js - Library
Affects Versions: 0.10.0
Reporter: TianYI Wen
Create TBufferedTransport by using its receiver funciton. and using TCompactProtocol to communicate. But this object lack of `rstack` and `rpos`. It make app crash.
Is thrift library tested before release?
details:
thrift file
struct CliRoomData
{
10: i32 roomId
20: string roomName
30: i32 masterUserId
40: map<i32, CliRoomUserData> mapUserData // key: user id value: CliRoomUserData
50: map<i32, CliRoomLevelData> mapLevelData // key: level id value: CliRoomLevelData
60: optional string groupId
}
generated code which crashes the app:
// input haven't property `rstack` and `rpos`
if (input.rstack.length > input.rpos[input.rpos.length -1] + 1) {
input.rstack.pop();
}
code about the crash
const entity = new Protocols[className]() // create the thrift object to read from protocol
return new Promise((resolve, reject) => {
const receiver = thrift.TBufferedTransport.receiver((reader) => { // create buffered using library
const protocol = new thrift.TCompactProtocol(reader)
entity.read(protocol) // crash the app
resolve(entity)
})
receiver(payload)
})
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)