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

Reply via email to