osaf/tools/safimm/immcfg/imm_import.cc | 16 +++++++++-------
1 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/osaf/tools/safimm/immcfg/imm_import.cc
b/osaf/tools/safimm/immcfg/imm_import.cc
--- a/osaf/tools/safimm/immcfg/imm_import.cc
+++ b/osaf/tools/safimm/immcfg/imm_import.cc
@@ -284,6 +284,9 @@ static void free_parserState(ParserState
state->classAttrTypeMap.clear();
state->adminOwnerSetSet.clear();
+ free(state->attrDefaultValueBuffer);
+ state->attrDefaultValueBuffer = NULL;
+
{
std::list<SaImmAttrDefinitionT_2>::iterator it;
it = state->attrDefinitions.begin();
@@ -2246,6 +2249,7 @@ static void addClassAttributeDefinition(
LOG_ER("Failed to parse default value of attribute %s",
state->attrName);
stopParser(state);
state->parsingStatus = 1;
+ return;
}
} else {
attrDefinition.attrDefaultValue = NULL;
@@ -2281,31 +2285,26 @@ static int charsToValueHelper(SaImmAttrV
*value = malloc(sizeof(SaInt32T));
*((SaInt32T*)*value) = (SaInt32T)strtol(str, &endMark, 0);
rc = *endMark != 0;
- if(rc) free(*value);
break;
case SA_IMM_ATTR_SAUINT32T:
*value = malloc(sizeof(SaUint32T));
*((SaUint32T*)*value) = (SaUint32T)strtoul(str, &endMark, 0);
rc = *endMark != 0;
- if(rc) free(*value);
break;
case SA_IMM_ATTR_SAINT64T:
*value = malloc(sizeof(SaInt64T));
*((SaInt64T*)*value) = (SaInt64T)strtoll(str, &endMark, 0);
rc = *endMark != 0;
- if(rc) free(*value);
break;
case SA_IMM_ATTR_SAUINT64T:
*value = malloc(sizeof(SaUint64T));
*((SaUint64T*)*value) = (SaUint64T)strtoull(str, &endMark, 0);
rc = *endMark != 0;
- if(rc) free(*value);
break;
case SA_IMM_ATTR_SATIMET: // Int64T
*value = malloc(sizeof(SaInt64T));
*((SaTimeT*)*value) = (SaTimeT)strtoll(str, &endMark, 0);
rc = *endMark != 0;
- if(rc) free(*value);
break;
case SA_IMM_ATTR_SANAMET:
len = strlen(str);
@@ -2322,13 +2321,11 @@ static int charsToValueHelper(SaImmAttrV
*value = malloc(sizeof(SaFloatT));
*((SaFloatT*)*value) = (SaFloatT)strtof(str, &endMark);
rc = *endMark != 0;
- if(rc) free(*value);
break;
case SA_IMM_ATTR_SADOUBLET:
*value = malloc(sizeof(SaDoubleT));
*((SaDoubleT*)*value) = (SaDoubleT)strtod(str, &endMark);
rc = *endMark != 0;
- if(rc) free(*value);
break;
case SA_IMM_ATTR_SASTRINGT:
len = strlen(str);
@@ -2365,6 +2362,11 @@ static int charsToValueHelper(SaImmAttrV
return -1;
}
+ if(rc) {
+ free(*value);
+ *value = NULL;
+ }
+
return rc;
}
------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today.
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel