diff --git a/common/test/pldm_utils_test.cpp b/common/test/pldm_utils_test.cpp
index fed65d1..549e289 100644
--- a/common/test/pldm_utils_test.cpp
+++ b/common/test/pldm_utils_test.cpp
@@ -104,7 +104,9 @@
     state->state_set_id = 196;
     state->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr.data(), pdr.size(), 0, false, 1);
+    uint32_t handle = 0;
+    ASSERT_EQ(
+        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     auto record = findStateEffecterPDR(tid, entityID, stateSetId, repo);
 
@@ -137,7 +139,9 @@
     state->state_set_id = 196;
     state->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr.data(), pdr.size(), 0, false, 1);
+    uint32_t handle = 0;
+    ASSERT_EQ(
+        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     auto record = findStateEffecterPDR(tid, entityID, stateSetId, repo);
 
@@ -186,7 +190,9 @@
     state->state_set_id = 129;
     state->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr.data(), pdr.size(), 0, false, 1);
+    uint32_t handle = 0;
+    ASSERT_EQ(
+        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     std::vector<uint8_t> pdr_second(
         sizeof(struct pldm_state_effecter_pdr) - sizeof(uint8_t) +
@@ -206,7 +212,10 @@
     state_second->state_set_id = 129;
     state_second->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr_second.data(), pdr_second.size(), 0, false, 1);
+    handle = 0;
+    ASSERT_EQ(pldm_pdr_add_check(repo, pdr_second.data(), pdr_second.size(),
+                                 false, 1, &handle),
+              0);
 
     uint16_t entityID_ = 31;
     uint16_t stateSetId_ = 129;
@@ -243,7 +252,9 @@
     state->state_set_id = 198;
     state->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr.data(), pdr.size(), 0, false, 1);
+    uint32_t handle = 0;
+    ASSERT_EQ(
+        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     std::vector<uint8_t> pdr_second(
         sizeof(struct pldm_state_effecter_pdr) - sizeof(uint8_t) +
@@ -263,7 +274,10 @@
     state_second->state_set_id = 169;
     state_second->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr_second.data(), pdr_second.size(), 0, false, 1);
+    handle = 0;
+    ASSERT_EQ(pldm_pdr_add_check(repo, pdr_second.data(), pdr_second.size(),
+                                 false, 1, &handle),
+              0);
 
     auto record = findStateEffecterPDR(tid, entityID, stateSetId, repo);
 
@@ -296,7 +310,9 @@
     state->state_set_id = 198;
     state->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr.data(), pdr.size(), 0, false, 1);
+    uint32_t handle = 0;
+    ASSERT_EQ(
+        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     std::vector<uint8_t> pdr_second(
         sizeof(struct pldm_state_effecter_pdr) - sizeof(uint8_t) +
@@ -316,7 +332,10 @@
     state_second->state_set_id = 192;
     state_second->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr_second.data(), pdr_second.size(), 0, false, 1);
+    handle = 0;
+    ASSERT_EQ(pldm_pdr_add_check(repo, pdr_second.data(), pdr_second.size(),
+                                 false, 1, &handle),
+              0);
 
     auto record = findStateEffecterPDR(tid, entityID, stateSetId, repo);
 
@@ -350,7 +369,9 @@
     state->state_set_id = 198;
     state->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr.data(), pdr.size(), 0, false, 1);
+    uint32_t handle = 0;
+    ASSERT_EQ(
+        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     std::vector<uint8_t> pdr_second(
         sizeof(struct pldm_state_effecter_pdr) - sizeof(uint8_t) +
@@ -370,7 +391,10 @@
     state_second->state_set_id = 192;
     state_second->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr_second.data(), pdr_second.size(), 0, false, 1);
+    handle = 0;
+    ASSERT_EQ(pldm_pdr_add_check(repo, pdr_second.data(), pdr_second.size(),
+                                 false, 1, &handle),
+              0);
 
     std::vector<uint8_t> pdr_third(
         sizeof(struct pldm_state_effecter_pdr) - sizeof(uint8_t) +
@@ -434,7 +458,9 @@
     state->state_set_id = 192;
     state->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr.data(), pdr.size(), 0, false, 1);
+    uint32_t handle = 0;
+    ASSERT_EQ(
+        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     auto record = findStateEffecterPDR(tid, entityID, stateSetId, repo);
 
@@ -479,7 +505,9 @@
     state->state_set_id = 123;
     state->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr.data(), pdr.size(), 0, false, 1);
+    uint32_t handle = 0;
+    ASSERT_EQ(
+        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     auto record = findStateEffecterPDR(tid, entityID, stateSetId, repo);
 
@@ -512,7 +540,9 @@
     state->state_set_id = 1;
     state->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr.data(), pdr.size(), 0, false, 1);
+    uint32_t handle = 0;
+    ASSERT_EQ(
+        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     auto record = findStateSensorPDR(tid, entityID, stateSetId, repo);
 
@@ -545,7 +575,9 @@
     state->state_set_id = 1;
     state->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr.data(), pdr.size(), 0, false, 1);
+    uint32_t handle = 0;
+    ASSERT_EQ(
+        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     auto record = findStateSensorPDR(tid, entityID, stateSetId, repo);
 
@@ -594,7 +626,9 @@
     state->state_set_id = 1;
     state->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr.data(), pdr.size(), 0, false, 1);
+    uint32_t handle = 0;
+    ASSERT_EQ(
+        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     std::vector<uint8_t> pdr_second(
         sizeof(struct pldm_state_sensor_pdr) - sizeof(uint8_t) +
@@ -614,7 +648,10 @@
     state_second->state_set_id = 1;
     state_second->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr_second.data(), pdr_second.size(), 0, false, 1);
+    handle = 0;
+    ASSERT_EQ(pldm_pdr_add_check(repo, pdr_second.data(), pdr_second.size(),
+                                 false, 1, &handle),
+              0);
 
     uint16_t entityID_ = 5;
     uint16_t stateSetId_ = 1;
@@ -651,7 +688,9 @@
     state->state_set_id = 2;
     state->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr.data(), pdr.size(), 0, false, 1);
+    uint32_t handle = 0;
+    ASSERT_EQ(
+        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     std::vector<uint8_t> pdr_second(
         sizeof(struct pldm_state_sensor_pdr) - sizeof(uint8_t) +
@@ -671,7 +710,10 @@
     state_second->state_set_id = 3;
     state_second->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr_second.data(), pdr_second.size(), 0, false, 1);
+    handle = 0;
+    ASSERT_EQ(pldm_pdr_add_check(repo, pdr_second.data(), pdr_second.size(),
+                                 false, 1, &handle),
+              0);
 
     auto record = findStateSensorPDR(tid, entityID, stateSetId, repo);
 
@@ -704,7 +746,9 @@
     state->state_set_id = 20;
     state->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr.data(), pdr.size(), 0, false, 1);
+    uint32_t handle = 0;
+    ASSERT_EQ(
+        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     std::vector<uint8_t> pdr_second(
         sizeof(struct pldm_state_sensor_pdr) - sizeof(uint8_t) +
@@ -724,7 +768,10 @@
     state_second->state_set_id = 1;
     state_second->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr_second.data(), pdr_second.size(), 0, false, 1);
+    handle = 0;
+    ASSERT_EQ(pldm_pdr_add_check(repo, pdr_second.data(), pdr_second.size(),
+                                 false, 1, &handle),
+              0);
 
     auto record = findStateSensorPDR(tid, entityID, stateSetId, repo);
 
@@ -758,7 +805,9 @@
     state->state_set_id = 9;
     state->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr.data(), pdr.size(), 0, false, 1);
+    uint32_t handle = 0;
+    ASSERT_EQ(
+        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     std::vector<uint8_t> pdr_second(
         sizeof(struct pldm_state_sensor_pdr) - sizeof(uint8_t) +
@@ -778,7 +827,10 @@
     state_second->state_set_id = 1;
     state_second->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr_second.data(), pdr_second.size(), 0, false, 1);
+    handle = 0;
+    ASSERT_EQ(pldm_pdr_add_check(repo, pdr_second.data(), pdr_second.size(),
+                                 false, 1, &handle),
+              0);
 
     std::vector<uint8_t> pdr_third(sizeof(struct pldm_state_sensor_pdr) -
                                    sizeof(uint8_t) +
@@ -843,7 +895,9 @@
     state->state_set_id = 1;
     state->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr.data(), pdr.size(), 0, false, 1);
+    uint32_t handle = 0;
+    ASSERT_EQ(
+        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     auto record = findStateSensorPDR(tid, entityID, stateSetId, repo);
 
@@ -888,7 +942,9 @@
     state->state_set_id = 39;
     state->possible_states_size = 1;
 
-    pldm_pdr_add(repo, pdr.data(), pdr.size(), 0, false, 1);
+    uint32_t handle = 0;
+    ASSERT_EQ(
+        pldm_pdr_add_check(repo, pdr.data(), pdr.size(), false, 1, &handle), 0);
 
     auto record = findStateSensorPDR(tid, entityID, stateSetId, repo);
 
diff --git a/host-bmc/host_pdr_handler.cpp b/host-bmc/host_pdr_handler.cpp
index 1913f0b..89c170e 100644
--- a/host-bmc/host_pdr_handler.cpp
+++ b/host-bmc/host_pdr_handler.cpp
@@ -531,8 +531,13 @@
                 }
                 else
                 {
-                    pldm_pdr_add(repo, pdr.data(), respCount, rh, true,
-                                 pdrTerminusHandle);
+                    rc = pldm_pdr_add_check(repo, pdr.data(), respCount, true,
+                                            pdrTerminusHandle, &rh);
+                    if (rc)
+                    {
+                        // pldm_pdr_add() assert()ed on failure to add a PDR.
+                        throw std::runtime_error("Failed to add PDR");
+                    }
                 }
             }
         }
diff --git a/libpldmresponder/pdr_utils.cpp b/libpldmresponder/pdr_utils.cpp
index dc6294e..7e5e491 100644
--- a/libpldmresponder/pdr_utils.cpp
+++ b/libpldmresponder/pdr_utils.cpp
@@ -23,8 +23,15 @@
 
 RecordHandle Repo::addRecord(const PdrEntry& pdrEntry)
 {
-    return pldm_pdr_add(repo, pdrEntry.data, pdrEntry.size,
-                        pdrEntry.handle.recordHandle, false, TERMINUS_HANDLE);
+    uint32_t handle = pdrEntry.handle.recordHandle;
+    int rc = pldm_pdr_add_check(repo, pdrEntry.data, pdrEntry.size, false,
+                                TERMINUS_HANDLE, &handle);
+    if (rc)
+    {
+        // pldm_pdr_add() assert()ed on failure to add PDR
+        throw std::runtime_error("Failed to add PDR");
+    }
+    return handle;
 }
 
 const pldm_pdr_record* Repo::getFirstRecord(PdrEntry& pdrEntry)
