server: Check return code for sd_bus_add_object_vtable()
Some combinations of the vtable flags can be erroneous. We need to check
the return value of sd_bus_add_object_vtable() in order to catch those.
Change-Id: I7eab7a021fdff3f94a7e450c4f55ba7c10b93c84
Signed-off-by: Waqar Hameed <waqarh@axis.com>
diff --git a/sdbusplus/server/interface.hpp b/sdbusplus/server/interface.hpp
index 36e89de..acf4a09 100644
--- a/sdbusplus/server/interface.hpp
+++ b/sdbusplus/server/interface.hpp
@@ -64,8 +64,12 @@
_interface_added(false)
{
sd_bus_slot* slot = nullptr;
- _intf->sd_bus_add_object_vtable(_bus.get(), &slot, _path.c_str(),
- _interf.c_str(), vtable, context);
+ int r = _intf->sd_bus_add_object_vtable(
+ _bus.get(), &slot, _path.c_str(), _interf.c_str(), vtable, context);
+ if (r < 0)
+ {
+ throw exception::SdBusError(-r, "sd_bus_add_object_vtable");
+ }
_slot = decltype(_slot){slot};
}