[vtk-developers] Safer item access in Python wrapped VTK arrays

David Gobbi david.gobbi at gmail.com
Fri Aug 4 13:06:15 EDT 2017


Hi Andras,

Yes, this would be possible.  It could be hard-coded into the wrappers, or
even better, in the header file a generic hint could be added to the index
parameter so that the index would be checked against the size of the array:

  float GetValue(vtkIdType idx VTK_RANGECHECK(0,GetNumberOfValues()));

I have a list of wrapper hints at http://www.vtk.org/Wiki/VTK/Wrapping_hints,
and I can add this "RANGECHECK" hint to the "Proposed hints" section.

I'm hoping to find time to implement more of these wrapper hints over the
next few weeks.

 - David


On Fri, Aug 4, 2017 at 9:53 AM, Andras Lasso <lasso at queensu.ca> wrote:

> Hi David,
>
>
>
> Users who mostly use VTK via Python wrapping are sometimes surprised how
> easily they can crash the application by accessing out-of-bounds elements
> in arrays. For example, this crashes an application:
>
>
>
> >>> a=vtk.vtkStringArray()
>
> >>> print(a.GetValue(0))
>
>
>
> I first thought that it should be handled by documentation and training,
> but it would be nicer if the wrappers could handle this.
>
>
>
> Would it be feasible to add bounds check to VTK array accessors in Python
> wrappers, so that in case of an out of bounds access, a Python exception
> would be raised instead of crashing the application?
>
> Andras
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20170804/b29b0754/attachment.html>


More information about the vtk-developers mailing list