Bug 13735 fixed: There was not check on frameflag value in plot2d 62/16262/3
Calixte DENIZET [Fri, 27 Mar 2015 10:34:24 +0000 (11:34 +0100)]
Change-Id: Ie05947c22e0ec5b2907d175d4a6c4380d6e2b9f0

scilab/CHANGES_5.5.X
scilab/modules/graphics/sci_gateway/c/sci_plot2d.c
scilab/modules/graphics/tests/nonreg_tests/bug_13735.dia.ref [new file with mode: 0644]
scilab/modules/graphics/tests/nonreg_tests/bug_13735.tst [new file with mode: 0644]

index 7cce23e..e6f07f9 100644 (file)
@@ -129,6 +129,8 @@ Scilab Bug Fixes
 
 * Bug #13733 fixed - fmt could not be used as a singular optional argument in colorbar.
 
+* Bug #13735 fixed - There was no check of frameflag value in plot2d.
+
 * Bug #13741 fixed - An invisible figure could not be printed under Windows.
 
 * Bug #13742 fixed - Figure was not well-printed when there was a xstring with LaTeX.
index cd87c61..c38cf39 100644 (file)
@@ -380,14 +380,37 @@ int sci_plot2d(char* fname, unsigned long fname_len)
         GetOptionalIntArg(pvApiCtx, fname, 9, "frameflag", &frame, 1, opts);
         if (frame != &frame_def)
         {
-            strfl[1] = (char)(*frame + 48);
+            if (*frame >= 0 && *frame <= 8)
+            {
+                strfl[1] = (char)(*frame + 48);
+            }
+            else
+            {
+                Scierror(999, _("%s: Wrong value for frameflag option.\n"), fname);
+                if (freeStrf)
+                {
+                    freeAllocatedSingleString(strf);
+                }
+                return -1;
+            }
         }
 
         GetOptionalIntArg(pvApiCtx, fname, 9, "axesflag", &axes, 1, opts);
-
         if (axes != &axes_def)
         {
-            strfl[2] = (char)(*axes + 48);
+            if (*axes >= 0 && *axes <= 5)
+            {
+                strfl[2] = (char)(*axes + 48);
+            }
+            else
+            {
+                Scierror(999, _("%s: Wrong value for axesflag option.\n"), fname);
+                if (freeStrf)
+                {
+                    freeAllocatedSingleString(strf);
+                }
+                return -1;
+            }
         }
     }
 
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_13735.dia.ref b/scilab/modules/graphics/tests/nonreg_tests/bug_13735.dia.ref
new file mode 100644 (file)
index 0000000..ec9d4ba
--- /dev/null
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- TEST WITH GRAPHIC -->
+// <-- Non-regression test for bug 13735 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13735
+//
+// <-- Short Description -->
+// There was not check on frameflag value in plot2d.
+x = 1:10;
+y = 0 * x;
+assert_checkerror("plot2d(x, y, 5, frameflag = -4)", _("%s: Wrong value for frameflag option.\n"), [], "plot2d");
+assert_checkerror("plot2d(x, y, 5, axesflag = -4)", _("%s: Wrong value for axesflag option.\n"), [], "plot2d");
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_13735.tst b/scilab/modules/graphics/tests/nonreg_tests/bug_13735.tst
new file mode 100644 (file)
index 0000000..e6681cc
--- /dev/null
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+
+// <-- Non-regression test for bug 13735 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13735
+//
+// <-- Short Description -->
+// There was not check on frameflag value in plot2d.
+
+x = 1:10;
+y = 0 * x;
+assert_checkerror("plot2d(x, y, 5, frameflag = -4)", _("%s: Wrong value for frameflag option.\n"), [], "plot2d");
+assert_checkerror("plot2d(x, y, 5, axesflag = -4)", _("%s: Wrong value for axesflag option.\n"), [], "plot2d");
\ No newline at end of file