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

Commit d9729d1d authored by Chris Thornton's avatar Chris Thornton
Browse files

Fix NPE in KeyphraseEnrollmentInfo.toString()

If there are no enrollment applications on the system, but someone still
makes a KeyphraseEnrollmentInfo and tries to print it, it would generate
a NPE on a map object. Instead of setting the map to null when we don't
find any enrollment applications, we can just set it to an empty map.

Bug:28622866
Change-Id: I023e6fd90effd3143c19817a0d6637a013bebc31
parent f8892359
Loading
Loading
Loading
Loading
+11 −12
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -105,7 +106,7 @@ public class KeyphraseEnrollmentInfo {
        if (ris == null || ris.isEmpty()) {
            // No application capable of enrolling for voice keyphrases is present.
            mParseError = "No enrollment applications found";
            mKeyphrasePackageMap = null;
            mKeyphrasePackageMap = Collections.<KeyphraseMetadata, String>emptyMap();
            mKeyphrases = null;
            return;
        }
@@ -328,10 +329,7 @@ public class KeyphraseEnrollmentInfo {
     *         and locale, null otherwise.
     */
    public KeyphraseMetadata getKeyphraseMetadata(String keyphrase, Locale locale) {
        if (mKeyphrases == null || mKeyphrases.length == 0) {
            Slog.w(TAG, "Enrollment application doesn't support keyphrases");
            return null;
        }
        if (mKeyphrases != null && mKeyphrases.length > 0) {
          for (KeyphraseMetadata keyphraseMetadata : mKeyphrases) {
              // Check if the given keyphrase is supported in the locale provided by
              // the enrollment application.
@@ -340,6 +338,7 @@ public class KeyphraseEnrollmentInfo {
                  return keyphraseMetadata;
              }
          }
        }
        Slog.w(TAG, "No Enrollment application supports the given keyphrase/locale");
        return null;
    }