osaf/libs/agents/saf/imma/imma_db.c     |  5 ++++-
 osaf/libs/agents/saf/imma/imma_om_api.c |  3 ++-
 2 files changed, 6 insertions(+), 2 deletions(-)


The patch provides the fix for fixing memory leak when search handles are 
closed before saImmOmSearchNext function reach the last object in the search 
result.

diff --git a/osaf/libs/agents/saf/imma/imma_db.c 
b/osaf/libs/agents/saf/imma/imma_db.c
--- a/osaf/libs/agents/saf/imma/imma_db.c
+++ b/osaf/libs/agents/saf/imma/imma_db.c
@@ -1188,11 +1188,14 @@ uint32_t imma_search_node_delete(IMMA_CB
                for(i=0; i<search_node->searchBundle->resultSize; i++) {
                        
free(search_node->searchBundle->searchResult[i]->objectName.buf);
                        
immsv_free_attrvalues_list(search_node->searchBundle->searchResult[i]->attrValuesList);
+                       free(search_node->searchBundle->searchResult[i]);
                }
                free(search_node->searchBundle->searchResult);
                free(search_node->searchBundle);
                search_node->searchBundle = NULL;
-       } else if (!search_node->mSearchId && search_node->mLastAttributes) {
+       }
+
+       if (search_node->mLastAttributes) {
                imma_freeSearchAttrs(search_node->mLastAttributes);
                search_node->mLastAttributes = NULL;
        }
diff --git a/osaf/libs/agents/saf/imma/imma_om_api.c 
b/osaf/libs/agents/saf/imma/imma_om_api.c
--- a/osaf/libs/agents/saf/imma/imma_om_api.c
+++ b/osaf/libs/agents/saf/imma/imma_om_api.c
@@ -6903,7 +6903,7 @@ SaAisErrorT saImmOmSearchFinalize(SaImmS
        if (search_node->mLastAttributes) {
                TRACE("Freeing last result");
                imma_freeSearchAttrs((SaImmAttrValuesT_2 
**)search_node->mLastAttributes);
-               search_node->mLastAttributes = 0;
+               search_node->mLastAttributes = NULL;
        }
 
        if (search_node->searchBundle) {
@@ -6912,6 +6912,7 @@ SaAisErrorT saImmOmSearchFinalize(SaImmS
                for(i=0; i<search_node->searchBundle->resultSize; i++) {
                        
free(search_node->searchBundle->searchResult[i]->objectName.buf);
                        
immsv_free_attrvalues_list(search_node->searchBundle->searchResult[i]->attrValuesList);
+                       free(search_node->searchBundle->searchResult[i]);
                }
                free(search_node->searchBundle->searchResult);
                free(search_node->searchBundle);

------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to