a memory leak may occur if a takeover_request is processed after
split brain prevention is disabled at runtime
---
 src/rde/rded/rde_main.cc | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/rde/rded/rde_main.cc b/src/rde/rded/rde_main.cc
index f511814..bb17133 100644
--- a/src/rde/rded/rde_main.cc
+++ b/src/rde/rded/rde_main.cc
@@ -181,10 +181,13 @@ static void handle_mbx_event() {
       break;
     case RDE_MSG_TAKEOVER_REQUEST_CALLBACK: {
       rde_cb->monitor_takeover_req_thread_running = false;
+      const std::string takeover_request(msg->info.takeover_request);
+      delete[] msg->info.takeover_request;
+      msg->info.takeover_request = nullptr;
 
       if (role->role() == PCS_RDA_ACTIVE) {
         TRACE("Received takeover request '%s'. Our network size is %zu",
-                msg->info.takeover_request,
+               takeover_request.c_str(),
                rde_cb->cluster_members.size());
 
         Consensus consensus_service;
@@ -195,8 +198,7 @@ static void handle_mbx_event() {
         Consensus::TakeoverState state =
             consensus_service.HandleTakeoverRequest(
                 rde_cb->cluster_members.size(),
-                msg->info.takeover_request);
-        delete[] msg->info.takeover_request;
+                takeover_request);
 
         if (state == Consensus::TakeoverState::ACCEPTED) {
           LOG_NO("Accepted takeover request");
-- 
2.7.4



_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to