diff --git a/tests/libpldm_pdr_test.cpp b/tests/libpldm_pdr_test.cpp
index 869b1b7..0f9667e 100644
--- a/tests/libpldm_pdr_test.cpp
+++ b/tests/libpldm_pdr_test.cpp
@@ -24,18 +24,31 @@
     auto repo = pldm_pdr_init();
 
     std::array<uint8_t, 10> data{};
-    auto handle = pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+    uint32_t handle = 0;
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, &handle),
+        0);
     EXPECT_EQ(handle, 1u);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 1u);
     EXPECT_EQ(pldm_pdr_get_repo_size(repo), data.size());
 
-    handle = pldm_pdr_add(repo, data.data(), data.size(), 0u, false, 1);
+    handle = 0;
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, &handle),
+        0);
     EXPECT_EQ(handle, 2u);
-    handle = pldm_pdr_add(repo, data.data(), data.size(), 0u, false, 1);
+
+    handle = 0;
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, &handle),
+        0);
     EXPECT_EQ(handle, 3u);
-    handle = pldm_pdr_add(repo, data.data(), data.size(), htole32(0xdeeddeedu),
-                          false, 1);
-    EXPECT_EQ(handle, htole32(0xdeeddeed));
+
+    handle = 0xdeeddeedu;
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, &handle),
+        0);
+    EXPECT_EQ(handle, 0xdeeddeed);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 4u);
     EXPECT_EQ(pldm_pdr_get_repo_size(repo), data.size() * 4u);
 
@@ -47,32 +60,42 @@
     std::array<uint8_t, 10> data{};
 
     auto repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
     pldm_pdr_remove_pdrs_by_terminus_handle(repo, 1);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 0u);
     pldm_pdr_destroy(repo);
 
     repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 2);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 2, NULL),
+              0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 2u);
     pldm_pdr_remove_pdrs_by_terminus_handle(repo, 1);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 1u);
     pldm_pdr_destroy(repo);
 
     repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 2);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 2);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 2, NULL),
+              0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 2, NULL),
+              0);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 3u);
     pldm_pdr_remove_pdrs_by_terminus_handle(repo, 2);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 1u);
     pldm_pdr_destroy(repo);
 
     repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 2);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 2, NULL), 0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 3u);
     pldm_pdr_remove_remote_pdrs(repo);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 1u);
@@ -93,161 +116,237 @@
     pldm_pdr_destroy(repo);
 
     repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
     pldm_pdr_remove_remote_pdrs(repo);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 0u);
     pldm_pdr_destroy(repo);
 
     repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
     pldm_pdr_remove_remote_pdrs(repo);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 1u);
     pldm_pdr_destroy(repo);
 
     repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
     pldm_pdr_remove_remote_pdrs(repo);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 1u);
     pldm_pdr_destroy(repo);
 
     repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
     pldm_pdr_remove_remote_pdrs(repo);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 1u);
     pldm_pdr_destroy(repo);
 
     repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
     pldm_pdr_remove_remote_pdrs(repo);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 0u);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 2u);
     pldm_pdr_destroy(repo);
 
     repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
     pldm_pdr_remove_remote_pdrs(repo);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 4u);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 6u);
     pldm_pdr_destroy(repo);
 
     repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
     pldm_pdr_remove_remote_pdrs(repo);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 3u);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 5u);
     pldm_pdr_destroy(repo);
 
     repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
     pldm_pdr_remove_remote_pdrs(repo);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 3u);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 5u);
     pldm_pdr_destroy(repo);
 
     repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
     pldm_pdr_remove_remote_pdrs(repo);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 2u);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 4u);
     pldm_pdr_destroy(repo);
 
     repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
     pldm_pdr_remove_remote_pdrs(repo);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 3u);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 5u);
     pldm_pdr_destroy(repo);
 
     repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
     pldm_pdr_remove_remote_pdrs(repo);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 2u);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 4u);
     pldm_pdr_destroy(repo);
 
     repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
     pldm_pdr_remove_remote_pdrs(repo);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 1u);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 3u);
     pldm_pdr_destroy(repo);
 
     repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
     pldm_pdr_remove_remote_pdrs(repo);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 1u);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 3u);
     pldm_pdr_destroy(repo);
 
     repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
     pldm_pdr_remove_remote_pdrs(repo);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 2u);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 4u);
     pldm_pdr_destroy(repo);
 
     repo = pldm_pdr_init();
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, NULL), 0);
+    EXPECT_EQ(pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, NULL),
+              0);
     pldm_pdr_remove_remote_pdrs(repo);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 2u);
-    auto handle = pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+    uint32_t handle = 0;
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, &handle),
+        0);
     EXPECT_EQ(handle, 3u);
-    handle = pldm_pdr_add(repo, data.data(), data.size(), 0, true, 1);
+    handle = 0;
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, &handle),
+        0);
     EXPECT_EQ(handle, 4u);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 4u);
     pldm_pdr_destroy(repo);
@@ -258,8 +357,10 @@
     auto repo = pldm_pdr_init();
 
     std::array<uint32_t, 10> in{100, 345, 3, 6, 89, 0, 11, 45, 23434, 123123};
-    pldm_pdr_add(repo, reinterpret_cast<uint8_t*>(in.data()), sizeof(in), 1,
-                 false, 1);
+    uint32_t handle = 1;
+    EXPECT_EQ(pldm_pdr_add_check(repo, reinterpret_cast<uint8_t*>(in.data()),
+                                 sizeof(in), false, 1, &handle),
+              0);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 1u);
     EXPECT_EQ(pldm_pdr_get_repo_size(repo), sizeof(in));
     uint32_t size{};
@@ -290,12 +391,18 @@
 
     std::array<uint32_t, 10> in2{1000, 3450, 30,  60,     890,
                                  0,    110,  450, 234034, 123123};
-    pldm_pdr_add(repo, reinterpret_cast<uint8_t*>(in2.data()), sizeof(in2), 2,
-                 false, 1);
-    pldm_pdr_add(repo, reinterpret_cast<uint8_t*>(in2.data()), sizeof(in2), 3,
-                 false, 1);
-    pldm_pdr_add(repo, reinterpret_cast<uint8_t*>(in2.data()), sizeof(in2), 4,
-                 true, 1);
+    handle = 2;
+    EXPECT_EQ(pldm_pdr_add_check(repo, reinterpret_cast<uint8_t*>(in2.data()),
+                                 sizeof(in2), false, 1, &handle),
+              0);
+    handle = 3;
+    EXPECT_EQ(pldm_pdr_add_check(repo, reinterpret_cast<uint8_t*>(in2.data()),
+                                 sizeof(in2), false, 1, &handle),
+              0);
+    handle = 4;
+    EXPECT_EQ(pldm_pdr_add_check(repo, reinterpret_cast<uint8_t*>(in2.data()),
+                                 sizeof(in2), true, 1, &handle),
+              0);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 4u);
     EXPECT_EQ(pldm_pdr_get_repo_size(repo), sizeof(in2) * 4);
     hdl = pldm_pdr_find_record(repo, 0, &outData, &size, &nextRecHdl);
@@ -340,8 +447,10 @@
     auto repo = pldm_pdr_init();
 
     std::array<uint32_t, 10> in{100, 345, 3, 6, 89, 0, 11, 45, 23434, 123123};
-    pldm_pdr_add(repo, reinterpret_cast<uint8_t*>(in.data()), sizeof(in), 1,
-                 false, 1);
+    uint32_t handle = 1;
+    EXPECT_EQ(pldm_pdr_add_check(repo, reinterpret_cast<uint8_t*>(in.data()),
+                                 sizeof(in), false, 1, &handle),
+              0);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 1u);
     EXPECT_EQ(pldm_pdr_get_repo_size(repo), sizeof(in));
     uint32_t size{};
@@ -356,12 +465,18 @@
 
     std::array<uint32_t, 10> in2{1000, 3450, 30,  60,     890,
                                  0,    110,  450, 234034, 123123};
-    pldm_pdr_add(repo, reinterpret_cast<uint8_t*>(in2.data()), sizeof(in2), 2,
-                 false, 1);
-    pldm_pdr_add(repo, reinterpret_cast<uint8_t*>(in2.data()), sizeof(in2), 3,
-                 false, 1);
-    pldm_pdr_add(repo, reinterpret_cast<uint8_t*>(in2.data()), sizeof(in2), 4,
-                 false, 1);
+    handle = 2;
+    EXPECT_EQ(pldm_pdr_add_check(repo, reinterpret_cast<uint8_t*>(in2.data()),
+                                 sizeof(in2), false, 1, &handle),
+              0);
+    handle = 3;
+    EXPECT_EQ(pldm_pdr_add_check(repo, reinterpret_cast<uint8_t*>(in2.data()),
+                                 sizeof(in2), false, 1, &handle),
+              0);
+    handle = 4;
+    EXPECT_EQ(pldm_pdr_add_check(repo, reinterpret_cast<uint8_t*>(in2.data()),
+                                 sizeof(in2), false, 1, &handle),
+              0);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 4u);
     EXPECT_EQ(pldm_pdr_get_repo_size(repo), sizeof(in2) * 4);
     hdl = pldm_pdr_get_next_record(repo, hdl, &outData, &size, &nextRecHdl);
@@ -393,13 +508,25 @@
     std::array<uint8_t, sizeof(pldm_pdr_hdr)> data{};
     pldm_pdr_hdr* hdr = reinterpret_cast<pldm_pdr_hdr*>(data.data());
     hdr->type = 1;
-    auto first = pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+    uint32_t first = 0;
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, &first),
+        0);
     hdr->type = 2;
-    auto second = pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+    uint32_t second = 0;
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, &second),
+        0);
     hdr->type = 3;
-    auto third = pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+    uint32_t third = 0;
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, &third),
+        0);
     hdr->type = 4;
-    auto fourth = pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+    uint32_t fourth = 0;
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, &fourth),
+        0);
 
     uint8_t* outData = nullptr;
     uint32_t size{};
@@ -553,13 +680,26 @@
     auto repo = pldm_pdr_init();
 
     std::array<uint8_t, 10> data{};
-    auto handle1 = pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
-    auto handle2 = pldm_pdr_add(repo, data.data(), data.size(), 23, false, 1);
-    auto handle3 = pldm_pdr_add(repo, data.data(), data.size(), 77, false, 1);
-    auto handle4 =
-        pldm_pdr_add(repo, data.data(), data.size(), 16777325, true, 1);
-    auto handle5 =
-        pldm_pdr_add(repo, data.data(), data.size(), 16777344, true, 1);
+    uint32_t handle1 = 0;
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, &handle1),
+        0);
+    uint32_t handle2 = 23;
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, &handle2),
+        0);
+    uint32_t handle3 = 77;
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), false, 1, &handle3),
+        0);
+    uint32_t handle4 = 16777325;
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, &handle4),
+        0);
+    uint32_t handle5 = 16777344;
+    EXPECT_EQ(
+        pldm_pdr_add_check(repo, data.data(), data.size(), true, 1, &handle5),
+        0);
 
     auto rec1 = pldm_pdr_find_last_in_range(repo, 0, 100);
     auto rec2 = pldm_pdr_find_last_in_range(repo, 16777300, 33554431);
