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);