Re: patch for writev bug in IIOP



On Thu, 26 Jul 2001, Mark McLoughlin wrote:

> On Fri, 15 Jun 2001, Larry Stone wrote:
> 
> > The patch below fixes a bug in ORBit 0.5.8 that especially affects
> > Solaris.  giop_send_buffer_write was calling writev(2) without checking
> > the length of the iovec array.  Writev(2) cannot be expected to take
> > more than IOV_MAX iovecs at a time, but on Linux this is less of an
> > issue since IOV_MAX == 1024.  On Solaris 8, IOV_MAX == 16, so it is more
> > noticeable.  Even more unfortunately, Solaris doesn't seem to return the
> > expected error when the length is violated, it just drops some bytes on
> > the floor out of spite.  This results in a corrupted message that
> > usually makes the recipient crash in the demarshaller (e.g.  after
> > reading random garbage as the length of an array or string and wandering
> > off into deep space).
> >
> > The change respects IOV_MAX, and cleans up the logic a bit.
> > I was seeing common crashes of Nautilus (1.0.3) view components such as
> > nautilus_history_view and nautilus_notes_view, in the
> > Nautilus_View_history_changed server stub (often the recipient of huge
> > RPC messages), and it's fixed those.
> >
> > Can someone on this list accept this change into the ORBit source?
> 
> 	Elliot, this patch looks good to me. Indeed, it has been well
> tested. Can I apply?

I can't see the patch, but I think I remember saying something about the
patch being broken in its approach, needing to just use/fix the g_writev
in libORBitutil, and also improving the IOV_MAX detection in configure.in.

-- Elliot




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]