Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c9754740 authored by Nick Kralevich's avatar Nick Kralevich Committed by Android (Google) Code Review
Browse files

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

parents 12780933 451a6f8f
Loading
Loading
Loading
Loading
+18 −4
Original line number Original line Diff line number Diff line
@@ -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));