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
This commit is contained in:
Tadashi G. Takaoka 2013-11-15 15:26:45 +09:00
parent 2bf3a77814
commit be734d298a

View file

@ -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);