pldmd: use RAII to manage recvMsg buffer lifetime

Replace manual free() calls with std::unique_ptr RAII wrappers to
ensure the buffer is freed on error paths.

Change-Id: Ic22557d7f68607bdae1be83809b69886803adb48
Signed-off-by: Ravi Teja <rbailapu@qti.qualcomm.com>
diff --git a/pldmd/pldmd.cpp b/pldmd/pldmd.cpp
index 8df1b50..a1b4595 100644
--- a/pldmd/pldmd.cpp
+++ b/pldmd/pldmd.cpp
@@ -367,6 +367,8 @@
         size_t recvDataLength = 0;
         returnCode = pldmTransport.recvMsg(TID, requestMsg, recvDataLength);
 
+        std::unique_ptr<void, decltype(&free)> requestMsgPtr(requestMsg, free);
+
         if (returnCode == PLDM_REQUESTER_SUCCESS)
         {
             std::vector<uint8_t> requestMsgVec(
@@ -417,8 +419,6 @@
                 "Failed to receive PLDM request for pldmTransport, response code '{RETURN_CODE}'",
                 "RETURN_CODE", returnCode);
         }
-        /* Free requestMsg after using */
-        free(requestMsg);
     };
 
     bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
diff --git a/utilities/requester/set_state_effecter_async.cpp b/utilities/requester/set_state_effecter_async.cpp
index fc054d6..02efd7d 100644
--- a/utilities/requester/set_state_effecter_async.cpp
+++ b/utilities/requester/set_state_effecter_async.cpp
@@ -9,6 +9,8 @@
 #include <sdeventplus/source/io.hpp>
 
 #include <array>
+#include <cstdlib>
+#include <memory>
 
 using namespace sdeventplus;
 using namespace sdeventplus::source;
@@ -70,6 +72,8 @@
             error("Failed to receive PLDM response, rc={RC}", "RC", rc);
             return;
         }
+        std::unique_ptr<void, decltype(&free)> responseMsgPtr(
+            responseMsg, free);
         pldm_msg* response = new (responseMsg) pldm_msg;
         if (dstTid != srcTid ||
             !pldm_msg_hdr_correlate_response(&request->hdr, &response->hdr))
@@ -77,7 +81,6 @@
             error(
                 "Unexpected PLDM response, received TID={RTID} expected TID={ETID}",
                 "RTID", srcTid, "ETID", dstTid);
-            free(responseMsg);
             return;
         }
 
@@ -87,7 +90,6 @@
         info(
             "Done! Got the response for PLDM request message, response code '{RC}'",
             "RC", lg2::hex, response->payload[0]);
-        free(responseMsg);
         exit(EXIT_SUCCESS);
     };
     IO io(event, pldmTransport.getEventSource(), EPOLLIN, std::move(callback));