ack, code review only/Thanks HansN On 12/24/2015 07:33 AM, praveen.malv...@oracle.com wrote: > osaf/services/saf/amf/amfd/comptype.cc | 83 > +++++++++++++++++++++++++-------- > 1 files changed, 63 insertions(+), 20 deletions(-) > > > AMFD crashes for following commands: > immcfg -a saAmfNumMaxInstantiateWithoutDelay= > safRdn=compGlobalAttributes,safApp=safAmfService > immcfg -a saAmfNumMaxInstantiateWithDelay= > safRdn=compGlobalAttributes,safApp=safAmfService > immcfg -a saAmfNumMaxAmStopAttempts= > safRdn=compGlobalAttributes,safApp=safAmfService > immcfg -a saAmfNumMaxAmStartAttempts= > safRdn=compGlobalAttributes,safApp=safAmfService > immcfg -a saAmfDelayBetweenInstantiateAttempts= > safRdn=compGlobalAttributes,safApp=safAmfService > > Patch fixes the problem by restoring the default values as per spec. > > diff --git a/osaf/services/saf/amf/amfd/comptype.cc > b/osaf/services/saf/amf/amfd/comptype.cc > --- a/osaf/services/saf/amf/amfd/comptype.cc > +++ b/osaf/services/saf/amf/amfd/comptype.cc > @@ -794,46 +794,89 @@ static void avd_compglobalattrs_ccb_appl > { > int i = 0; > const SaImmAttrModificationT_2 *attrMod; > + bool value_is_deleted; > > TRACE_ENTER2("CCB ID %llu, '%s'", opdata->ccbId, > opdata->objectName.value); > > switch (opdata->operationType) { > case CCBUTIL_MODIFY: > while ((attrMod = opdata->param.modify.attrMods[i++]) != > nullptr) { > + void *value = nullptr; > + > + if ((attrMod->modType == SA_IMM_ATTR_VALUES_DELETE) || > + (attrMod->modAttr.attrValues == > nullptr)) { > + /* Attribute value is deleted, revert to > default value */ > + value_is_deleted = true; > + } else { > + /* Attribute value is modified */ > + value_is_deleted = false; > + value = attrMod->modAttr.attrValues[0]; > + } > + > if (!strcmp("saAmfNumMaxInstantiateWithoutDelay", > attrMod->modAttr.attrName)) { > + SaUint32T old_value = > avd_comp_global_attrs.saAmfNumMaxInstantiateWithoutDelay; > + if (value_is_deleted == true) { > + //Default value as per Section 8.14 > (B0401). > + > avd_comp_global_attrs.saAmfNumMaxInstantiateWithoutDelay = 2; > + } else { > + > avd_comp_global_attrs.saAmfNumMaxInstantiateWithoutDelay = > + *((SaUint32T *)value); > + } > TRACE("saAmfNumMaxInstantiateWithoutDelay > modified from '%u' to '%u'", > - > avd_comp_global_attrs.saAmfNumMaxInstantiateWithoutDelay, > - *((SaUint32T > *)attrMod->modAttr.attrValues[0])); > - > avd_comp_global_attrs.saAmfNumMaxInstantiateWithoutDelay = > - *((SaUint32T > *)attrMod->modAttr.attrValues[0]); > + old_value, > + > avd_comp_global_attrs.saAmfNumMaxInstantiateWithoutDelay); > } > if (!strcmp("saAmfNumMaxInstantiateWithDelay", > attrMod->modAttr.attrName)) { > + SaUint32T old_value = > avd_comp_global_attrs.saAmfNumMaxInstantiateWithDelay; > + if (value_is_deleted == true) { > + //Default value as per Section 8.14 > (B0401). > + > avd_comp_global_attrs.saAmfNumMaxInstantiateWithDelay = 0; > + } else { > + > avd_comp_global_attrs.saAmfNumMaxInstantiateWithDelay = > + *((SaUint32T *)value); > + } > TRACE("saAmfNumMaxInstantiateWithDelay modified > from '%u' to '%u'", > - > avd_comp_global_attrs.saAmfNumMaxInstantiateWithDelay, > - *((SaUint32T > *)attrMod->modAttr.attrValues[0])); > - > avd_comp_global_attrs.saAmfNumMaxInstantiateWithDelay = > - *((SaUint32T > *)attrMod->modAttr.attrValues[0]); > + old_value, > + > avd_comp_global_attrs.saAmfNumMaxInstantiateWithDelay); > } > if (!strcmp("saAmfNumMaxAmStartAttempts", > attrMod->modAttr.attrName)) { > + SaUint32T old_value = > avd_comp_global_attrs.saAmfNumMaxAmStartAttempts; > + if (value_is_deleted == true) { > + //Default value as per Section 8.14 > (B0401). > + > avd_comp_global_attrs.saAmfNumMaxAmStartAttempts = 2; > + } else { > + > avd_comp_global_attrs.saAmfNumMaxAmStartAttempts = > + *((SaUint32T *)value); > + } > TRACE("saAmfNumMaxAmStartAttempts modified from > '%u' to '%u'", > - > avd_comp_global_attrs.saAmfNumMaxAmStartAttempts, > - *((SaUint32T > *)attrMod->modAttr.attrValues[0])); > - > avd_comp_global_attrs.saAmfNumMaxAmStartAttempts = > - *((SaUint32T > *)attrMod->modAttr.attrValues[0]); > + old_value, > + > avd_comp_global_attrs.saAmfNumMaxAmStartAttempts); > } > if (!strcmp("saAmfNumMaxAmStopAttempts", > attrMod->modAttr.attrName)) { > + SaUint32T old_value = > avd_comp_global_attrs.saAmfNumMaxAmStartAttempts; > + if (value_is_deleted == true) { > + //Default value as per Section 8.14 > (B0401). > + > avd_comp_global_attrs.saAmfNumMaxAmStopAttempts = 2; > + } else { > + > avd_comp_global_attrs.saAmfNumMaxAmStopAttempts = > + *((SaUint32T *)value); > + } > TRACE("saAmfNumMaxAmStopAttempts modified from > '%u' to '%u'", > - > avd_comp_global_attrs.saAmfNumMaxAmStopAttempts, > - *((SaUint32T > *)attrMod->modAttr.attrValues[0])); > - avd_comp_global_attrs.saAmfNumMaxAmStopAttempts > = > - *((SaUint32T > *)attrMod->modAttr.attrValues[0]); > + old_value, > + > avd_comp_global_attrs.saAmfNumMaxAmStopAttempts); > } > if (!strcmp("saAmfDelayBetweenInstantiateAttempts", > attrMod->modAttr.attrName)) { > + SaTimeT old_value = > avd_comp_global_attrs.saAmfDelayBetweenInstantiateAttempts; > + if (value_is_deleted == true) { > + //Default value as per Section 8.14 > (B0401). > + > avd_comp_global_attrs.saAmfDelayBetweenInstantiateAttempts = 0; > + } else { > + > avd_comp_global_attrs.saAmfDelayBetweenInstantiateAttempts = > + *((SaTimeT*)value); > + } > TRACE("saAmfDelayBetweenInstantiateAttempts > modified from '%llu' to '%llu'", > - > avd_comp_global_attrs.saAmfDelayBetweenInstantiateAttempts, > - *((SaTimeT > *)attrMod->modAttr.attrValues[0])); > - > avd_comp_global_attrs.saAmfDelayBetweenInstantiateAttempts = > - *((SaTimeT > *)attrMod->modAttr.attrValues[0]); > + old_value, > + > avd_comp_global_attrs.saAmfDelayBetweenInstantiateAttempts); > } > } > break;
------------------------------------------------------------------------------ Site24x7 APM Insight: Get Deep Visibility into Application Performance APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month Monitor end-to-end web transactions and take corrective actions now Troubleshoot faster and improve end-user experience. Signup Now! http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel