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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel