summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorYorke Lee <yorkelee@google.com>2014-08-15 15:02:25 -0700
committerYorke Lee <yorkelee@google.com>2014-08-18 12:36:21 -0700
commit89c3c5706ca0b4b061b3f3a1a7ee27d9c0e43d60 (patch)
tree704ea547a3f48755ed23ea16d8a5ad43916d7eeb /src/com
parent0d5e753d44534aaaf0d23b5ccf964db35217236c (diff)
downloadpackages_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.java18
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,