diff --git a/test/pldm_utils_test.cpp b/test/pldm_utils_test.cpp
index 4684f9a..65b16c1 100644
--- a/test/pldm_utils_test.cpp
+++ b/test/pldm_utils_test.cpp
@@ -412,12 +412,12 @@
 
     std::vector<uint8_t> pdr(sizeof(struct pldm_state_effecter_pdr) -
                              sizeof(uint8_t) +
-                             sizeof(struct state_effecter_possible_states));
+                             sizeof(struct state_effecter_possible_states) * 3);
 
     auto rec = reinterpret_cast<pldm_state_effecter_pdr*>(pdr.data());
+    auto state_start = rec->possible_states;
 
-    auto state =
-        reinterpret_cast<state_effecter_possible_states*>(rec->possible_states);
+    auto state = reinterpret_cast<state_effecter_possible_states*>(state_start);
 
     rec->hdr.type = 11;
     rec->hdr.record_handle = 1;
@@ -427,9 +427,15 @@
     state->state_set_id = 198;
     state->possible_states_size = 1;
 
+    state_start += state->possible_states_size + sizeof(state->state_set_id) +
+                   sizeof(state->possible_states_size);
+    state = reinterpret_cast<state_effecter_possible_states*>(state_start);
     state->state_set_id = 193;
     state->possible_states_size = 1;
 
+    state_start += state->possible_states_size + sizeof(state->state_set_id) +
+                   sizeof(state->possible_states_size);
+    state = reinterpret_cast<state_effecter_possible_states*>(state_start);
     state->state_set_id = 192;
     state->possible_states_size = 1;
 
@@ -451,12 +457,12 @@
 
     std::vector<uint8_t> pdr(sizeof(struct pldm_state_effecter_pdr) -
                              sizeof(uint8_t) +
-                             sizeof(struct state_effecter_possible_states));
+                             sizeof(struct state_effecter_possible_states) * 3);
 
     auto rec = reinterpret_cast<pldm_state_effecter_pdr*>(pdr.data());
+    auto state_start = rec->possible_states;
 
-    auto state =
-        reinterpret_cast<state_effecter_possible_states*>(rec->possible_states);
+    auto state = reinterpret_cast<state_effecter_possible_states*>(state_start);
 
     rec->hdr.type = 11;
     rec->hdr.record_handle = 1;
@@ -466,9 +472,15 @@
     state->state_set_id = 198;
     state->possible_states_size = 1;
 
+    state_start += state->possible_states_size + sizeof(state->state_set_id) +
+                   sizeof(state->possible_states_size);
+    state = reinterpret_cast<state_effecter_possible_states*>(state_start);
     state->state_set_id = 193;
     state->possible_states_size = 1;
 
+    state_start += state->possible_states_size + sizeof(state->state_set_id) +
+                   sizeof(state->possible_states_size);
+    state = reinterpret_cast<state_effecter_possible_states*>(state_start);
     state->state_set_id = 123;
     state->possible_states_size = 1;
 
@@ -812,12 +824,12 @@
 
     std::vector<uint8_t> pdr(sizeof(struct pldm_state_sensor_pdr) -
                              sizeof(uint8_t) +
-                             sizeof(struct state_sensor_possible_states));
+                             sizeof(struct state_sensor_possible_states) * 3);
 
     auto rec = reinterpret_cast<pldm_state_sensor_pdr*>(pdr.data());
+    auto state_start = rec->possible_states;
 
-    auto state =
-        reinterpret_cast<state_sensor_possible_states*>(rec->possible_states);
+    auto state = reinterpret_cast<state_sensor_possible_states*>(state_start);
 
     rec->hdr.type = 4;
     rec->hdr.record_handle = 1;
@@ -827,9 +839,17 @@
     state->state_set_id = 2;
     state->possible_states_size = 1;
 
+    state_start += state->possible_states_size + sizeof(state->state_set_id) +
+                   sizeof(state->possible_states_size);
+    state = reinterpret_cast<state_sensor_possible_states*>(state_start);
+
     state->state_set_id = 7;
     state->possible_states_size = 1;
 
+    state_start += state->possible_states_size + sizeof(state->state_set_id) +
+                   sizeof(state->possible_states_size);
+    state = reinterpret_cast<state_sensor_possible_states*>(state_start);
+
     state->state_set_id = 1;
     state->possible_states_size = 1;
 
@@ -851,12 +871,12 @@
 
     std::vector<uint8_t> pdr(sizeof(struct pldm_state_sensor_pdr) -
                              sizeof(uint8_t) +
-                             sizeof(struct state_sensor_possible_states));
+                             sizeof(struct state_sensor_possible_states) * 3);
 
     auto rec = reinterpret_cast<pldm_state_sensor_pdr*>(pdr.data());
+    auto state_start = rec->possible_states;
 
-    auto state =
-        reinterpret_cast<state_sensor_possible_states*>(rec->possible_states);
+    auto state = reinterpret_cast<state_sensor_possible_states*>(state_start);
 
     rec->hdr.type = 4;
     rec->hdr.record_handle = 1;
@@ -866,9 +886,15 @@
     state->state_set_id = 15;
     state->possible_states_size = 1;
 
+    state_start += state->possible_states_size + sizeof(state->state_set_id) +
+                   sizeof(state->possible_states_size);
+    state = reinterpret_cast<state_sensor_possible_states*>(state_start);
     state->state_set_id = 19;
     state->possible_states_size = 1;
 
+    state_start += state->possible_states_size + sizeof(state->state_set_id) +
+                   sizeof(state->possible_states_size);
+    state = reinterpret_cast<state_sensor_possible_states*>(state_start);
     state->state_set_id = 39;
     state->possible_states_size = 1;
 
@@ -879,4 +905,4 @@
     EXPECT_EQ(record.empty(), true);
 
     pldm_pdr_destroy(repo);
-}
\ No newline at end of file
+}
diff --git a/utils.cpp b/utils.cpp
index 7402df5..1212f62 100644
--- a/utils.cpp
+++ b/utils.cpp
@@ -42,13 +42,14 @@
             {
                 auto pdr = reinterpret_cast<pldm_state_effecter_pdr*>(outData);
                 auto compositeEffecterCount = pdr->composite_effecter_count;
+                auto possible_states_start = pdr->possible_states;
 
                 for (auto effecters = 0x00; effecters < compositeEffecterCount;
                      effecters++)
                 {
                     auto possibleStates =
                         reinterpret_cast<state_effecter_possible_states*>(
-                            pdr->possible_states);
+                            possible_states_start);
                     auto setId = possibleStates->state_set_id;
                     auto possibleStateSize =
                         possibleStates->possible_states_size;
@@ -60,8 +61,8 @@
                         pdrs.emplace_back(std::move(effecter_pdr));
                         break;
                     }
-                    possibleStates += possibleStateSize + sizeof(setId) +
-                                      sizeof(possibleStateSize);
+                    possible_states_start += possibleStateSize + sizeof(setId) +
+                                             sizeof(possibleStateSize);
                 }
             }
 
@@ -95,13 +96,14 @@
             {
                 auto pdr = reinterpret_cast<pldm_state_sensor_pdr*>(outData);
                 auto compositeSensorCount = pdr->composite_sensor_count;
+                auto possible_states_start = pdr->possible_states;
 
                 for (auto sensors = 0x00; sensors < compositeSensorCount;
                      sensors++)
                 {
                     auto possibleStates =
                         reinterpret_cast<state_sensor_possible_states*>(
-                            pdr->possible_states);
+                            possible_states_start);
                     auto setId = possibleStates->state_set_id;
                     auto possibleStateSize =
                         possibleStates->possible_states_size;
@@ -113,8 +115,8 @@
                         pdrs.emplace_back(std::move(sensor_pdr));
                         break;
                     }
-                    possibleStates += possibleStateSize + sizeof(setId) +
-                                      sizeof(possibleStateSize);
+                    possible_states_start += possibleStateSize + sizeof(setId) +
+                                             sizeof(possibleStateSize);
                 }
             }
 
