diff options
| author | Alan Viverette <alanv@google.com> | 2015-06-02 16:11:00 -0700 |
|---|---|---|
| committer | Alan Viverette <alanv@google.com> | 2015-06-02 16:11:00 -0700 |
| commit | a70d4a90a029910f788c3e7f8715cf3b842b1e2b (patch) | |
| tree | 9c7e3361c9606a66c9da091b5530809b4161d608 /core/java/android/text/ParcelableSpan.java | |
| parent | 5431000830551959db15038da8f057c2e993d01a (diff) | |
| download | frameworks_base-a70d4a90a029910f788c3e7f8715cf3b842b1e2b.zip frameworks_base-a70d4a90a029910f788c3e7f8715cf3b842b1e2b.tar.gz frameworks_base-a70d4a90a029910f788c3e7f8715cf3b842b1e2b.tar.bz2 | |
Prevent poorly-extended ParcelableSpans from writing to parcels
If a developer extends an existing ParcelableSpan and overwrites
writeToParcel, TextUtils will crash when attempting to unparcel
since the span type ID is not accurate. This CL makes a separate
framework-private method for writeToParcel to ensure that even if
a developer extends a ParcelableSpan class, they won't modify the
parceling or unparceling code that's tied to the span type ID.
Bug: 21274544
Change-Id: If4c3506a55999df7a3b6d87cb8d550235d7a02c6
Diffstat (limited to 'core/java/android/text/ParcelableSpan.java')
| -rw-r--r-- | core/java/android/text/ParcelableSpan.java | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/core/java/android/text/ParcelableSpan.java b/core/java/android/text/ParcelableSpan.java index 224511a..d7c1a4b 100644 --- a/core/java/android/text/ParcelableSpan.java +++ b/core/java/android/text/ParcelableSpan.java @@ -16,6 +16,7 @@ package android.text; +import android.os.Parcel; import android.os.Parcelable; /** @@ -27,5 +28,21 @@ public interface ParcelableSpan extends Parcelable { /** * Return a special type identifier for this span class. */ - public abstract int getSpanTypeId(); + int getSpanTypeId(); + + /** + * Internal implementation of {@link #getSpanTypeId()} that is not meant to + * be overridden outside of the framework. + * + * @hide + */ + int getSpanTypeIdInternal(); + + /** + * Internal implementation of {@link Parcelable#writeToParcel(Parcel, int)} + * that is not meant to be overridden outside of the framework. + * + * @hide + */ + void writeToParcelInternal(Parcel dest, int flags); } |
