Merge "Fix exceptions causing HTC dongle (and JBL headset) to fail connection logic." into oc-dr1-dev
am: f3562ffdfb

Change-Id: I7af6e0b15e2a09c636a2d540714bfc5dd2d459f9
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java b/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java
index 303a577..d4a0ac4 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java
@@ -123,21 +123,27 @@
 
         ByteStream stream = new ByteStream(descriptors);
         while (stream.available() > 0) {
-            UsbDescriptor descriptor = allocDescriptor(stream);
+            UsbDescriptor descriptor = null;
+            try {
+                descriptor = allocDescriptor(stream);
+            } catch (Exception ex) {
+                Log.e(TAG, "Exception allocating USB descriptor.", ex);
+            }
+
             if (descriptor != null) {
                 // Parse
                 try {
                     descriptor.parseRawDescriptors(stream);
+
+                    // Its OK to add the invalid descriptor as the postParse()
+                    // routine will mark it as invalid.
+                    mDescriptors.add(descriptor);
+
+                    // Clean up
+                    descriptor.postParse(stream);
                 } catch (Exception ex) {
                     Log.e(TAG, "Exception parsing USB descriptors.", ex);
                 }
-
-                // Its OK to add the invalid descriptor as the postParse()
-                // routine will mark it as invalid.
-                mDescriptors.add(descriptor);
-
-                // Clean up
-                descriptor.postParse(stream);
             }
         }
     }