Deserialising does not work properly in some cases.
Consider the following example :- The idl looks like this -> idlcall (inout UInt32 num, out sequenceUInt64 A, out sequenceUInt64 long B, out sequenceString C). Consider now that the response stream starts at 24 after removing GIOP headers etc. The UInt32 which is long value will be aligned on 4 byte boundary. So it will be read from 24. The next thing to be read will be length of the UInt64 (long long) sequence. The length is unsigned long and aligned on 4 byte boundary. Assume that both sequences of UInt64 (A,B) have zero elements. So their lenghts will be read from positions 28, 32. The next element to be read is the sequence of strings. First the length has to be read and then the elements. The length is again a unsigned long and should be read from position 36. But the current iiop.net code wrongly aligns it on a 8 byte boundary. Thus the reading happens from position 40 and not 36. This needs to be corrected. (Have done the corrections and tested it too. Works fine)
Log in to post a comment.