diff options
| author | Qi Wang <zakwang@google.com> | 2021-04-25 20:36:45 +0800 |
|---|---|---|
| committer | Qi Wang <zakwang@google.com> | 2021-04-26 10:06:37 +0800 |
| commit | cfa318ee4d9b64009dfcd5ec23c992b5c202d9a8 (patch) | |
| tree | e3933a26b7e14a028e4ea16f4fc0b5c5ffe29f95 /core/java/android/widget/SpellChecker.java | |
| parent | 15565a139c2dc1f9fdfb37d53392254af5e61669 (diff) | |
Validate spell checker suggestions before applying.
Fix: 185786752
Test: atest CtsInputMethodTestCases:SpellCheckerTest
Change-Id: Icf447fc3ab174bc17af0e823b830f5abef6071df
Diffstat (limited to 'core/java/android/widget/SpellChecker.java')
| -rw-r--r-- | core/java/android/widget/SpellChecker.java | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/core/java/android/widget/SpellChecker.java b/core/java/android/widget/SpellChecker.java index a16c1519e4d0..7c04b1cc195b 100644 --- a/core/java/android/widget/SpellChecker.java +++ b/core/java/android/widget/SpellChecker.java @@ -461,7 +461,7 @@ public class SpellChecker implements SpellCheckerSessionListener { @Override public void onGetSentenceSuggestions(SentenceSuggestionsInfo[] results) { final Editable editable = (Editable) mTextView.getText(); - + final int sentenceLength = editable.length(); for (int i = 0; i < results.length; ++i) { final SentenceSuggestionsInfo ssi = results[i]; if (ssi == null) { @@ -475,6 +475,9 @@ public class SpellChecker implements SpellCheckerSessionListener { } final int offset = ssi.getOffsetAt(j); final int length = ssi.getLengthAt(j); + if (offset < 0 || offset + length > sentenceLength) { + continue; + } final SpellCheckSpan scs = onGetSuggestionsInternal( suggestionsInfo, offset, length); if (spellCheckSpan == null && scs != null) { |
