* Bug #9396 fixed - Parameters: add_params() did not check its input arguments 52/12452/5
Paul BIGNIER [Fri, 6 Sep 2013 10:39:06 +0000 (12:39 +0200)]
Check that add_param() has exactly 3 input arguments.

Change-Id: I3d61b7f05da9530d9b0163f84f81cfd80b797303

scilab/CHANGES_5.5.X
scilab/modules/parameters/macros/add_param.sci
scilab/modules/parameters/tests/nonreg_tests/bug_9395.dia.ref [new file with mode: 0644]
scilab/modules/parameters/tests/nonreg_tests/bug_9395.tst [new file with mode: 0644]

index 6734416..3f6d26c 100644 (file)
@@ -376,6 +376,8 @@ Bug Fixes
 
 * Bug #9385 fixed - The type checking in trigonometric functions has been added.
 
+* Bug #9395 fixed - add_params did not check its input arguments.
+
 * Bug #9396 fixed - add_params accepted duplicate keys.
 
 * Bug #9459 fixed - Default values of the optional plot3d arguments were not documented.
index df65ebb..fd91e16 100644 (file)
@@ -8,7 +8,13 @@
 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
 
 function [plist, err] = add_param(list_name, param_name, param_value)
+
     [nargout, nargin] = argn();
+
+    if nargin <> 3 then
+        error(sprintf(gettext("%s: Wrong number of input arguments: %d expected.\n"), "add_param", 3));
+    end
+
     if typeof(list_name) == "plist" then
         if ~is_param(list_name, param_name) then
             setfield(1, [getfield(1, list_name) param_name], list_name);
@@ -28,4 +34,5 @@ function [plist, err] = add_param(list_name, param_name, param_value)
         error(sprintf(gettext("%s: Wrong type for input argument #%d: %s expected.\n"), "add_param", 1, "plist"));
     end
     plist = list_name;
+
 endfunction
diff --git a/scilab/modules/parameters/tests/nonreg_tests/bug_9395.dia.ref b/scilab/modules/parameters/tests/nonreg_tests/bug_9395.dia.ref
new file mode 100644 (file)
index 0000000..7aecdc7
--- /dev/null
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 9395 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9395
+//
+// <-- Short Description -->
+// add_params() did not check its input arguments.
+p = init_param();
+refMsg = msprintf(_("%s: Wrong number of input arguments: %d expected.\n"), "add_param", 3);
+assert_checkerror("p = add_param();", refMsg);
+assert_checkerror("p = add_param(p);", refMsg);
+assert_checkerror("p = add_param(p, ''field1'');", refMsg);
diff --git a/scilab/modules/parameters/tests/nonreg_tests/bug_9395.tst b/scilab/modules/parameters/tests/nonreg_tests/bug_9395.tst
new file mode 100644 (file)
index 0000000..a861356
--- /dev/null
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 9395 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9395
+//
+// <-- Short Description -->
+// add_params() did not check its input arguments.
+
+p = init_param();
+refMsg = msprintf(_("%s: Wrong number of input arguments: %d expected.\n"), "add_param", 3);
+assert_checkerror("p = add_param();", refMsg);
+assert_checkerror("p = add_param(p);", refMsg);
+assert_checkerror("p = add_param(p, ''field1'');", refMsg);