gsort() crashed after 461b6ab7 37/20637/4
Samuel GOUGEON [Sat, 24 Nov 2018 14:05:53 +0000 (15:05 +0100)]
  as initially proposed @ https://codereview.scilab.org/20589

Change-Id: Ia95c4ab4b659fd7cea0a955f22ba8629de03774f

scilab/modules/elementary_functions/sci_gateway/cpp/sci_gsort.cpp

index a3fe658..e4ced15 100644 (file)
@@ -30,6 +30,14 @@ extern "C"
 /*--------------------------------------------------------------------------*/
 types::Function::ReturnValue sci_gsort(types::typed_list &in, int _iRetCount, types::typed_list &out)
 {
+    // In all cases, to later test in[0]:
+    if (in.size() < 1)
+    {
+        Scierror(77, _("%s: Wrong number of input argument(s): At least %d expected.\n"), "gsort", 1);
+        return types::Function::Error;
+    }
+    // The maximal number of input args may depend on the input data type, due to specific options
+
     //
     // Special cases
     //
@@ -62,7 +70,7 @@ types::Function::ReturnValue sci_gsort(types::typed_list &in, int _iRetCount, ty
     // Common case
     //
 
-    if (in.size() < 1 || in.size() > 3)
+    if (in.size() > 3)
     {
         Scierror(77, _("%s: Wrong number of input argument(s): %d to %d expected.\n"), "gsort", 1, 3);
         return types::Function::Error;