diff --git a/host-bmc/dbus_to_event_handler.cpp b/host-bmc/dbus_to_event_handler.cpp
index 2c9d92e..fcc56f9 100644
--- a/host-bmc/dbus_to_event_handler.cpp
+++ b/host-bmc/dbus_to_event_handler.cpp
@@ -174,6 +174,10 @@
     pldm_state_sensor_pdr* pdr = nullptr;
     std::unique_ptr<pldm_pdr, decltype(&pldm_pdr_destroy)> sensorPdrRepo(
         pldm_pdr_init(), pldm_pdr_destroy);
+    if (!sensorPdrRepo)
+    {
+        throw std::runtime_error("Unable to instantiate sensor PDR repository");
+    }
 
     for (auto pdrType : pdrTypes)
     {
diff --git a/libpldmresponder/platform.cpp b/libpldmresponder/platform.cpp
index 2d32468..ad8948c 100644
--- a/libpldmresponder/platform.cpp
+++ b/libpldmresponder/platform.cpp
@@ -739,6 +739,11 @@
 
     std::unique_ptr<pldm_pdr, decltype(&pldm_pdr_destroy)> stateSensorPdrRepo(
         pldm_pdr_init(), pldm_pdr_destroy);
+    if (!stateSensorPdrRepo)
+    {
+        error("Failed to instantiate state sensor PDR repository");
+        return false;
+    }
     Repo stateSensorPDRs(stateSensorPdrRepo.get());
     getRepoByType(handler.getRepo(), stateSensorPDRs, PLDM_STATE_SENSOR_PDR);
     if (stateSensorPDRs.empty())
@@ -803,6 +808,11 @@
 
     std::unique_ptr<pldm_pdr, decltype(&pldm_pdr_destroy)> stateEffecterPdrRepo(
         pldm_pdr_init(), pldm_pdr_destroy);
+    if (!stateEffecterPdrRepo)
+    {
+        error("Failed to instantiate state effecter PDR repository");
+        return false;
+    }
     Repo stateEffecterPDRs(stateEffecterPdrRepo.get());
     getRepoByType(handler.getRepo(), stateEffecterPDRs,
                   PLDM_STATE_EFFECTER_PDR);
diff --git a/libpldmresponder/platform.hpp b/libpldmresponder/platform.hpp
index fed0421..8d2c74e 100644
--- a/libpldmresponder/platform.hpp
+++ b/libpldmresponder/platform.hpp
@@ -304,6 +304,11 @@
 
         std::unique_ptr<pldm_pdr, decltype(&pldm_pdr_destroy)>
             stateEffecterPdrRepo(pldm_pdr_init(), pldm_pdr_destroy);
+        if (!stateEffecterPdrRepo)
+        {
+            throw std::runtime_error(
+                "Failed to instantiate state effecter PDR repository");
+        }
         pldm::responder::pdr_utils::Repo stateEffecterPDRs(
             stateEffecterPdrRepo.get());
         getRepoByType(pdrRepo, stateEffecterPDRs, PLDM_STATE_EFFECTER_PDR);
diff --git a/libpldmresponder/platform_numeric_effecter.hpp b/libpldmresponder/platform_numeric_effecter.hpp
index 3acfb3f..46330e6 100644
--- a/libpldmresponder/platform_numeric_effecter.hpp
+++ b/libpldmresponder/platform_numeric_effecter.hpp
@@ -256,6 +256,11 @@
 
     std::unique_ptr<pldm_pdr, decltype(&pldm_pdr_destroy)>
         numericEffecterPdrRepo(pldm_pdr_init(), pldm_pdr_destroy);
+    if (!numericEffecterPdrRepo)
+    {
+        error("Failed to instantiate numeric effecter PDR repository");
+        return PLDM_ERROR;
+    }
     pldm::responder::pdr_utils::Repo numericEffecterPDRs(
         numericEffecterPdrRepo.get());
     pldm::responder::pdr::getRepoByType(handler.getRepo(), numericEffecterPDRs,
diff --git a/libpldmresponder/platform_state_effecter.hpp b/libpldmresponder/platform_state_effecter.hpp
index cfcd539..db70128 100644
--- a/libpldmresponder/platform_state_effecter.hpp
+++ b/libpldmresponder/platform_state_effecter.hpp
@@ -49,6 +49,11 @@
 
     std::unique_ptr<pldm_pdr, decltype(&pldm_pdr_destroy)> stateEffecterPdrRepo(
         pldm_pdr_init(), pldm_pdr_destroy);
+    if (!stateEffecterPdrRepo)
+    {
+        throw std::runtime_error(
+            "Failed to instantiate state effecter PDR repository");
+    }
     pldm::responder::pdr_utils::Repo stateEffecterPDRs(
         stateEffecterPdrRepo.get());
     getRepoByType(handler.getRepo(), stateEffecterPDRs,
diff --git a/libpldmresponder/platform_state_sensor.hpp b/libpldmresponder/platform_state_sensor.hpp
index de5b14d..b57a58c 100644
--- a/libpldmresponder/platform_state_sensor.hpp
+++ b/libpldmresponder/platform_state_sensor.hpp
@@ -91,6 +91,11 @@
 
     std::unique_ptr<pldm_pdr, decltype(&pldm_pdr_destroy)> stateSensorPdrRepo(
         pldm_pdr_init(), pldm_pdr_destroy);
+    if (!stateSensorPdrRepo)
+    {
+        throw std::runtime_error(
+            "Failed to instantiate state sensor PDR repository");
+    }
     pldm::responder::pdr_utils::Repo stateSensorPDRs(stateSensorPdrRepo.get());
     getRepoByType(handler.getRepo(), stateSensorPDRs, PLDM_STATE_SENSOR_PDR);
     if (stateSensorPDRs.empty())
diff --git a/pldmd/pldmd.cpp b/pldmd/pldmd.cpp
index 320bd89..37121b9 100644
--- a/pldmd/pldmd.cpp
+++ b/pldmd/pldmd.cpp
@@ -211,6 +211,10 @@
     dbus_api::Host dbusImplHost(bus, "/xyz/openbmc_project/pldm");
     std::unique_ptr<pldm_pdr, decltype(&pldm_pdr_destroy)> pdrRepo(
         pldm_pdr_init(), pldm_pdr_destroy);
+    if (!pdrRepo)
+    {
+        throw std::runtime_error("Failed to instantiate PDR repository");
+    }
     std::unique_ptr<pldm_entity_association_tree,
                     decltype(&pldm_entity_association_tree_destroy)>
         entityTree(pldm_entity_association_tree_init(),
