[devel] [PATCH 1/1] imm: coredump when importing object having SaAnyT type value [#2988]

2018-12-18 Thread Vu Minh Nguyen
With SaAnyT value, imm import passed wrong memory pointer to free().
---
 src/imm/tools/imm_import.cc | 16 ++--
 1 file changed, 2 insertions(+), 14 deletions(-)

diff --git a/src/imm/tools/imm_import.cc b/src/imm/tools/imm_import.cc
index ba5023b17..32a3f5424 100644
--- a/src/imm/tools/imm_import.cc
+++ b/src/imm/tools/imm_import.cc
@@ -345,13 +345,7 @@ static void free_parserState(ParserState *state) {
 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]));
-} else if (it->attrValueType == SA_IMM_ATTR_SANAMET) {
-  osaf_extended_name_free((SaNameT *)it->attrValues[i]);
-}
-free(it->attrValues[i]);
+free_attr_value(it->attrValueType, it->attrValues[i]);
   }
   free(it->attrValues);
 }
@@ -833,13 +827,7 @@ 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]));
-  } else if (it->attrValueType == SA_IMM_ATTR_SANAMET) {
-osaf_extended_name_free((SaNameT *)it->attrValues[i]);
-  }
-  free(it->attrValues[i]);
+  free_attr_value(it->attrValueType, it->attrValues[i]);
 }
 free(it->attrValues);
   }
-- 
2.19.2



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


[devel] [PATCH 1/1] imm: coredump when importing object having SaAnyT type value [#2988]

2018-12-18 Thread Vu Minh Nguyen
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
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel