From 9ee5e7e17f7d65620f21d1a42865981e7bc56593 Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Mon, 8 Sep 2014 16:15:21 -0700 Subject: USB string descriptors are not UTF8, so it is not safe to treat them as such. Add AndroidRuntime::NewStringLatin1() to convert non-UTF8 strings to Java strings. Bug: 17427781 Change-Id: I7df1d4e94a7beebc8b1a74c0c0a163b794025ae8 --- services/core/jni/com_android_server_UsbHostManager.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'services/core/jni') diff --git a/services/core/jni/com_android_server_UsbHostManager.cpp b/services/core/jni/com_android_server_UsbHostManager.cpp index bc866d3..b051a12 100644 --- a/services/core/jni/com_android_server_UsbHostManager.cpp +++ b/services/core/jni/com_android_server_UsbHostManager.cpp @@ -77,9 +77,9 @@ static int usb_device_added(const char *devname, void* client_data) { char *serial = usb_device_get_serial(device); jstring deviceName = env->NewStringUTF(devname); - jstring manufacturerName = env->NewStringUTF(manufacturer); - jstring productName = env->NewStringUTF(product); - jstring serialNumber = env->NewStringUTF(serial); + jstring manufacturerName = AndroidRuntime::NewStringLatin1(env, manufacturer); + jstring productName = AndroidRuntime::NewStringLatin1(env, product); + jstring serialNumber = AndroidRuntime::NewStringLatin1(env, serial); jboolean result = env->CallBooleanMethod(thiz, method_beginUsbDeviceAdded, deviceName, usb_device_get_vendor_id(device), usb_device_get_product_id(device), @@ -102,7 +102,7 @@ static int usb_device_added(const char *devname, void* client_data) { if (desc->bDescriptorType == USB_DT_CONFIG) { struct usb_config_descriptor *config = (struct usb_config_descriptor *)desc; char *name = usb_device_get_string(device, config->iConfiguration); - jstring configName = env->NewStringUTF(name); + jstring configName = AndroidRuntime::NewStringLatin1(env, name); env->CallVoidMethod(thiz, method_addUsbConfiguration, config->bConfigurationValue, configName, config->bmAttributes, @@ -113,7 +113,7 @@ static int usb_device_added(const char *devname, void* client_data) { } else if (desc->bDescriptorType == USB_DT_INTERFACE) { struct usb_interface_descriptor *interface = (struct usb_interface_descriptor *)desc; char *name = usb_device_get_string(device, interface->iInterface); - jstring interfaceName = env->NewStringUTF(name); + jstring interfaceName = AndroidRuntime::NewStringLatin1(env, name); env->CallVoidMethod(thiz, method_addUsbInterface, interface->bInterfaceNumber, interfaceName, interface->bAlternateSetting, -- cgit v1.1