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())
