# HG changeset patch # User Rik # Date 1651295617 25200 # Node ID 9a9374ed52704690419cd2063fe09cd3b9160f04 # Parent 42cf341406996a7a565603babb004b80b18572f8 findobj.m: Fix input validation of graphics handles (bug #62378) * findobj.m: Check validity of all input graphics handles, not just the first one. Re-order input validation to error out first and have ordinary code second. Add BIST tests for bug #62378. diff -r 42cf34140699 -r 9a9374ed5270 scripts/plot/util/findobj.m --- a/scripts/plot/util/findobj.m Fri Apr 22 07:43:33 2022 -0700 +++ b/scripts/plot/util/findobj.m Fri Apr 29 22:13:37 2022 -0700 @@ -101,28 +101,30 @@ handles = 0; n1 = 0; else - if (! isempty (varargin{1})) - if (ishghandle (varargin{1}(1))) - handles = varargin{1}; - n1 = 2; - else - handles = 0; - n1 = 1; - endif - else + if (isempty (varargin{1})) ## Return [](0x1) for compatibility. h = zeros (0, 1); return; endif + arg1 = varargin{1}; + if (isnumeric (arg1)) + if (! all (ishghandle (arg1))) + error ("findobj: invalid graphics handles in input HLIST"); + endif + handles = arg1; + n1 = 2; + else + handles = 0; + n1 = 1; + endif if (n1 <= nargin) - if (ischar (varargin{n1})) - if (strcmpi (varargin{n1}, "flat")) - depth = 0; - n1 += 1; - endif - else + if (! ischar (varargin{n1})) error ("findobj: properties and options must be strings"); endif + if (strcmpi (varargin{n1}, "flat")) + depth = 0; + n1 += 1; + endif endif endif @@ -443,3 +445,7 @@ %! unwind_protect_cleanup %! close (hf); %! end_unwind_protect + +## Test input validation +%!error findobj ([0 1 10], "flat") +%!error findobj ({0}, "flat")