From be734d298aeb716af6fc3848cb955ec0660b40b6 Mon Sep 17 00:00:00 2001
From: "Tadashi G. Takaoka" <takaoka@google.com>
Date: Fri, 15 Nov 2013 15:26:45 +0900
Subject: [PATCH] Return copied String array from getStringArray method

In the Key class constructor, elements in a String[] instance returned
from DeclaredKeyStyle.getStringArray() may be altered by
KeySpecParser.get(Int|Boolean)Value methods.

Bug: 11245712
Change-Id: I3a7fc5ccdb2a14efb72c402dd11559ab13e08596
---
 .../android/inputmethod/keyboard/internal/KeyStylesSet.java   | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyStylesSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyStylesSet.java
index 05d855e313..f7e43a6c2a 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyStylesSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyStylesSet.java
@@ -27,6 +27,7 @@ import com.android.inputmethod.latin.utils.XmlParseUtils;
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
+import java.util.Arrays;
 import java.util.HashMap;
 
 public final class KeyStylesSet {
@@ -90,7 +91,8 @@ public final class KeyStylesSet {
             }
             final Object value = mStyleAttributes.get(index);
             if (value != null) {
-                return (String[])value;
+                final String[] array = (String[])value;
+                return Arrays.copyOf(array, array.length);
             }
             final KeyStyle parentStyle = mStyles.get(mParentStyleName);
             return parentStyle.getStringArray(a, index);
-- 
GitLab