osaf/libs/agents/saf/amfa/ava_api.c | 28 ++++++++++++++++++++++------ 1 files changed, 22 insertions(+), 6 deletions(-)
Amf is returning SA_AIS_ERR_INVALID_PARAM for SA_AMF_PM_ABNORMAL_END and its combination with other SaAmfPmErrorsT flags. This is incorrect behaviour because SA_AMF_PM_ABNORMAL_END and its combination with other SaAmfPmErrorsT flags are valid input to APIs saAmfPmStart and saAmfPmStop. Since these combinations feature is not supported in Amf as of now, so, Amf should return SA_AIS_ERR_NOT_SUPPORTED for such combinations. The fix provides the same. diff --git a/osaf/libs/agents/saf/amfa/ava_api.c b/osaf/libs/agents/saf/amfa/ava_api.c --- a/osaf/libs/agents/saf/amfa/ava_api.c +++ b/osaf/libs/agents/saf/amfa/ava_api.c @@ -953,9 +953,17 @@ SaAisErrorT saAmfPmStart(SaAmfHandleT hd /* input validation of pmError */ if (pmErr != SA_AMF_PM_NON_ZERO_EXIT && pmErr != SA_AMF_PM_ZERO_EXIT && - pmErr != (SA_AMF_PM_NON_ZERO_EXIT | SA_AMF_PM_ZERO_EXIT)) { - TRACE_LEAVE2("Incorrect argument specified for SaAmfPmErrorsT "); - return SA_AIS_ERR_INVALID_PARAM; + pmErr != (SA_AMF_PM_NON_ZERO_EXIT | SA_AMF_PM_ZERO_EXIT)) { + if ((pmErr == SA_AMF_PM_ABNORMAL_END) || + (pmErr == (SA_AMF_PM_NON_ZERO_EXIT | SA_AMF_PM_ABNORMAL_END)) || + (pmErr == (SA_AMF_PM_ZERO_EXIT | SA_AMF_PM_ABNORMAL_END)) || + (pmErr == (SA_AMF_PM_ZERO_EXIT | SA_AMF_PM_NON_ZERO_EXIT | SA_AMF_PM_ABNORMAL_END))) { + TRACE_LEAVE2("Unsupported argument specified for SaAmfPmErrorsT "); + return SA_AIS_ERR_NOT_SUPPORTED; + } else { + TRACE_LEAVE2("Incorrect argument specified for SaAmfPmErrorsT "); + return SA_AIS_ERR_INVALID_PARAM; + } } /* input validation of Recomended recovery */ @@ -1064,9 +1072,17 @@ SaAisErrorT saAmfPmStop(SaAmfHandleT hdl /* input validation of pmError */ if (pmErr != SA_AMF_PM_NON_ZERO_EXIT && pmErr != SA_AMF_PM_ZERO_EXIT && - pmErr != (SA_AMF_PM_NON_ZERO_EXIT | SA_AMF_PM_ZERO_EXIT)) { - TRACE_LEAVE2("Incorrect argument specified for SaAmfPmErrorsT"); - return SA_AIS_ERR_INVALID_PARAM; + pmErr != (SA_AMF_PM_NON_ZERO_EXIT | SA_AMF_PM_ZERO_EXIT)) { + if ((pmErr == SA_AMF_PM_ABNORMAL_END) || + (pmErr == (SA_AMF_PM_NON_ZERO_EXIT | SA_AMF_PM_ABNORMAL_END)) || + (pmErr == (SA_AMF_PM_ZERO_EXIT | SA_AMF_PM_ABNORMAL_END)) || + (pmErr == (SA_AMF_PM_ZERO_EXIT | SA_AMF_PM_NON_ZERO_EXIT | SA_AMF_PM_ABNORMAL_END))) { + TRACE_LEAVE2("Unsupported argument specified for SaAmfPmErrorsT "); + return SA_AIS_ERR_NOT_SUPPORTED; + } else { + TRACE_LEAVE2("Incorrect argument specified for SaAmfPmErrorsT"); + return SA_AIS_ERR_INVALID_PARAM; + } } /* input validation of Process ID */ ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel