Mercurial > octave
changeset 33544:31bc9accbe6e
data.cc: Add back input validation from 85c8686b78e9
`sort()` was allowing non-integer dimensions like `sort (magic (3), 1.6)`. This
patch fixes that behavior.
* data.cc (Fsort): Add integer validation checks. Add BISTs. Comment code.
author | Arun Giridhar <arungiridhar@gmail.com> |
---|---|
date | Wed, 08 May 2024 08:57:13 -0400 |
parents | 8f73f8534d42 |
children | 11b5c462f640 47c798415504 |
files | libinterp/corefcn/data.cc |
diffstat | 1 files changed, 7 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/data.cc Wed May 08 08:07:49 2024 -0400 +++ b/libinterp/corefcn/data.cc Wed May 08 08:57:13 2024 -0400 @@ -7120,9 +7120,13 @@ } else { + // Forbid vector or array input if (! args(1).is_scalar_type ()) error ("sort: DIM must be a positive scalar integer"); - dim = args(1).nint_value () - 1; + + // Forbid fractional value input, also nan input. + dim = args(1).strict_int_value ("sort: DIM must be a positive scalar integer") - 1; + if (dim < 0) error ("sort: DIM must be a positive scalar integer"); } @@ -7395,6 +7399,8 @@ %!error <Invalid call> sort (1, 2, 3, 4) %!error <MODE must be either "ascend" or "descend"> sort (1, "foobar") %!error <DIM must be a positive scalar integer> sort (1, [1 2 3]) +%!error <DIM must be a positive scalar integer> sort ([1 2; 3 4], 1.234) +%!error <DIM must be a positive scalar integer> sort ([1 2; 3 4], nan) %!error <DIM argument must precede MODE argument> sort (1, "ascend", 1) %!error <MODE must be a string> sort (1, 1, 1) %!error <MODE must be either "ascend" or "descend"> sort (1, 1, "foobar")