summaryrefslogtreecommitdiff
path: root/include/dbus_monitor.hpp
diff options
context:
space:
mode:
authorEd Tanous <edtanous@google.com>2021-02-19 19:51:17 +0300
committerEd Tanous <ed@tanous.net>2021-02-19 23:39:57 +0300
commit71f52d96b51bda2a2f00374237f368e980396692 (patch)
tree1f14b4489ac5b383dbcadc055f7aa42a0e5c6dbc /include/dbus_monitor.hpp
parent797ac9a28e0fc9d156a143aa84457360a8bb6fcb (diff)
downloadbmcweb-71f52d96b51bda2a2f00374237f368e980396692.tar.xz
Fix nlohmann::json::dump calls
The nlohmann::json::dump call needs to be called with specific arguments to avoid throwing in failure cases. http connection already does this properly, but a bunch of code has snuck in (mostly in redfish) that ignores this, and calls it incorrectly. This can potentially lead to a crash if the wrong thing throws on invalid UTF8 characters. This audits the whole codebase, and replaces every dump() call with the correct dump(2, ' ', true, nlohmann::json::error_handler_t::replace) call. For correct output, the callers should expect no change, and in practice, this would require injecting non-utf8 characters into the BMC. Tested: Ran several of the endpoints/error conditions in question, including some of the error cases. Observed correct responses. I don't know of a security issue that would allow injecting invalid utf8 into the BMC, but in theory if it were possible, this would prevent a crash. Signed-off-by: Ed Tanous <edtanous@google.com> Change-Id: I4a15b8e260e3db129bc20484ade4ed5449f75ad0
Diffstat (limited to 'include/dbus_monitor.hpp')
-rw-r--r--include/dbus_monitor.hpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/include/dbus_monitor.hpp b/include/dbus_monitor.hpp
index 18085a930e..4337467bcc 100644
--- a/include/dbus_monitor.hpp
+++ b/include/dbus_monitor.hpp
@@ -97,7 +97,8 @@ inline int onPropertyUpdate(sd_bus_message* m, void* userdata,
return 0;
}
- connection->sendText(j.dump());
+ connection->sendText(
+ j.dump(2, ' ', true, nlohmann::json::error_handler_t::replace));
return 0;
}