Hello,
it seems one of our external developers (Andre Naujoks, CC) found a bug while 
binding a IPv6 multicast UDP-socket for one of our projects.

Since this seems to be a fundamental bug (from our perspective), we address 
this directly to this mailing list.
(reproducible in OpenJDK 8-11, Windows and Linux)


Following is the bug description from Andre:
This bugs affects all currently available Java versions in Debian (7, 8, 10 and 
11).

If a java program tries to bind a datagram/UDP socket to a link- or node-local 
multicast
address and also sets the needed interface index, the bind operation on the 
socket
fails with "java.net.SocketException: Invalid argument".

This is because the JVM only transfers the interface index to the scope_id 
field in the struct sockaddr_in6,
if the address to bind to is a link local address (IN6_IS_ADDR_LINKLOCAL()).

A bind to a multicast address of link- or node-local scope needs the scope_id 
field as well.
(There might be an additional problem here, when binding to a higher scoped 
multicast address and trying to use
the non-default-route interface)

The attached patch fixes/adds this in the jvm.
[Edit HDecke: Since I am not sure if attachments are allowed on this mailing 
list, I put the link to the
corresponding debian bug log with the example and patch file at the end of the 
mail.]

I applied the patch by copying it to an "apt-get source"d openjdk-8 packages 
debian/patches dir and including it
in the debian/rules file in the COMMON_PATCHES variable. The resulting debian 
packages work as expected.

Additionally attached is a very small test program that wrongly throws the 
mentioned exception.
When run with the patched VM it works.
You might have to edit the interface name in line 33 when trying this out.

Regards,
  Andre


This issue has also been reported to the debian bug logs: 
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=907541


Best regards,
Hendrik Decke
Volkswagen group research

Volkswagen Aktiengesellschaft
Brieffach 17770
38436 Wolfsburg

Tel. +49 5361 9-38363
Mobil +49-152-5-888874
www.volkswagen-ag.com

Volkswagen Aktiengesellschaft
Registered Seat: Wolfsburg I Registration Court: Amtsgericht Braunschweig
Commercial Register No.: 100484
Chairman of the Supervisory Board: Hans Dieter Pötsch
Board of Management: Herbert Diess (Chairman), Oliver Blume, Jochem Heizmann, 
Gunnar Kilian, Andreas Renschler, Stefan Sommer, Rupert Stadler, Hiltrud D. 
Werner, Frank Witter
Important Notice: The above information is automatically added to this e-mail. 
This addition does not constitute a representation that the content of this 
e-mail is legally relevant and/or is intended to be legally binding upon 
Volkswagen Aktiengesellschaft.


Reply via email to