Hi Vu,

few minor comments below.

/Thanks HansN


On 04/03/2018 11:43 AM, Vu Minh Nguyen wrote:
The allocated memory is not freed before returning from the function
ImmModel::setCcbErrorString().
---
  src/imm/immnd/ImmModel.cc | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/imm/immnd/ImmModel.cc b/src/imm/immnd/ImmModel.cc
index f7c8fc0..e01ff8c 100644
--- a/src/imm/immnd/ImmModel.cc
+++ b/src/imm/immnd/ImmModel.cc
@@ -10910,7 +10910,6 @@ SaAisErrorT ImmModel::deleteObject(ObjectMap::iterator& 
oi, SaUint32T reqConn,
  void ImmModel::setCcbErrorString(CcbInfo* ccb, const char* errorString,
                                   va_list vl) {
    int errLen = strlen(errorString) + 1;
-  char* fmtError = (char*)malloc(errLen);
    int len;
    va_list args;
    int isValidationErrString = 0;
@@ -10921,6 +10920,9 @@ void ImmModel::setCcbErrorString(CcbInfo* ccb, const 
char* errorString,
      return;
    }
+ char* fmtError = (char*)malloc(errLen);
+  osafassert(fmtError);
[HansN] in c++ new should be used instead of malloc. There is no need to check return value of new if "std::set_new_handler(new_handler)" has been called in advance, e.g. in the main function. (also fmtError is a local variable, it should be possible to use RAII and avoid explicit calls to delete).
+
    va_copy(args, vl);
    len = vsnprintf(fmtError, errLen, errorString, args);
    va_end(args);


------------------------------------------------------------------------------
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