Bug in libgcj UDP network classes

Michael Koch konqueror@gmx.de
Thu Nov 20 20:36:00 GMT 2003


On Thu, Nov 20, 2003 at 09:34:10PM +0100, Norbert Frese wrote:
> Hi list!
> 
> I have found a bug in the libgcj network-classes:
> 
> It seems that the length of data of an incoming UDP packet gets
> overwritten by other UDP packets queueing up on the same socket. 
> -> When you call DatagramSocket.receive() the wrong number of bytes is 
> copied to the byte[] buffer.
> 
> I have written a little test-program 'UDPTest', which sends two packets
> in an endless loop to itself:
> 
> packet1 contains the String: "Hello World 1234567890 ++++++++++++++"
> packet2 contains the String: "World Hello 0987654321"
> 
> UDPTest output gcj (3.4 from CVS, checked out today):
> 
> $ ./udptest_gcj
> got packet:Hello World 1234567890 ++++++++++++++ length=37
> got packet:World Hello 0987654321 length=22
> got packet:Hello World 1234567890 length=22
> got packet:World Hello 0987654321 length=22
> got packet:Hello World 1234567890 length=22
> got packet:World Hello 0987654321 length=22
> got packet:Hello World 1234567890 length=22
> got packet:World Hello 0987654321 length=22
> got packet:Hello World 1234567890 length=22
> got packet:World Hello 0987654321 length=22
> 
> UDPTest output sun jre:
>  
> $ java UDPTest
> got packet:Hello World 1234567890 ++++++++++++++ length=37
> got packet:World Hello 0987654321 length=22
> got packet:Hello World 1234567890 ++++++++++++++ length=37
> got packet:World Hello 0987654321 length=22
> got packet:Hello World 1234567890 ++++++++++++++ length=37
> got packet:World Hello 0987654321 length=22
> got packet:Hello World 1234567890 ++++++++++++++ length=37
> got packet:World Hello 0987654321 length=22
> got packet:Hello World 1234567890 ++++++++++++++ length=37
> got packet:World Hello 0987654321 length=22
> 
> Attached is the source of UDPTest.

I'm looking into it as I'm currently at that code anyway.
Thx for testing and reporting.


Michael



More information about the Java mailing list