* Bug #13843 fixed - Scilab crashed when polarplot and plot2d were called with wrong... 28/17028/3
Charlotte HECQUET [Wed, 12 Aug 2015 13:53:17 +0000 (15:53 +0200)]
Change-Id: I1984e256bc3eba20ef72bfde07eb2c7674981f78

scilab/CHANGES_6.0.X
scilab/modules/graphics/src/c/GetCommandArg.c
scilab/modules/graphics/tests/nonreg_tests/bug_13843.dia.ref [new file with mode: 0644]
scilab/modules/graphics/tests/nonreg_tests/bug_13843.tst [new file with mode: 0644]

index 9e6ad88..61515c8 100644 (file)
@@ -11,6 +11,8 @@ Scilab Bug Fixes
 
 * Bug #13780 fixed - size with two input and output arguments did not return an error.
 
+* Bug #13843 fixed - Scilab crashed when polarplot and plot2d were called with wrong strf value.
+
 * Bug #13872 fixed - Non regression test added for unique function (the indices returned were wrong)
 
 * Bug #14020 fixed - Incorrect carriage return ascii code.
index c023d9b..c8eb462 100644 (file)
@@ -210,28 +210,32 @@ int get_strf_arg(void* _pvCtx, char *fname, int pos, rhs_opts opts[], char ** st
         char* pstData = NULL;
         getVarAddressFromPosition(_pvCtx, pos, &piAddr);
         getVarType(_pvCtx, piAddr, &iType);
-
-        if (iType)
+        if (iType != 10)
         {
-            getAllocatedSingleString(_pvCtx, piAddr, &pstData);
-            if ((int)strlen(pstData) != 3)
-            {
-                freeAllocatedSingleString(pstData);
-                Scierror(999, _("%s: Wrong size for input argument #%d: String of %d characters expected.\n"), fname, pos, 3);
-                return 0;
-            }
-            *strf = pstData;
+            Scierror(999, _("%s: Wrong type for input argument #%d: String expected.\n"), fname, pos);
+            return 0;
         }
-        else
+
+        getAllocatedSingleString(_pvCtx, piAddr, &pstData);
+        if ((int)strlen(pstData) != 3)
         {
-            /* def value can be changed */
-            reinitDefStrf();
-            *strf = getDefStrf();
+            freeAllocatedSingleString(pstData);
+            Scierror(999, _("%s: Wrong size for input argument #%d: String of %d characters expected.\n"), fname, pos, 3);
+            return 0;
         }
+        *strf = pstData;
     }
     else if ((kopt = FindOpt(_pvCtx, "strf", opts)) >= 0)
     {
         char* pstData = NULL;
+        int iType = 0;
+        getVarType(_pvCtx, opts[kopt].piAddr, &iType);
+        if (iType != 10)
+        {
+            Scierror(999, _("%s: Wrong type for input argument #%d: String expected.\n"), fname, pos);
+            return 0;
+        }
+
         getAllocatedSingleString(_pvCtx, opts[kopt].piAddr, &pstData);
         if ((int)strlen(pstData) != 3)
         {
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_13843.dia.ref b/scilab/modules/graphics/tests/nonreg_tests/bug_13843.dia.ref
new file mode 100644 (file)
index 0000000..ebfa273
--- /dev/null
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Charlotte Hecquet
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- TEST WITH GRAPHIC -->
+// <-- Non-regression test for bug 13843 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13843
+//
+// <-- Short Description -->
+// plot2d and polarplot crashes Scilab with wrong strf argument
+// plot2d
+f = scf();
+x = linspace(0,10,100);
+errmsg = msprintf(gettext("%s: Wrong type for input argument #%d: String expected.\n"), "plot2d", 4);
+assert_checkerror("plot2d(x, sin(x),1, 111);", errmsg);
+// polarplot
+clf();
+t = 0:.01:2*%pi;
+assert_checkerror("polarplot(sin(7*t),cos(8*t), [2 3], 111);", errmsg);
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_13843.tst b/scilab/modules/graphics/tests/nonreg_tests/bug_13843.tst
new file mode 100644 (file)
index 0000000..346fcba
--- /dev/null
@@ -0,0 +1,27 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Charlotte Hecquet
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+
+// <-- Non-regression test for bug 13843 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13843
+//
+// <-- Short Description -->
+// plot2d and polarplot crashes Scilab with wrong strf argument
+
+// plot2d
+f = scf();
+x = linspace(0,10,100);
+errmsg = msprintf(gettext("%s: Wrong type for input argument #%d: String expected.\n"), "plot2d", 4);
+assert_checkerror("plot2d(x, sin(x),1, 111);", errmsg);
+
+// polarplot
+clf();
+t = 0:.01:2*%pi; 
+assert_checkerror("polarplot(sin(7*t),cos(8*t), [2 3], 111);", errmsg);