[omniORB] Bug with long operation name handling in GIOP_S

Chris Newbold chris.newbold@laurelnetworks.com
Mon, 04 Dec 2000 16:40:03 -0500


We're currently running omniORB 3.0.2 patched through bug #6.

There is a bug in the handling of long operation names in GIOP_S
which manifests when using ServantLocators. In handle request,
the operation name length is carefully checked and a new buffer
is allocated on the heap if the internal buffer in GIOP_S is
too small.

In ReplyComplete, this allocated buffer is freed and the
pd_operation point reset to point to the internal buffer. The
problem is that this happens BEFORE the ServantLocator invokes
postinvoke. The result is that postinvoke gets called with
some randomish operation name which does not match the operation
name used in preinvoke.

I was unable to discern from the code if this always happens or
if it only happens when an exception is thrown by the method
or during marshalling...

(Don't ask how we managed to get operation names > 32 characters :-)

-Chris Newbold
Laurel Networks, Inc.