With SaAnyT value, imm import passed wrong memory pointer to free().
---
 src/imm/tools/imm_import.cc | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/imm/tools/imm_import.cc b/src/imm/tools/imm_import.cc
index ba5023b17..46dd32072 100644
--- a/src/imm/tools/imm_import.cc
+++ b/src/imm/tools/imm_import.cc
@@ -833,9 +833,10 @@ done:
   for (it = state->attrValues.begin(); it != state->attrValues.end(); ++it) {
     free(it->attrName);
     for (i = 0; it->attrValues[i]; i++) {
-      if (it->attrValueType == SA_IMM_ATTR_SASTRINGT ||
-          it->attrValueType == SA_IMM_ATTR_SAANYT) {
-        free(*(void **)(it->attrValues[i]));
+      if (it->attrValueType == SA_IMM_ATTR_SASTRINGT) {
+        free(*(SaStringT*)(it->attrValues[i]));
+      } else if (it->attrValueType == SA_IMM_ATTR_SAANYT) {
+        free(((SaAnyT*)it->attrValues[i])->bufferAddr);
       } else if (it->attrValueType == SA_IMM_ATTR_SANAMET) {
         osaf_extended_name_free((SaNameT *)it->attrValues[i]);
       }
-- 
2.19.2



_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to