summaryrefslogtreecommitdiffstats
path: root/main.cpp
diff options
context:
space:
mode:
authorBenjamin Fair <benjaminfair@google.com>2018-10-19 17:22:53 -0700
committerBenjamin Fair <benjaminfair@google.com>2018-10-23 11:10:29 -0700
commit1c4d3d34af613ad511b779eb7375562486bb2758 (patch)
tree1d393a8505c279bdb061e97ce234607bdb5178b5 /main.cpp
parentc9ad5ffbca32b8454b3072fad184ab1e7cf93119 (diff)
downloadphosphor-ipmi-blobs-1c4d3d34af613ad511b779eb7375562486bb2758.tar.gz
phosphor-ipmi-blobs-1c4d3d34af613ad511b779eb7375562486bb2758.zip
main: catch exceptions when loading blob handlers
If an error occurs while attempting to load the blob handlers (such as a filesystem error), the uncaught exception will crash the entire IPMI daemon. Instead, catch the exception and print an error message. Tested: ipmid doesn't crash when /usr/lib/blobs-ipmid is missing Signed-off-by: Benjamin Fair <benjaminfair@google.com> Change-Id: Ic316f6e5aa3c4bc6eba4fa2e561b338f4b20f606
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/main.cpp b/main.cpp
index c6b5b04..e680d7c 100644
--- a/main.cpp
+++ b/main.cpp
@@ -26,6 +26,7 @@
#include <host-ipmid/iana.hpp>
#include <host-ipmid/oemrouter.hpp>
#include <memory>
+#include <phosphor-logging/log.hpp>
/* TODO: Swap out once https://gerrit.openbmc-project.xyz/12743 is merged */
namespace oem
@@ -36,6 +37,8 @@ constexpr auto blobTransferCmd = 128;
namespace blobs
{
+using namespace phosphor::logging;
+
static ipmi_ret_t handleBlobCommand(ipmi_cmd_t cmd, const uint8_t* reqBuf,
uint8_t* replyCmdBuf, size_t* dataLen)
{
@@ -75,6 +78,14 @@ void setupBlobGlobalHandler()
handleBlobCommand);
/* Install handlers. */
- loadLibraries(expectedHandlerPath);
+ try
+ {
+ loadLibraries(expectedHandlerPath);
+ }
+ catch (const std::exception& e)
+ {
+ log<level::ERR>("ERROR loading blob handlers",
+ entry("ERROR=%s", e.what()));
+ }
}
} // namespace blobs
OpenPOWER on IntegriCloud