Prevent aos_send from sending invalid messages
We had a user who passed in "{foo: bar}" as the JSON. This didn't
parse, but sent out a null message, which crashed arbitrary downstream
code. Not cool. Instead, prevent aos_send from letting such messages
go out on the channel by error checking the JSON -> flatbuffer result.
Change-Id: Iedab2567090d8ae042518ecd5ca091af491b61cf
Signed-off-by: Austin Schuh <austin.schuh@bluerivertech.com>
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/aos_send.cc b/aos/aos_send.cc
index 980ebc7..8533f47 100644
--- a/aos/aos_send.cc
+++ b/aos/aos_send.cc
@@ -58,7 +58,14 @@
flatbuffers::FlatBufferBuilder fbb(sender->fbb_allocator()->size(),
sender->fbb_allocator());
fbb.ForceDefaults(true);
- fbb.Finish(aos::JsonToFlatbuffer(message_to_send, channel->schema(), &fbb));
+ flatbuffers::Offset<flatbuffers::Table> msg_offset =
+ aos::JsonToFlatbuffer(message_to_send, channel->schema(), &fbb);
+
+ if (msg_offset.IsNull()) {
+ return 1;
+ }
+
+ fbb.Finish(msg_offset);
if (FLAGS_rate < 0) {
sender->CheckOk(sender->Send(fbb.GetSize()));