Coverity: parameters module memory errors fixed 49/18349/2
Dhruv Khattar [Sun, 3 Jul 2016 19:40:10 +0000 (00:40 +0530)]
Change-Id: I5416b21381f9b6da7825154db97b401bb30d0727

scilab/modules/api_scilab/includes/api_stack_common.h
scilab/modules/api_scilab/src/cpp/api_internal_common.h
scilab/modules/parameters/src/c/parameters.c

index 223a106..5bddc14 100644 (file)
@@ -480,6 +480,16 @@ int increaseValRef(void* _pvCtx, int* _piAddress);
  */
 int decreaseValRef(void* _pvCtx, int* _piAddress);
 
+/**
+ * Initialize SciErr
+ */
+SciErr sciErrInit();
+
+/**
+ * Clean & reset a SciErr
+ */
+void sciErrClean(SciErr* _psciErr);
+
 #ifdef __cplusplus
 }
 #endif
index 94471bc..bc9aaa7 100644 (file)
@@ -58,9 +58,5 @@ int checkNamedVarType(void* _pvCtx, const char *_pstName, int _iType);
 */
 int checkNamedVarFormat(void* _pvCtx, const char *_pstName);
 
-
-SciErr sciErrInit();
-void sciErrClean(SciErr* _psciErr);
-
 #endif /* __INTERNAL_COMMON_API__ */
 
index 98b5c44..f3b2636 100644 (file)
@@ -123,10 +123,7 @@ SciErr getIntInPList(void* _pvCtx, int * _piAddress, const char * _pstLabel, int
     int pos_label = 0, i = 0;
     int m_tmp = 0, n_tmp = 0;
     double * tmp_dbl = NULL;
-    SciErr _SciErr;
-
-    _SciErr.iErr = 0;
-    _SciErr.iMsgCount = 0;
+    SciErr _SciErr = sciErrInit();
 
     pos_label = commonFindLabel(_pvCtx, _piAddress, _pstLabel);
     *_piFound = pos_label;
@@ -260,6 +257,8 @@ SciErr getIntInPList(void* _pvCtx, int * _piAddress, const char * _pstLabel, int
 
                 va_end(vl);
                 break;
+            default:
+                va_end(vl);
         }
     }
     return _SciErr;
@@ -271,10 +270,7 @@ SciErr getDoubleInPList(void* _pvCtx, int * _piAddress, const char * _pstLabel,
     int pos_label = 0, i = 0;
     int m_tmp = 0, n_tmp = 0;
     double * tmp_values = NULL;
-    SciErr _SciErr;
-
-    _SciErr.iErr = 0;
-    _SciErr.iMsgCount = 0;
+    SciErr _SciErr = sciErrInit();
 
     pos_label = commonFindLabel(_pvCtx, _piAddress, _pstLabel);
     *_piFound = pos_label;
@@ -421,10 +417,7 @@ SciErr getStringInPList(void* _pvCtx, int * _piAddress, const char * _pstLabel,
     int m_label = 0, n_label = 0;
     int * len_label = NULL;
     char ** label_list = NULL;
-    SciErr _SciErr;
-
-    _SciErr.iErr = 0;
-    _SciErr.iMsgCount = 0;
+    SciErr _SciErr = sciErrInit();
 
     pos_label = commonFindLabel(_pvCtx, _piAddress, _pstLabel);
     *_piFound = pos_label;
@@ -531,6 +524,8 @@ SciErr getStringInPList(void* _pvCtx, int * _piAddress, const char * _pstLabel,
 
                 va_end(vl);
                 break;
+            default:
+                va_end(vl);
         }
     }
 
@@ -544,10 +539,7 @@ SciErr getColVectorOfIntInPList(void* _pvCtx, int * _piAddress, const char * _ps
     int pos_label = 0, i = 0;
     int m_tmp = 0, n_tmp = 0;
     double * tmp_dbl = 0;
-    SciErr _SciErr;
-
-    _SciErr.iErr = 0;
-    _SciErr.iMsgCount = 0;
+    SciErr _SciErr = sciErrInit();
 
     *_piSize = -1;
 
@@ -703,6 +695,8 @@ SciErr getColVectorOfIntInPList(void* _pvCtx, int * _piAddress, const char * _ps
 
                 va_end(vl);
                 break;
+            default:
+                va_end(vl);
         }
     }
 
@@ -717,10 +711,7 @@ SciErr getColVectorOfDoubleInPList(void* _pvCtx, int * _piAddress, const char *
     int m_tmp = 0, n_tmp = 0;
     double * tmp_values = NULL;
     char ** label_list = NULL;
-    SciErr _SciErr;
-
-    _SciErr.iErr = 0;
-    _SciErr.iMsgCount = 0;
+    SciErr _SciErr = sciErrInit();
 
     *_piSize = -1;
 
@@ -901,6 +892,8 @@ SciErr getColVectorOfDoubleInPList(void* _pvCtx, int * _piAddress, const char *
                 }
                 va_end(vl);
                 break;
+            default:
+                va_end(vl);
         }
     }
 
@@ -927,10 +920,7 @@ SciErr createPList(void* _pvCtx, int _iVar, int ** _piAddress, char ** _pstLabel
 
     _SciErr = createMatrixOfStringInList(_pvCtx, _iVar, *_piAddress, 1, 1, _iNbParams + 1, (char const * const*) label_list);
 
-    if (label_list)
-    {
-        freeArrayOfString(label_list, _iNbParams + 1);
-    }
+    freeArrayOfString(label_list, _iNbParams + 1);
 
     return _SciErr;
 }