Hi VuMinh,

Ack for the patch

Regards,
Ravi

-----Original Message-----
From: Vu Minh Nguyen [mailto:vu.m.ngu...@dektech.com.au] 
Sent: Thursday, January 25, 2018 5:22 PM
To: zoran.milinko...@ericsson.com; ravisekhar.ko...@oracle.com
Cc: opensaf-devel@lists.sourceforge.net; Vu Minh Nguyen 
<vu.m.ngu...@dektech.com.au>
Subject: [PATCH 1/1] imm: correct data size mismatches in pbe code [#2770]

Object ID and Class ID are `unsigned int` data type, but they are not used 
consistently through the codes. Some places use `int` type.

This patch corrects these places.
---
 src/imm/common/immpbe_dump.cc    | 49 ++++++++++++++++++++--------------------
 src/imm/common/immpbe_dump.h     |  6 ++---
 src/imm/immpbed/immpbe_daemon.cc |  5 ----
 src/imm/tools/imm_dumper.cc      |  5 ++--
 4 files changed, 31 insertions(+), 34 deletions(-)

diff --git a/src/imm/common/immpbe_dump.cc b/src/imm/common/immpbe_dump.cc 
index 11af674..9f21428 100644
--- a/src/imm/common/immpbe_dump.cc
+++ b/src/imm/common/immpbe_dump.cc
@@ -350,7 +350,7 @@ static void typeToPBE(SaImmAttrDefinitionT_2 *p, void 
*dbHandle,  }
 
 static void valuesToPBE(const SaImmAttrValuesT_2 *p, SaImmAttrFlagsT attrFlags,
-                        int objId, void *db_handle) {
+                        unsigned objId, void *db_handle) {
   int rc = 0;
   bool badfile = false;
   sqlite3 *dbHandle = (sqlite3 *)db_handle; @@ -1369,9 +1369,9 @@ void 
objectModifyDiscardAllValuesOfAttrToPBE(
 
   int rc = 0;
   char *zErr = NULL;
-  int object_id;
+  unsigned object_id;
   std::string object_id_str;
-  int class_id;
+  unsigned class_id;
   SaImmValueTypeT attr_type;
   SaImmAttrFlagsT attr_flags;
   unsigned int rowsModified = 0;
@@ -1591,8 +1591,8 @@ void objectModifyDiscardMatchingValuesOfAttrToPBE(
 
   int rc = 0;
   std::string object_id_str;
-  int object_id;
-  int class_id;
+  unsigned object_id;
+  unsigned class_id;
   SaImmValueTypeT attr_type;
   SaImmAttrFlagsT attr_flags;
   unsigned int rowsModified = 0;
@@ -1847,8 +1847,8 @@ void objectModifyAddValuesOfAttrToPBE(void *db_handle, 
std::string objName,
 
   int rc = 0;
   std::string object_id_str;
-  int object_id;
-  int class_id;
+  unsigned object_id;
+  unsigned class_id;
   SaImmValueTypeT attr_type;
   SaImmAttrFlagsT attr_flags;
   unsigned int rowsModified = 0;
@@ -2105,7 +2105,7 @@ bailout:
   exit(1);
 }
 
-int dumpInstancesOfClassToPBE(SaImmHandleT immHandle, ClassMap *classIdMap,
+unsigned dumpInstancesOfClassToPBE(SaImmHandleT immHandle, ClassMap 
+*classIdMap,
                               std::string className, unsigned int *objIdCount,
                               void *db_handle) {
   unsigned int obj_count = 0;
@@ -2175,7 +2175,8 @@ int dumpInstancesOfClassToPBE(SaImmHandleT immHandle, 
ClassMap *classIdMap,
   return obj_count;
 bailout:
   sqlite3_close(dbHandle);
-  return (-1);
+  LOG_ER("dumpInstncesOfClassesToPBE failed. dbHandle is closed - 
+ exiting");  exit(1);
 }
 
 void objectDeleteToPBE(std::string objectNameString, void *db_handle) { @@ 
-2186,8 +2187,8 @@ void objectDeleteToPBE(std::string objectNameString, void 
*db_handle) {
   int rc = 0;
   char *zErr = NULL;
   std::string object_id_str;
-  int object_id;
-  int class_id;
+  unsigned object_id;
+  unsigned class_id;
   std::string class_name;
   bool badfile = false;
   TRACE_ENTER();
@@ -2561,7 +2562,7 @@ int verifyPbeState(SaImmHandleT immHandle, ClassMap 
*classIdMap,
   char *execErr = NULL;
   sqlite3 *dbHandle = (sqlite3 *)db_handle;
   std::string sqlQ("SELECT MAX(obj_id) FROM objects");
-  int obj_count = 0;
+  unsigned obj_count = 0;
   char **result = NULL;
   char *qErr = NULL;
   int nrows = 0;
@@ -2632,8 +2633,8 @@ bailout:
   return 0;
 }
 
-int dumpObjectsToPbe(SaImmHandleT immHandle, ClassMap *classIdMap,
-                     void *db_handle) {
+unsigned dumpObjectsToPbe(SaImmHandleT immHandle, ClassMap *classIdMap,
+                          void *db_handle) {
   int rc = 0;
   SaNameT root;
   SaImmSearchHandleT searchHandle;
@@ -2727,12 +2728,12 @@ int dumpObjectsToPbe(SaImmHandleT immHandle, ClassMap 
*classIdMap,
   return object_id; /* == number of dumped objects */
 bailout:
   sqlite3_close(dbHandle);
-  return (-1);
+  return (0);
 }
 
-int dumpObjectsToPbe(SaImmHandleT immHandle, ClassMap *classIdMap,
-                     void *db_handle,
-                     std::list<std::string> &selectedClassList) {
+unsigned dumpObjectsToPbe(SaImmHandleT immHandle, ClassMap *classIdMap,
+                          void *db_handle,
+                          std::list<std::string> &selectedClassList) {
   int rc = 0;
   SaNameT root;
   SaImmSearchHandleT searchHandle;
@@ -2837,7 +2838,7 @@ int dumpObjectsToPbe(SaImmHandleT immHandle, ClassMap 
*classIdMap,
 bailout:
   sqlite3_close(dbHandle);
   TRACE_LEAVE();
-  return (-1);
+  return (0);
 }
 
 SaAisErrorT pbeBeginTrans(void *db_handle) { @@ -3815,9 +3816,9 @@ unsigned 
int purgeInstancesOfClassToPBE(SaImmHandleT immHandle,
   return 0;
 }
 
-int dumpInstancesOfClassToPBE(SaImmHandleT immHandle, ClassMap* classIdMap,
-                              std::string className, unsigned int* objIdCount,
-                              void* db_handle) {
+unsigned dumpInstancesOfClassToPBE(SaImmHandleT immHandle, ClassMap* 
classIdMap,
+                                   std::string className, unsigned* objIdCount,
+                                   void* db_handle) {
   abort();
   return (-1);
 }
@@ -3838,13 +3839,13 @@ void deleteClassToPBE(std::string classNameString, 
void* db_handle,
   abort();
 }
 
-int dumpObjectsToPbe(SaImmHandleT immHandle, ClassMap* classIdMap,
+unsigned dumpObjectsToPbe(SaImmHandleT immHandle, ClassMap* classIdMap,
                      void* db_handle) {
   abort();
   return 0;
 }
 
-int dumpObjectsToPbe(SaImmHandleT immHandle, ClassMap* classIdMap,
+unsigned dumpObjectsToPbe(SaImmHandleT immHandle, ClassMap* classIdMap,
                      void* db_handle,
                      std::list<std::string>& selectedClassList) {
   abort();
diff --git a/src/imm/common/immpbe_dump.h b/src/imm/common/immpbe_dump.h index 
f44082f..a715e83 100644
--- a/src/imm/common/immpbe_dump.h
+++ b/src/imm/common/immpbe_dump.h
@@ -70,7 +70,7 @@ bool dumpClassesToPbe(SaImmHandleT immHandle, ClassMap* 
classIdMap,
 
 unsigned int purgeInstancesOfClassToPBE(SaImmHandleT immHandle,
                                         std::string className, void* 
db_handle); -int dumpInstancesOfClassToPBE(SaImmHandleT immHandle, ClassMap* 
classIdMap,
+unsigned dumpInstancesOfClassToPBE(SaImmHandleT immHandle, ClassMap* 
+classIdMap,
                               std::string className, unsigned int* objidCount,
                               void* db_handle);
 
@@ -83,9 +83,9 @@ void deleteClassToPBE(std::string classNameString, void* 
db_handle,  int verifyPbeState(SaImmHandleT immHandle, ClassMap* classIdMap,
                    void* db_handle);
 
-int dumpObjectsToPbe(SaImmHandleT immHandle, ClassMap* classIdMap,
+unsigned dumpObjectsToPbe(SaImmHandleT immHandle, ClassMap* classIdMap,
                      void* db_handle);
-int dumpObjectsToPbe(SaImmHandleT immHandle, ClassMap* classIdMap,
+unsigned dumpObjectsToPbe(SaImmHandleT immHandle, ClassMap* classIdMap,
                      void* db_handle,
                      std::list<std::string>& selectedClassList);  bool 
objectToPBE(std::string objectNameString, const SaImmAttrValuesT_2** attrs, 
diff --git a/src/imm/immpbed/immpbe_daemon.cc b/src/imm/immpbed/immpbe_daemon.cc
index eb03430..1d34087 100644
--- a/src/imm/immpbed/immpbe_daemon.cc
+++ b/src/imm/immpbed/immpbe_daemon.cc
@@ -611,11 +611,6 @@ static void saImmOiAdminOperationCallback(
         TRACE_5("sObjCount:%u", sObjCount);
         obj_count = dumpInstancesOfClassToPBE(pbeOmHandle, sClassIdMap,
                                               className, &sObjCount, 
sDbHandle);
-        if (obj_count < 0) {
-          LOG_ER(
-              "dumpInstncesOfClassesToPBE failed in callback in PBE. sDbHandle 
is closed - exiting");
-          exit(1);
-        }
         LOG_NO("PBE dumped %u objects of new class definition for %s",
                obj_count, className.c_str());
         TRACE_5("sObjCount:%u", sObjCount); diff --git 
a/src/imm/tools/imm_dumper.cc b/src/imm/tools/imm_dumper.cc index 
0365fc7..07e7416 100644
--- a/src/imm/tools/imm_dumper.cc
+++ b/src/imm/tools/imm_dumper.cc
@@ -114,7 +114,7 @@ int main(int argc, char* argv[]) {
   const char* dump_trace_label = "immdump";
   const char* trace_label = dump_trace_label;
   ClassMap classIdMap;
-  int objCount = 0;
+  unsigned objCount = 0;
   std::list<std::string> selectedClassList;
 
   /* Support for long DN */
@@ -248,10 +248,11 @@ int main(int argc, char* argv[]) {
     }
     if (objCount > 0) {
       TRACE("Dump %u objects OK", objCount);
-    } else if (selectedClassList.empty()) {
+    } else {
       std::cerr
           << "immdump: dumpObjectsToPbe failed - exiting, check syslog for 
details"
           << std::endl;
+      LOG_NO("Size of selected class list %zu", 
+ selectedClassList.size());
       if (!localTmpFilename.empty()) {
         pbeCleanTmpFiles(localTmpFilename);
       }
--
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