Validate flatbuffers before printing in aos_dump, log_cat, and simulated_event_loop
We had a corrupted flatbuffer being logged, and the error was very poor
when it was being printed. Let's try to catch this a lot earlier.
Fix 1: log_cat should validate before printing. That'll prevent us
from wasting time debugging why it is crashing and point the finger a
lot better.
Fix 2: aos_dump should do the same. That'll save us from nasty crashes
there too and focus attention a lot better.
Fix 3: SimulatedEventLoop sender Send should also validate in debug
mode. This will avoid too big a performance hit in the fast path, but
will catch corrupted flatbuffers in any simulations we do, or any log
replay that gets done with debug turned on.
This caught a couple of places where we were missing schemas, so add
those in too.
Change-Id: I1873ddd592d33fe4e64210a2e08aa9b937d61ab8
Signed-off-by: Austin Schuh <austin.schuh@bluerivertech.com>
diff --git a/aos/configuration.cc b/aos/configuration.cc
index b388bd3..faafcfc 100644
--- a/aos/configuration.cc
+++ b/aos/configuration.cc
@@ -915,6 +915,14 @@
}
} // namespace
+aos::FlatbufferDetachedBuffer<aos::Configuration> AddSchema(
+ std::string_view json,
+ const std::vector<aos::FlatbufferVector<reflection::Schema>> &schemas) {
+ FlatbufferDetachedBuffer<Configuration> addition =
+ JsonToFlatbuffer(json, Configuration::MiniReflectTypeTable());
+ return MergeConfiguration(addition, schemas);
+}
+
int GetNodeIndex(const Configuration *config, const Node *node) {
if (!MultiNode(config)) {
return 0;