Scicos: fix some invalid access 47/17147/3
Clément DAVID [Tue, 1 Sep 2015 15:21:05 +0000 (17:21 +0200)]
Change-Id: Ibad804a14138497fc20cf96788589eb415e2a658

scilab/modules/scicos/src/cpp/Controller.cpp
scilab/modules/scicos/src/cpp/vec2var.cpp

index 00f53bc..2e27d63 100644 (file)
@@ -241,6 +241,10 @@ void Controller::unlinkVector(ScicosID uid, kind_t k, object_properties_t uid_pr
     if (v != 0)
     {
         auto o = getObject(v);
+        if (o == nullptr)
+        {
+            return;
+        }
 
         std::vector<ScicosID> children;
         getObjectProperty(o->id(), o->kind(), ref_prop, children);
@@ -264,6 +268,11 @@ void Controller::unlink(ScicosID uid, kind_t k, object_properties_t uid_prop, ob
         if (id != 0)
         {
             auto o = getObject(id);
+            if (o == nullptr)
+            {
+                continue;
+            }
+
             // Find which end of the link is connected to the port
             ScicosID oppositeRef;
             getObjectProperty(o->id(), o->kind(), ref_prop, oppositeRef);
index 23d87ea..5a2028f 100644 (file)
@@ -103,6 +103,7 @@ int decode(const double* const tab, const int tabSize, const int iDims, const in
     if (tabSize < iElements + 3 + iDims)
     {
         // Error case: the input doesn't have enough elements
+        delete[] pDims;
         Scierror(999, _("%s: Wrong size for input argument #%d: At least %dx%d expected.\n"), vec2varName.c_str(), 1, iElements + 3 + iDims + offset, 1);
         return -1;
     }