diff options
author | Nick Kralevich <nnk@google.com> | 2014-11-13 23:52:58 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-11-13 23:52:58 +0000 |
commit | e66c031da48b52b8d03e59476d24dfdfdfd94551 (patch) | |
tree | 8e94f88135de73600badf0f120d486a231a5fbc9 | |
parent | 99453e5742f38ca06bcd0e0c61236105432bfe10 (diff) | |
parent | c9754740a804bb6ed870dcf6ab0cb40490551b09 (diff) | |
download | frameworks_base-e66c031da48b52b8d03e59476d24dfdfdfd94551.zip frameworks_base-e66c031da48b52b8d03e59476d24dfdfdfd94551.tar.gz frameworks_base-e66c031da48b52b8d03e59476d24dfdfdfd94551.tar.bz2 |
am c9754740: Merge "fix crash on invalid base64 key" into lmp-mr1-dev
* commit 'c9754740a804bb6ed870dcf6ab0cb40490551b09':
fix crash on invalid base64 key
-rw-r--r-- | services/usb/java/com/android/server/usb/UsbDebuggingManager.java | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/services/usb/java/com/android/server/usb/UsbDebuggingManager.java b/services/usb/java/com/android/server/usb/UsbDebuggingManager.java index cc5d004..1cf00d2 100644 --- a/services/usb/java/com/android/server/usb/UsbDebuggingManager.java +++ b/services/usb/java/com/android/server/usb/UsbDebuggingManager.java @@ -207,7 +207,12 @@ public class UsbDebuggingManager implements Runnable { case MESSAGE_ADB_CONFIRM: { String key = (String)msg.obj; - mFingerprints = getFingerprints(key); + String fingerprints = getFingerprints(key); + if ("".equals(fingerprints)) { + sendResponse("NO"); + break; + } + mFingerprints = fingerprints; startConfirmation(key, mFingerprints); break; } @@ -224,16 +229,25 @@ public class UsbDebuggingManager implements Runnable { StringBuilder sb = new StringBuilder(); MessageDigest digester; + if (key == null) { + return ""; + } + try { digester = MessageDigest.getInstance("MD5"); } catch (Exception ex) { - Slog.e(TAG, "Error getting digester: " + ex); + Slog.e(TAG, "Error getting digester", ex); return ""; } byte[] base64_data = key.split("\\s+")[0].getBytes(); - byte[] digest = digester.digest(Base64.decode(base64_data, Base64.DEFAULT)); - + byte[] digest; + try { + digest = digester.digest(Base64.decode(base64_data, Base64.DEFAULT)); + } catch (IllegalArgumentException e) { + Slog.e(TAG, "error doing base64 decoding", e); + return ""; + } for (int i = 0; i < digest.length; i++) { sb.append(hex.charAt((digest[i] >> 4) & 0xf)); sb.append(hex.charAt(digest[i] & 0xf)); |