Merge "fix crash on invalid base64 key" into lmp-mr1-dev

This commit is contained in:
Nick Kralevich
2014-11-13 22:37:01 +00:00
committed by Android (Google) Code Review

View File

@@ -207,7 +207,12 @@ public class UsbDebuggingManager implements Runnable {
case MESSAGE_ADB_CONFIRM: { case MESSAGE_ADB_CONFIRM: {
String key = (String)msg.obj; String key = (String)msg.obj;
mFingerprints = getFingerprints(key); String fingerprints = getFingerprints(key);
if ("".equals(fingerprints)) {
sendResponse("NO");
break;
}
mFingerprints = fingerprints;
startConfirmation(key, mFingerprints); startConfirmation(key, mFingerprints);
break; break;
} }
@@ -224,16 +229,25 @@ public class UsbDebuggingManager implements Runnable {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
MessageDigest digester; MessageDigest digester;
if (key == null) {
return "";
}
try { try {
digester = MessageDigest.getInstance("MD5"); digester = MessageDigest.getInstance("MD5");
} catch (Exception ex) { } catch (Exception ex) {
Slog.e(TAG, "Error getting digester: " + ex); Slog.e(TAG, "Error getting digester", ex);
return ""; return "";
} }
byte[] base64_data = key.split("\\s+")[0].getBytes(); 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++) { for (int i = 0; i < digest.length; i++) {
sb.append(hex.charAt((digest[i] >> 4) & 0xf)); sb.append(hex.charAt((digest[i] >> 4) & 0xf));
sb.append(hex.charAt(digest[i] & 0xf)); sb.append(hex.charAt(digest[i] & 0xf));