diff --git a/libpldm/fru.c b/libpldm/fru.c
index 207d4de..3e0887d 100644
--- a/libpldm/fru.c
+++ b/libpldm/fru.c
@@ -177,13 +177,12 @@
 	size_t record_hdr_size = sizeof(struct pldm_fru_record_data_format) -
 				 sizeof(struct pldm_fru_record_tlv);
 
-	if ((*curr_size + record_hdr_size + tlvs_size) != total_size) {
-		return PLDM_ERROR_INVALID_LENGTH;
-	}
-
 	if (fru_table == NULL || curr_size == NULL || !tlvs_size) {
 		return PLDM_ERROR_INVALID_DATA;
 	}
+	if ((*curr_size + record_hdr_size + tlvs_size) != total_size) {
+		return PLDM_ERROR_INVALID_LENGTH;
+	}
 
 	struct pldm_fru_record_data_format *record =
 	    (struct pldm_fru_record_data_format *)(fru_table + *curr_size);
diff --git a/libpldmresponder/pdr_numeric_effecter.hpp b/libpldmresponder/pdr_numeric_effecter.hpp
index 9152320..ca6e5ad 100644
--- a/libpldmresponder/pdr_numeric_effecter.hpp
+++ b/libpldmresponder/pdr_numeric_effecter.hpp
@@ -38,6 +38,11 @@
 
         pldm_numeric_effecter_value_pdr* pdr =
             reinterpret_cast<pldm_numeric_effecter_value_pdr*>(entry.data());
+        if (!pdr)
+        {
+            std::cerr << "Failed to get numeric effecter PDR.\n";
+            continue;
+        }
         pdr->hdr.record_handle = 0;
         pdr->hdr.version = 1;
         pdr->hdr.type = PLDM_NUMERIC_EFFECTER_PDR;
diff --git a/libpldmresponder/pdr_state_effecter.hpp b/libpldmresponder/pdr_state_effecter.hpp
index aa0e912..0ddfdfa 100644
--- a/libpldmresponder/pdr_state_effecter.hpp
+++ b/libpldmresponder/pdr_state_effecter.hpp
@@ -57,6 +57,11 @@
 
         pldm_state_effecter_pdr* pdr =
             reinterpret_cast<pldm_state_effecter_pdr*>(entry.data());
+        if (!pdr)
+        {
+            std::cerr << "Failed to get state effecter PDR.\n";
+            continue;
+        }
         pdr->hdr.record_handle = 0;
         pdr->hdr.version = 1;
         pdr->hdr.type = PLDM_STATE_EFFECTER_PDR;
diff --git a/libpldmresponder/pdr_state_sensor.hpp b/libpldmresponder/pdr_state_sensor.hpp
index b94b297..5093dcf 100644
--- a/libpldmresponder/pdr_state_sensor.hpp
+++ b/libpldmresponder/pdr_state_sensor.hpp
@@ -56,6 +56,11 @@
 
         pldm_state_sensor_pdr* pdr =
             reinterpret_cast<pldm_state_sensor_pdr*>(entry.data());
+        if (!pdr)
+        {
+            std::cerr << "Failed to get state sensor PDR.\n";
+            continue;
+        }
         pdr->hdr.record_handle = 0;
         pdr->hdr.version = 1;
         pdr->hdr.type = PLDM_STATE_SENSOR_PDR;
diff --git a/oem/ibm/libpldmresponder/oem_ibm_handler.cpp b/oem/ibm/libpldmresponder/oem_ibm_handler.cpp
index 43e0de4..d595c2e 100644
--- a/oem/ibm/libpldmresponder/oem_ibm_handler.cpp
+++ b/oem/ibm/libpldmresponder/oem_ibm_handler.cpp
@@ -161,6 +161,7 @@
     {
         std::cerr << "Failed to get record by PDR type, ERROR:"
                   << PLDM_PLATFORM_INVALID_EFFECTER_ID << std::endl;
+        return;
     }
     pdr->hdr.record_handle = 0;
     pdr->hdr.version = 1;
@@ -211,6 +212,7 @@
     {
         std::cerr << "Failed to get record by PDR type, ERROR:"
                   << PLDM_PLATFORM_INVALID_SENSOR_ID << std::endl;
+        return;
     }
     pdr->hdr.record_handle = 0;
     pdr->hdr.version = 1;
diff --git a/pldmtool/pldm_platform_cmd.cpp b/pldmtool/pldm_platform_cmd.cpp
index 77bcb5b..2c4a6df 100644
--- a/pldmtool/pldm_platform_cmd.cpp
+++ b/pldmtool/pldm_platform_cmd.cpp
@@ -291,6 +291,11 @@
         data += sizeof(pldm_pdr_hdr);
         pldm_pdr_fru_record_set* pdr =
             reinterpret_cast<pldm_pdr_fru_record_set*>(data);
+        if (!pdr)
+        {
+            std::cerr << "Failed to get the FRU record set PDR" << std::endl;
+            return;
+        }
 
         output["PLDMTerminusHandle"] = unsigned(pdr->terminus_handle);
         output["FRURecordSetIdentifier"] = unsigned(pdr->fru_rsi);
@@ -314,6 +319,12 @@
         data += sizeof(pldm_pdr_hdr);
         pldm_pdr_entity_association* pdr =
             reinterpret_cast<pldm_pdr_entity_association*>(data);
+        if (!pdr)
+        {
+            std::cerr << "Failed to get the PDR eneity association"
+                      << std::endl;
+            return;
+        }
 
         output["containerID"] = int(pdr->container_id);
         output["associationType"] = assocationType.at(pdr->association_type);
@@ -346,6 +357,11 @@
     {
         struct pldm_numeric_effecter_value_pdr* pdr =
             (struct pldm_numeric_effecter_value_pdr*)data;
+        if (!pdr)
+        {
+            std::cerr << "Failed to get numeric effecter PDR" << std::endl;
+            return;
+        }
 
         output["PLDMTerminusHandle"] = int(pdr->terminus_handle);
         output["effecterID"] = int(pdr->effecter_id);
@@ -536,6 +552,7 @@
     {
         if (data == NULL)
         {
+            std::cerr << "Failed to get PDR message" << std::endl;
             return;
         }
 
@@ -544,6 +561,10 @@
         output["responseCount"] = respCnt;
 
         struct pldm_pdr_hdr* pdr = (struct pldm_pdr_hdr*)data;
+        if (!pdr)
+        {
+            return;
+        }
         printCommonPDRHeader(pdr, output);
 
         switch (pdr->type)
diff --git a/softoff/softoff.cpp b/softoff/softoff.cpp
index d215c1d..a704885 100644
--- a/softoff/softoff.cpp
+++ b/softoff/softoff.cpp
@@ -258,6 +258,12 @@
             pdr = reinterpret_cast<pldm_state_sensor_pdr*>(rep.data());
         }
 
+        if (!pdr)
+        {
+            std::cerr << "Failed to get state sensor PDR.\n";
+            return PLDM_ERROR;
+        }
+
         sensorID = pdr->sensor_id;
 
         auto compositeSensorCount = pdr->composite_sensor_count;
