diff options
author | Yorke Lee <yorkelee@google.com> | 2014-08-15 15:02:25 -0700 |
---|---|---|
committer | Yorke Lee <yorkelee@google.com> | 2014-08-18 12:36:21 -0700 |
commit | 89c3c5706ca0b4b061b3f3a1a7ee27d9c0e43d60 (patch) | |
tree | 704ea547a3f48755ed23ea16d8a5ad43916d7eeb /src/com | |
parent | 0d5e753d44534aaaf0d23b5ccf964db35217236c (diff) | |
download | packages_providers_ContactsProvider-89c3c5706ca0b4b061b3f3a1a7ee27d9c0e43d60.zip packages_providers_ContactsProvider-89c3c5706ca0b4b061b3f3a1a7ee27d9c0e43d60.tar.gz packages_providers_ContactsProvider-89c3c5706ca0b4b061b3f3a1a7ee27d9c0e43d60.tar.bz2 |
Add a maximum length check when inserting or updating phone numbers
Bug: 14307606
Change-Id: Id17a122cb9e86f9ae64232773869cb2108754ed0
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/providers/contacts/ContactsProvider2.java | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java index 049df45..2affd69 100644 --- a/src/com/android/providers/contacts/ContactsProvider2.java +++ b/src/com/android/providers/contacts/ContactsProvider2.java @@ -242,6 +242,9 @@ public class ContactsProvider2 extends AbstractContactsProvider /** Rate limit (in milliseconds) for photo cleanup. Do it at most once per day. */ private static final int PHOTO_CLEANUP_RATE_LIMIT = 24 * 60 * 60 * 1000; + /** Maximum length of a phone number that can be inserted into the database */ + private static final int PHONE_NUMBER_LENGTH_LIMIT = 1000; + /** * Default expiration duration for pre-authorized URIs. May be overridden from a secure * setting. @@ -2805,6 +2808,10 @@ public class ContactsProvider2 extends AbstractContactsProvider throw new IllegalArgumentException(Data.MIMETYPE + " is required"); } + if (Phone.CONTENT_ITEM_TYPE.equals(mimeType)) { + maybeTrimLongPhoneNumber(inputValues); + } + // The input seem valid, create a shallow copy. final ContentValues values = new ContentValues(inputValues); @@ -4468,6 +4475,13 @@ public class ContactsProvider2 extends AbstractContactsProvider return count; } + private void maybeTrimLongPhoneNumber(ContentValues values) { + final String data1 = values.getAsString(Data.DATA1); + if (data1 != null && data1.length() > PHONE_NUMBER_LENGTH_LIMIT) { + values.put(Data.DATA1, data1.substring(0, PHONE_NUMBER_LENGTH_LIMIT)); + } + } + private int updateData(ContentValues values, Cursor c, boolean callerIsSyncAdapter) { if (values.size() == 0) { return 0; @@ -4476,6 +4490,10 @@ public class ContactsProvider2 extends AbstractContactsProvider final SQLiteDatabase db = mDbHelper.get().getWritableDatabase(); final String mimeType = c.getString(DataRowHandler.DataUpdateQuery.MIMETYPE); + if (Phone.CONTENT_ITEM_TYPE.equals(mimeType)) { + maybeTrimLongPhoneNumber(values); + } + DataRowHandler rowHandler = getDataRowHandler(mimeType); boolean updated = rowHandler.update(db, mTransactionContext.get(), values, c, |