osaf/libs/agents/saf/imma/imma_proc.c     |   7 ++++---
 osaf/services/saf/immsv/immd/immd_evt.c   |  16 ----------------
 osaf/services/saf/immsv/immnd/immnd_evt.c |  12 +++++-------
 3 files changed, 9 insertions(+), 26 deletions(-)


In some places memory is allocated by ncs_enc_init_space, but is not freed.
The fix provides the patch to the memory leaks.

diff --git a/osaf/libs/agents/saf/imma/imma_proc.c 
b/osaf/libs/agents/saf/imma/imma_proc.c
--- a/osaf/libs/agents/saf/imma/imma_proc.c
+++ b/osaf/libs/agents/saf/imma/imma_proc.c
@@ -3202,9 +3202,9 @@ SaAisErrorT imma_evt_fake_evs(IMMA_CB *c
        /*Pack the message for sending over multiple hops. */
 
        if (ncs_enc_init_space(&uba) != NCSCC_RC_SUCCESS) {
-               uba.start = NULL;
                TRACE_2("ERR_LIBRARY: Failed init ubaid");
-               return SA_AIS_ERR_LIBRARY;
+               rc = SA_AIS_ERR_LIBRARY;
+               goto fail;
        }
 
        /* Encode non-flat since we broadcast to unknown receivers. */
@@ -3212,7 +3212,8 @@ SaAisErrorT imma_evt_fake_evs(IMMA_CB *c
 
        if (rc != NCSCC_RC_SUCCESS) {
                TRACE_2("ERR_LIBRARY: Failed to pre-pack");
-               return SA_AIS_ERR_LIBRARY;
+               rc = SA_AIS_ERR_LIBRARY;
+               goto fail;
        }
 
        int32_t size = uba.ttl;
diff --git a/osaf/services/saf/immsv/immd/immd_evt.c 
b/osaf/services/saf/immsv/immd/immd_evt.c
--- a/osaf/services/saf/immsv/immd/immd_evt.c
+++ b/osaf/services/saf/immsv/immd/immd_evt.c
@@ -1677,14 +1677,12 @@ static uint32_t immd_evt_proc_adminit_re
        proc_rc = ncs_enc_init_space(&uba);
        if (proc_rc != NCSCC_RC_SUCCESS) {
                LOG_WA("Failed init ubaid");
-               uba.start = NULL;
                goto fail;
        }
 
        proc_rc = immsv_evt_enc(&fevs_evt, &uba);
        if (proc_rc != NCSCC_RC_SUCCESS) {
                LOG_WA("Failed encode fevs");
-               uba.start = NULL;
                goto fail;
        }
 
@@ -1792,14 +1790,12 @@ static uint32_t immd_evt_proc_impl_set_r
        proc_rc = ncs_enc_init_space(&uba);
        if (proc_rc != NCSCC_RC_SUCCESS) {
                LOG_WA("Failed init ubaid");
-               uba.start = NULL;
                goto fail;
        }
 
        proc_rc = immsv_evt_enc(&fevs_evt, &uba);
        if (proc_rc != NCSCC_RC_SUCCESS) {
                LOG_WA("Failed encode fevs");
-               uba.start = NULL;
                goto fail;
        }
 
@@ -1910,14 +1906,12 @@ static uint32_t immd_evt_proc_sync_fevs_
        proc_rc = ncs_enc_init_space(&uba);
        if (proc_rc != NCSCC_RC_SUCCESS) {
                LOG_WA("Failed init ubaid");
-               uba.start = NULL;
                goto fail;
        }
 
        proc_rc = immsv_evt_enc(&fevs_evt, &uba);
        if (proc_rc != NCSCC_RC_SUCCESS) {
                LOG_WA("Failed encode fevs");
-               uba.start = NULL;
                goto fail;
        }
 
@@ -1983,14 +1977,12 @@ static uint32_t immd_evt_proc_discard_im
        proc_rc = ncs_enc_init_space(&uba);
        if (proc_rc != NCSCC_RC_SUCCESS) {
                LOG_WA("Failed init ubaid");
-               uba.start = NULL;
                goto fail;
        }
 
        proc_rc = immsv_evt_enc(&fevs_evt, &uba);
        if (proc_rc != NCSCC_RC_SUCCESS) {
                LOG_WA("Failed encode fevs");
-               uba.start = NULL;
                goto fail;
        }
 
@@ -2054,14 +2046,12 @@ static uint32_t immd_evt_proc_abort_ccb(
        proc_rc = ncs_enc_init_space(&uba);
        if (proc_rc != NCSCC_RC_SUCCESS) {
                LOG_WA("Failed init ubaid");
-               uba.start = NULL;
                goto fail;
        }
 
        proc_rc = immsv_evt_enc(&fevs_evt, &uba);
        if (proc_rc != NCSCC_RC_SUCCESS) {
                LOG_WA("Failed encode fevs");
-               uba.start = NULL;
                goto fail;
        }
 
@@ -2125,14 +2115,12 @@ static uint32_t immd_evt_proc_admo_hard_
        proc_rc = ncs_enc_init_space(&uba);
        if (proc_rc != NCSCC_RC_SUCCESS) {
                LOG_WA("Failed init ubaid");
-               uba.start = NULL;
                goto fail;
        }
 
        proc_rc = immsv_evt_enc(&fevs_evt, &uba);
        if (proc_rc != NCSCC_RC_SUCCESS) {
                LOG_WA("Failed encode fevs");
-               uba.start = NULL;
                goto fail;
        }
 
@@ -2226,13 +2214,11 @@ static uint32_t immd_evt_proc_ccbinit_re
        proc_rc = ncs_enc_init_space(&uba);
        if (proc_rc != NCSCC_RC_SUCCESS) {
                LOG_WA("Failed init ubaid");
-               uba.start = NULL;
                goto fail;
        }
        proc_rc = immsv_evt_enc(&fevs_evt, &uba);
        if (proc_rc != NCSCC_RC_SUCCESS) {
                LOG_WA("Failed encode fevs");
-               uba.start = NULL;
                goto fail;
        }
 
@@ -2315,14 +2301,12 @@ static uint32_t immd_evt_proc_rt_modify_
        proc_rc = ncs_enc_init_space(&uba);
        if (proc_rc != NCSCC_RC_SUCCESS) {
                LOG_WA("Failed init ubaid");
-               uba.start = NULL;
                goto fail;
        }
 
        proc_rc = immsv_evt_enc(&fevs_evt, &uba);
        if (proc_rc != NCSCC_RC_SUCCESS) {
                LOG_WA("Failed encode fevs");
-               uba.start = NULL;
                goto fail;
        }
 
diff --git a/osaf/services/saf/immsv/immnd/immnd_evt.c 
b/osaf/services/saf/immsv/immnd/immnd_evt.c
--- a/osaf/services/saf/immsv/immnd/immnd_evt.c
+++ b/osaf/services/saf/immsv/immnd/immnd_evt.c
@@ -3114,14 +3114,12 @@ static SaAisErrorT immnd_fevs_local_chec
        /*Unpack the embedded message */
        if (ncs_enc_init_space_pp(&uba, 0, 0) != NCSCC_RC_SUCCESS) {
                LOG_ER("Failed init ubaid");
-               uba.start = NULL;
                error = SA_AIS_ERR_NO_RESOURCES;
                goto unpack_failure;
        }
 
        if (ncs_encode_n_octets_in_uba(&uba, (uint8_t *)msg->buf, msg->size) != 
NCSCC_RC_SUCCESS) {
                LOG_ER("Failed buffer copy");
-               uba.start = NULL;
                error = SA_AIS_ERR_NO_RESOURCES;
                goto unpack_failure;
        }
@@ -5467,7 +5465,6 @@ static uint32_t immnd_evt_proc_sync_fina
                        proc_rc = ncs_enc_init_space(&uba);
                        if (proc_rc != NCSCC_RC_SUCCESS) {
                                TRACE_2("Failed init ubaid");
-                               uba.start = NULL;
                                err = SA_AIS_ERR_NO_RESOURCES;
                                goto fail;
                        }
@@ -5475,7 +5472,6 @@ static uint32_t immnd_evt_proc_sync_fina
                        proc_rc = immsv_evt_enc(&send_evt, &uba);
                        if (proc_rc != NCSCC_RC_SUCCESS) {
                                TRACE_2("Failed encode fevs");
-                               uba.start = NULL;
                                err = SA_AIS_ERR_NO_RESOURCES;
                                goto fail;
                        }
@@ -5499,7 +5495,6 @@ static uint32_t immnd_evt_proc_sync_fina
                        proc_rc = immnd_evt_proc_fevs_forward(cb, 
&send_evt.info.immnd, NULL, SA_TRUE, SA_TRUE);
                        if (proc_rc != NCSCC_RC_SUCCESS) {
                                TRACE_2("Failed send fevs message");    /*Error 
already logged in fevs_fo */
-                               uba.start = NULL;
                                err = SA_AIS_ERR_NO_RESOURCES;
                        }
 
@@ -5520,6 +5515,11 @@ static uint32_t immnd_evt_proc_sync_fina
        if (immnd_mds_send_rsp(cb, sinfo, &send_evt) != NCSCC_RC_SUCCESS) {
                LOG_ER("Send response over MDS failed");
        }
+
+       if (uba.start) {
+               m_MMGR_FREE_BUFR_LIST(uba.start);
+       }
+
        TRACE_LEAVE();
        return proc_rc;
 }
@@ -7812,14 +7812,12 @@ immnd_evt_proc_fevs_dispatch(IMMND_CB *c
        /*Unpack the embedded message */
        if (ncs_enc_init_space_pp(&uba, 0, 0) != NCSCC_RC_SUCCESS) {
                LOG_ER("Failed init ubaid");
-               uba.start = NULL;
                error = SA_AIS_ERR_NO_RESOURCES;
                goto unpack_failure;
        }
 
        if (ncs_encode_n_octets_in_uba(&uba, (uint8_t *)msg->buf, msg->size) != 
NCSCC_RC_SUCCESS) {
                LOG_ER("Failed buffer copy");
-               uba.start = NULL;
                error = SA_AIS_ERR_NO_RESOURCES;
                goto unpack_failure;
        }

------------------------------------------------------------------------------
Monitor Your Dynamic Infrastructure at Any Scale With Datadog!
Get real-time metrics from all of your servers, apps and tools
in one place.
SourceForge users - Click here to start your Free Trial of Datadog now!
http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to