ports/java/openjdk7/files/patch-src-solaris-native-java-net-NetworkInterface.c
Greg Lewis f326f69e57 . Try harder to make sure the flags returned from getFlags isn't negative,
since a number of places in the code check for that and assume that it
  means an error occurred.  On FreeBSD, in particular, the value of
  ifr_flags can be negative if multicast is enabled on the socket since
  the possible flags have expanded to fill more than a short.

  Instead of blindly promoting ifr_flags to an int, which will preserve
  the sign, we fill the int return value with ifr_flagshigh in the high
  16 bits and ifr_flags in the low 16 bits.

PR:		155186
Reported by:	Alex Hayward <xelah-freebsd-pr@xelah.com>
2011-07-08 07:28:46 +00:00

17 lines
414 B
C

$FreeBSD$
--- jdk/src/solaris/native/java/net/NetworkInterface.c Mon Jun 27 22:08:16 2011 -0700
+++ jdk/src/solaris/native/java/net/NetworkInterface.c Thu Jul 07 23:37:05 2011 -0700
@@ -1968,7 +1968,11 @@
return -1;
}
- return if2.ifr_flags;
+#ifdef __FreeBSD__
+ return ((if2.ifr_flags & 0xffff) | (if2.ifr_flagshigh << 16));
+#else
+ return (((int) if2.ifr_flags) & 0xffff);
+#endif
}
#endif