[vtk-developers] vtk dashboard

David Gobbi david.gobbi at gmail.com
Thu Dec 18 13:23:37 EST 2014


In case you decide to give it a shot, here is a possibility:

"Done" is the first member in the class, and the class has no
virtual methods, nor does it have any superclass to inherit them
from, therefor the class has no vtable.  This means that the address
of "Done" is identical to the address of the vtkSharedData object itself.

Therefore, a bad write through a "vtkSharedData *" will directly write
to the "Done" member, even if the write is only a single byte in size.

For buffer overruns, a likely culprit is vtkDataEncoder::vtkInternals,
which has a vtkSharedData member.  The member just before it
is a vtkMultiThreader declared with vtkNew.

Since when can vtkNew be used to declare member variables?
I though that vtkSmartPointer was supposed to be used for that.

Well, anyway, I'm kind of trying to make the point that the fact
that it "might not be easy" to find the error is pretty obvious...
but it's definitely worth at least looking through the code.

 - David



On Thu, Dec 18, 2014 at 11:16 AM, Sebastien Jourdain <
sebastien.jourdain at kitware.com> wrote:
>
> That's my thought, but will need a deeper investigation.
>
> On Thu, Dec 18, 2014 at 11:15 AM, Ben Boeckel <ben.boeckel at kitware.com>
> wrote:
>>
>> On Thu, Dec 18, 2014 at 10:16:11 -0700, Sebastien Jourdain wrote:
>> > This is weird. The Done is properly initialized and get only set to
>> "true"
>> > or "false"...
>> >
>> > vtkSharedData() : Done(false), ActiveThreadCount(0)
>> >
>> >     {
>> >
>> >     }
>>
>> Could a buffer overflow be corrupting Done?
>>
>> --Ben
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20141218/0d0b8d96/attachment.html>


More information about the vtk-developers mailing list