PBE will be restarted and will never come up if user requests
creating IMM class object class which is reserved by PBE.

This patch adds code to reject such request with SA_AIS_ERR_INVALID_PARAM.
---
 src/imm/agent/imma_om_api.cc | 27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/src/imm/agent/imma_om_api.cc b/src/imm/agent/imma_om_api.cc
index 7155799..415183c 100644
--- a/src/imm/agent/imma_om_api.cc
+++ b/src/imm/agent/imma_om_api.cc
@@ -55,7 +55,6 @@ static bool immOmIsLoader = false;
 static const char *sysaClName = SA_IMM_ATTR_CLASS_NAME;
 static const char *sysaAdmName = SA_IMM_ATTR_ADMIN_OWNER_NAME;
 static const char *sysaImplName = SA_IMM_ATTR_IMPLEMENTER_NAME;
-
 static int imma_om_resurrect(IMMA_CB *cb, IMMA_CLIENT_NODE *cl_node,
                              bool *locked);
 static SaAisErrorT imma_finalizeCcb(SaImmCcbHandleT ccbHandle,
@@ -4795,6 +4794,27 @@ SaAisErrorT saImmOmAdminOperationContinuationClear_o3(
   return SA_AIS_ERR_NOT_SUPPORTED;
 }
 
+static bool is_reserved_class(const char* name) {
+  const char* system_class[] = {
+    "attr_def",
+    "attr_dflt",
+    "ccb_commits",
+    "classes",
+    "objects",
+    "objects_blob_multi",
+    "objects_int_multi",
+    "objects_real_multi",
+    "objects_text_multi",
+    "pbe_rep_version"
+  };
+
+  size_t len = sizeof(system_class)/sizeof(system_class[0]);
+  for (size_t i = 0; i < len; i++) {
+    if (!strcmp(name, system_class[i])) return true;
+  }
+  return false;
+}
+
 SaAisErrorT saImmOmClassCreate_2(
     SaImmHandleT immHandle, const SaImmClassNameT className,
     SaImmClassCategoryT classCategory,
@@ -4823,6 +4843,11 @@ SaAisErrorT saImmOmClassCreate_2(
     return SA_AIS_ERR_INVALID_PARAM;
   }
 
+  if (is_reserved_class(className)) {
+    TRACE("The class name `%s` is reserved!", className);
+    return SA_AIS_ERR_INVALID_PARAM;
+  }
+
   attr = attrDefinitions[0];
   for (i = 0; attr != 0; attr = attrDefinitions[++i]) {
     if (attr->attrName == NULL) {
-- 
1.9.1


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to