During controller goes up, it creats config object from IMM.
In case the object was deleted but comming up amfd still
receives ccb object delete callback. And it validates and
crash due to access to null pointer.
---
 src/amf/amfd/imm.cc | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/amf/amfd/imm.cc b/src/amf/amfd/imm.cc
index d917b0d..8b84432 100644
--- a/src/amf/amfd/imm.cc
+++ b/src/amf/amfd/imm.cc
@@ -1044,17 +1044,28 @@ static SaAisErrorT ccb_object_delete_cb(SaImmOiHandleT 
immoi_handle,
                                         const SaNameT *object_name) {
   SaAisErrorT rc = SA_AIS_OK;
   struct CcbUtilCcbData *ccb_util_ccb_data;
-  char err_str[] = "Ccb delete failed, m/w role switch going on";
+  char *err_str[2] =
+       {const_cast<char*>("Ccb delete failed, m/w role switch going on"),
+        const_cast<char*>("Ccb delete failed, node is stb and not cold sync")};
 
   TRACE_ENTER2("CCB ID %llu, %s", ccb_id,
                osaf_extended_name_borrow(object_name));
 
   /* Reject adm ops if we are in the middle of a role switch. */
-  if (avd_cb->swap_switch == SA_TRUE) {
+  // Or if data has not been synced yet
+  if ((avd_cb->swap_switch == SA_TRUE) ||
+      ((avd_cb->stby_sync_state != AVD_STBY_IN_SYNC) &&
+      (avd_cb->avail_state_avd != SA_AMF_HA_ACTIVE))) {
     rc = SA_AIS_ERR_TRY_AGAIN;
-    saflog(LOG_NOTICE, amfSvcUsrName, "CCB %llu validation error: %s", ccb_id,
-           err_str);
-    (void)saImmOiCcbSetErrorString(avd_cb->immOiHandle, ccb_id, err_str);
+    if (avd_cb->swap_switch == SA_TRUE) {
+      saflog(LOG_NOTICE, amfSvcUsrName, "CCB %llu validation error: %s", 
ccb_id,
+           err_str[0]);
+      (void)saImmOiCcbSetErrorString(avd_cb->immOiHandle, ccb_id, err_str[0]);
+    } else {
+      saflog(LOG_NOTICE, amfSvcUsrName, "CCB %llu validation error: %s", 
ccb_id,
+           err_str[1]);
+      (void)saImmOiCcbSetErrorString(avd_cb->immOiHandle, ccb_id, err_str[1]);
+    }
     goto done;
   }
 
-- 
2.7.4



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

Reply via email to