* Bug #14571 fixed - The type of input argument of figure function was not checked. 55/18655/2
Adeline CARNIS [Tue, 8 Nov 2016 15:20:17 +0000 (16:20 +0100)]
Change-Id: I56779ed42686316b1e2d15b51794fe07d5030cf1

scilab/CHANGES.md
scilab/modules/gui/sci_gateway/c/sci_figure.c
scilab/modules/gui/tests/nonreg_tests/bug_14571.dia.ref [new file with mode: 0644]
scilab/modules/gui/tests/nonreg_tests/bug_14571.tst [new file with mode: 0644]

index 73a8da1..3482360 100644 (file)
@@ -375,6 +375,7 @@ Bug Fixes
 * [#14553](http://bugzilla.scilab.org/show_bug.cgi?id=14553): find(a=b) crashed Scilab.
 * [#14557](http://bugzilla.scilab.org/show_bug.cgi?id=14557): `csim` failed when the system has no state.
 * [#14564](http://bugzilla.scilab.org/show_bug.cgi?id=14564): fieldnames failed for empty structs.
+* [#14571](http://bugzilla.scilab.org/show_bug.cgi?id=14571): The type of input argument of `figure`function was not checked.
 * [#14578](http://bugzilla.scilab.org/show_bug.cgi?id=14578): LaTeX string used for text uicontrol was not updated.
 * [#14582](http://bugzilla.scilab.org/show_bug.cgi?id=14582): `gettext`or it alias `_()` were sometimes applied to broken literal strings
 * [#14586](http://bugzilla.scilab.org/show_bug.cgi?id=14586): Xcos simulation stop button did not work.
index 8f8a08b..8cac5f8 100644 (file)
@@ -44,6 +44,7 @@ int sci_figure(char * fname, void* pvApiCtx)
 {
     SciErr sciErr;
     int* piAddr = NULL;
+    int iType = 0;
     int iFig = 0;
     int iRhs = nbInputArgument(pvApiCtx);
     int iId = 0;
@@ -98,7 +99,8 @@ int sci_figure(char * fname, void* pvApiCtx)
             return 0;
         }
 
-        if (isVarMatrixType(pvApiCtx, piAddr) == 0)
+        sciErr = getVarType(pvApiCtx, piAddr, &iType);
+        if (sciErr.iErr || iType != sci_matrix)
         {
             Scierror(999, _("%s: Wrong type for input argument #%d: An integer value expected.\n"), fname, 1);
             return 0;
diff --git a/scilab/modules/gui/tests/nonreg_tests/bug_14571.dia.ref b/scilab/modules/gui/tests/nonreg_tests/bug_14571.dia.ref
new file mode 100644 (file)
index 0000000..1002afb
--- /dev/null
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2016 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- TEST WITH GRAPHIC -->
+// <-- Non-regression test for bug 14571 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14571
+//
+// <-- Short Description -->
+// The type of input parameters of figure function was not checked.
+str = "figure(%t)";
+assert_checkfalse(execstr(str, "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: An integer value expected.\n"), "figure", 1);
+assert_checkerror(str, refMsg);
+str = "figure(%s)";
+assert_checkfalse(execstr(str, "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: An integer value expected.\n"), "figure", 1);
+assert_checkerror(str, refMsg);
+str = "figure(scf())";
+assert_checkfalse(execstr(str, "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: An integer value expected.\n"), "figure", 1);
+assert_checkerror(str, refMsg);
diff --git a/scilab/modules/gui/tests/nonreg_tests/bug_14571.tst b/scilab/modules/gui/tests/nonreg_tests/bug_14571.tst
new file mode 100644 (file)
index 0000000..a3a849d
--- /dev/null
@@ -0,0 +1,31 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2016 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+
+// <-- Non-regression test for bug 14571 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14571
+//
+// <-- Short Description -->
+// The type of input parameters of figure function was not checked.
+
+str = "figure(%t)";
+assert_checkfalse(execstr(str, "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: An integer value expected.\n"), "figure", 1);
+assert_checkerror(str, refMsg);
+
+str = "figure(%s)";
+assert_checkfalse(execstr(str, "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: An integer value expected.\n"), "figure", 1);
+assert_checkerror(str, refMsg);
+
+str = "figure(scf())";
+assert_checkfalse(execstr(str, "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: An integer value expected.\n"), "figure", 1);
+assert_checkerror(str, refMsg);