Avoid crashing Flipper SDK on request for unsupported plugins
Summary: in FlipperRSocketResponder::handleFireAndForget, a responder object was being conditionally (for requests with an "id" field) created, resulting in a null pointer passed into FlipperClient::onMessageReceived when no id was present. FlipperClient::onMessage received, in the meantime, unconditionally dereferences that pointer, resulting in a segmentation fault. This change creates the responder object regardless of whether or not the "id" key is present in the request object, thus avoiding passing a null pointer into FlipperClient::onMessageReceived. Reviewed By: jknoxville Differential Revision: D18583898 fbshipit-source-id: 2112c45bc0cd639cec908d0039d6bdaed2f61491
This commit is contained in:
committed by
Facebook Github Bot
parent
2854b57c74
commit
cb3b77bc95
@@ -44,7 +44,8 @@ TEST(FlipperRSocketResponderTests, testFireAndForgetWithoutIdParam) {
|
||||
responder.handleFireAndForget(rsocket::Payload(json), rsocket::StreamId(1));
|
||||
EXPECT_EQ(socket.messagesReceived.size(), 1);
|
||||
EXPECT_EQ(socket.messagesReceived[0]["my"], "message");
|
||||
EXPECT_EQ(socket.respondersReceived, 0);
|
||||
EXPECT_EQ(socket.respondersWithIdReceived, 0);
|
||||
EXPECT_EQ(socket.respondersWithoutIdReceived, 1);
|
||||
}
|
||||
|
||||
TEST(FlipperRSocketResponderTests, testFireAndForgetWithIdParam) {
|
||||
@@ -60,7 +61,8 @@ TEST(FlipperRSocketResponderTests, testFireAndForgetWithIdParam) {
|
||||
EXPECT_EQ(socket.messagesReceived.size(), 1);
|
||||
EXPECT_EQ(socket.messagesReceived[0]["my"], "message");
|
||||
EXPECT_EQ(socket.messagesReceived[0]["id"], 7);
|
||||
EXPECT_EQ(socket.respondersReceived, 1);
|
||||
EXPECT_EQ(socket.respondersWithIdReceived, 1);
|
||||
EXPECT_EQ(socket.respondersWithoutIdReceived, 0);
|
||||
}
|
||||
|
||||
} // namespace test
|
||||
|
||||
Reference in New Issue
Block a user