summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Kralevich <nnk@google.com>2014-11-13 23:52:58 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-11-13 23:52:58 +0000
commite66c031da48b52b8d03e59476d24dfdfdfd94551 (patch)
tree8e94f88135de73600badf0f120d486a231a5fbc9
parent99453e5742f38ca06bcd0e0c61236105432bfe10 (diff)
parentc9754740a804bb6ed870dcf6ab0cb40490551b09 (diff)
downloadframeworks_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.java22
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));