summaryrefslogtreecommitdiffstats
path: root/core/jni
diff options
context:
space:
mode:
Diffstat (limited to 'core/jni')
-rw-r--r--core/jni/android_net_LocalSocketImpl.cpp20
1 files changed, 8 insertions, 12 deletions
diff --git a/core/jni/android_net_LocalSocketImpl.cpp b/core/jni/android_net_LocalSocketImpl.cpp
index b9ed28e..9f79f74 100644
--- a/core/jni/android_net_LocalSocketImpl.cpp
+++ b/core/jni/android_net_LocalSocketImpl.cpp
@@ -35,6 +35,7 @@
#include <cutils/sockets.h>
#include <netinet/tcp.h>
+#include <ScopedUtfChars.h>
namespace android {
@@ -52,25 +53,22 @@ socket_connect_local(JNIEnv *env, jobject object,
jobject fileDescriptor, jstring name, jint namespaceId)
{
int ret;
- const char *nameUtf8;
int fd;
- nameUtf8 = env->GetStringUTFChars(name, NULL);
-
fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
if (env->ExceptionOccurred() != NULL) {
return;
}
+ ScopedUtfChars nameUtf8(env, name);
+
ret = socket_local_client_connect(
fd,
- nameUtf8,
+ nameUtf8.c_str(),
namespaceId,
SOCK_STREAM);
- env->ReleaseStringUTFChars(name, nameUtf8);
-
if (ret < 0) {
jniThrowIOException(env, errno);
return;
@@ -89,11 +87,10 @@ socket_bind_local (JNIEnv *env, jobject object, jobject fileDescriptor,
{
int ret;
int fd;
- const char *nameUtf8;
-
if (name == NULL) {
jniThrowNullPointerException(env, NULL);
+ return;
}
fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
@@ -102,11 +99,9 @@ socket_bind_local (JNIEnv *env, jobject object, jobject fileDescriptor,
return;
}
- nameUtf8 = env->GetStringUTFChars(name, NULL);
-
- ret = socket_local_server_bind(fd, nameUtf8, namespaceId);
+ ScopedUtfChars nameUtf8(env, name);
- env->ReleaseStringUTFChars(name, nameUtf8);
+ ret = socket_local_server_bind(fd, nameUtf8.c_str(), namespaceId);
if (ret < 0) {
jniThrowIOException(env, errno);
@@ -451,6 +446,7 @@ static int socket_process_cmsg(JNIEnv *env, jobject thisJ, struct msghdr * pMsg)
if (count < 0) {
jniThrowException(env, "java/io/IOException",
"invalid cmsg length");
+ return -1;
}
fdArray = env->NewObjectArray(count, class_FileDescriptor, NULL);