summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--native/jni/java-net/gnu_java_net_VMPlainSocketImpl.c33
2 files changed, 36 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index c809bd80b..2ad1eab63 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2006-10-09 Robert Schuster <robertschuster@fsfe.org>
+
+ * native/jni/java-net/gnu_java_net/VMPlainSocketImpl.c:
+ (Java_gnu_java_net_VMPlainSocketImpl_joinGroup): Properly
+ convert jstring into char *.
+ (Java_gnu_java_net_VMPlainSocketImpl_joinGroup6): Dito.
+ (Java_gnu_java_net_VMPlainSocketImpl_leaveGroup): Dito.
+ (Java_gnu_java_net_VMPlainSocketImpl_leaveGroup6): Dito.
+ (getif_address): Added const modifier to second argument.
+ (getif_index): Dito.
+
2006-10-09 Roman Kennke <kennke@aicas.com>
* javax/swing/JTree.java
diff --git a/native/jni/java-net/gnu_java_net_VMPlainSocketImpl.c b/native/jni/java-net/gnu_java_net_VMPlainSocketImpl.c
index 6ebb64fa5..82267f77d 100644
--- a/native/jni/java-net/gnu_java_net_VMPlainSocketImpl.c
+++ b/native/jni/java-net/gnu_java_net_VMPlainSocketImpl.c
@@ -555,8 +555,8 @@ Java_gnu_java_net_VMPlainSocketImpl_leave6 (JNIEnv *env,
#endif /* HAVE_SETSOCKOPT */
}
-static uint32_t getif_address (JNIEnv *env, char *ifname);
-static int getif_index (JNIEnv *env, char *ifname);
+static uint32_t getif_address (JNIEnv *env, const char *ifname);
+static int getif_index (JNIEnv *env, const char *ifname);
/*
* Class: gnu_java_net_VMPlainSocketImpl
@@ -572,10 +572,14 @@ Java_gnu_java_net_VMPlainSocketImpl_joinGroup (JNIEnv *env,
#ifdef HAVE_SETSOCKOPT
struct ip_mreq maddr;
jbyte *addr_elems;
+ const char *str_ifname;
if (ifname != NULL)
{
- maddr.imr_interface.s_addr = getif_address (env, ifname);
+ str_ifname = JCL_jstring_to_cstring(env, ifname);
+ maddr.imr_interface.s_addr = getif_address (env, str_ifname);
+ JCL_free_cstring(env, ifname, str_ifname);
+
if ((*env)->ExceptionCheck (env))
return;
}
@@ -593,6 +597,7 @@ Java_gnu_java_net_VMPlainSocketImpl_joinGroup (JNIEnv *env,
if (-1 == setsockopt (fd, IPPROTO_IP, IP_ADD_MEMBERSHIP,
&maddr, sizeof (struct ip_mreq)))
JCL_ThrowException (env, SOCKET_EXCEPTION, strerror (errno));
+
#else
(void) fd;
(void) addr;
@@ -617,10 +622,14 @@ Java_gnu_java_net_VMPlainSocketImpl_joinGroup6 (JNIEnv *env,
#ifdef HAVE_INET6
struct ipv6_mreq maddr;
jbyte *addr_elems;
+ const char *str_ifname;
if (ifname == NULL)
{
- maddr.ipv6mr_interface = getif_index (env, ifname);
+ str_ifname = JCL_jstring_to_cstring(env, ifname);
+ maddr.ipv6mr_interface = getif_index (env, str_ifname);
+ JCL_free_cstring(env, ifname, str_ifname);
+
if ((*env)->ExceptionCheck (env))
return;
}
@@ -666,10 +675,14 @@ Java_gnu_java_net_VMPlainSocketImpl_leaveGroup (JNIEnv *env,
#ifdef HAVE_SETSOCKOPT
struct ip_mreq maddr;
jbyte *addr_elems;
+ const char *str_ifname;
if (ifname != NULL)
{
- maddr.imr_interface.s_addr = getif_address (env, ifname);
+ str_ifname = JCL_jstring_to_cstring(env, ifname);
+ maddr.imr_interface.s_addr = getif_address (env, str_ifname);
+ JCL_free_cstring(env, ifname, str_ifname);
+
if ((*env)->ExceptionCheck (env))
return;
}
@@ -711,10 +724,14 @@ Java_gnu_java_net_VMPlainSocketImpl_leaveGroup6 (JNIEnv *env,
#ifdef HAVE_INET6
struct ipv6_mreq maddr;
jbyte *addr_elems;
+ const char *str_ifname;
if (ifname == NULL)
{
- maddr.ipv6mr_interface = getif_index (env, ifname);
+ str_ifname = JCL_jstring_to_cstring(env, ifname);
+ maddr.ipv6mr_interface = getif_index (env, str_ifname);
+ JCL_free_cstring(env, ifname, str_ifname);
+
if ((*env)->ExceptionCheck (env))
return;
}
@@ -747,7 +764,7 @@ Java_gnu_java_net_VMPlainSocketImpl_leaveGroup6 (JNIEnv *env,
}
static uint32_t
-getif_address (JNIEnv *env, char *ifname)
+getif_address (JNIEnv *env, const char *ifname)
{
#ifdef HAVE_GETIFADDRS
struct ifaddrs *ifaddrs, *i;
@@ -789,7 +806,7 @@ getif_address (JNIEnv *env, char *ifname)
}
static int
-getif_index (JNIEnv *env, char *ifname)
+getif_index (JNIEnv *env, const char *ifname)
{
#ifdef HAVE_GETIFADDRS
struct ifaddrs *ifaddrs, *i;