Merge "char16 strings returned by JNIEnv::GetStringCritical are not '\0' terminated."
am: 077678590f
Change-Id: I0156dc289ab61dda9bf8330f40d678c8c2bb8163
diff --git a/core/jni/android_os_HwBinder.cpp b/core/jni/android_os_HwBinder.cpp
index 97833a0..7da0314 100644
--- a/core/jni/android_os_HwBinder.cpp
+++ b/core/jni/android_os_HwBinder.cpp
@@ -213,7 +213,9 @@
sp<hardware::IBinder> binder = JHwBinder::GetNativeContext(env, thiz);
status_t err = hardware::defaultServiceManager()->addService(
- String16(reinterpret_cast<const char16_t *>(serviceName)),
+ String16(
+ reinterpret_cast<const char16_t *>(serviceName),
+ env->GetStringLength(serviceNameObj)),
binder,
kVersion);
@@ -245,12 +247,15 @@
LOG(INFO) << "looking for service '"
<< String8(String16(
- reinterpret_cast<const char16_t *>(serviceName))).string()
+ reinterpret_cast<const char16_t *>(serviceName),
+ env->GetStringLength(serviceNameObj))).string()
<< "'";
sp<hardware::IBinder> service =
hardware::defaultServiceManager()->getService(
- String16(reinterpret_cast<const char16_t *>(serviceName)),
+ String16(
+ reinterpret_cast<const char16_t *>(serviceName),
+ env->GetStringLength(serviceNameObj)),
kVersion);
env->ReleaseStringCritical(serviceNameObj, serviceName);