From ddb6cba69fc41836fda8173dbe259ff6f7e33790 Mon Sep 17 00:00:00 2001 From: Kunal Malhotra Date: Fri, 13 Jan 2023 23:07:30 +0000 Subject: Adding a fix for trimming any large fields before they are inserted into the DB Test: manual testing done by attempting to add an imported contact with a very large field in it Change-Id: I52814fee6c5e137809020f16f332800ef9d79099 Bug: b/262595156 b/262594744 (cherry picked from commit b915bb73ad6905bf339f5fcf8d47a8f487b0f889) Merged-In: I52814fee6c5e137809020f16f332800ef9d79099 --- src/com/android/providers/contacts/DataRowHandlerForNickname.java | 6 ++++++ .../android/providers/contacts/DataRowHandlerForOrganization.java | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/src/com/android/providers/contacts/DataRowHandlerForNickname.java b/src/com/android/providers/contacts/DataRowHandlerForNickname.java index 03b96a3a..2806cf34 100644 --- a/src/com/android/providers/contacts/DataRowHandlerForNickname.java +++ b/src/com/android/providers/contacts/DataRowHandlerForNickname.java @@ -35,9 +35,14 @@ public class DataRowHandlerForNickname extends DataRowHandlerForCommonDataKind { Nickname.LABEL); } + private void applySimpleFieldMaxSize(ContentValues cv) { + applySimpleFieldMaxSize(cv, Nickname.NAME); + } + @Override public long insert(SQLiteDatabase db, TransactionContext txContext, long rawContactId, ContentValues values) { + applySimpleFieldMaxSize(values); String nickname = values.getAsString(Nickname.NAME); long dataId = super.insert(db, txContext, rawContactId, values); @@ -53,6 +58,7 @@ public class DataRowHandlerForNickname extends DataRowHandlerForCommonDataKind { @Override public boolean update(SQLiteDatabase db, TransactionContext txContext, ContentValues values, Cursor c, boolean callerIsSyncAdapter) { + applySimpleFieldMaxSize(values); long dataId = c.getLong(DataUpdateQuery._ID); long rawContactId = c.getLong(DataUpdateQuery.RAW_CONTACT_ID); diff --git a/src/com/android/providers/contacts/DataRowHandlerForOrganization.java b/src/com/android/providers/contacts/DataRowHandlerForOrganization.java index 66a3b1bd..74f22595 100644 --- a/src/com/android/providers/contacts/DataRowHandlerForOrganization.java +++ b/src/com/android/providers/contacts/DataRowHandlerForOrganization.java @@ -22,6 +22,7 @@ import android.database.DatabaseUtils; import android.database.sqlite.SQLiteDatabase; import android.provider.ContactsContract.CommonDataKinds.Organization; import android.provider.ContactsContract.Data; + import com.android.providers.contacts.ContactsDatabaseHelper.Tables; import com.android.providers.contacts.SearchIndexManager.IndexBuilder; import com.android.providers.contacts.aggregation.AbstractContactAggregator; @@ -37,9 +38,15 @@ public class DataRowHandlerForOrganization extends DataRowHandlerForCommonDataKi Organization.CONTENT_ITEM_TYPE, Organization.TYPE, Organization.LABEL); } + private void applySimpleFieldMaxSize(ContentValues cv) { + applySimpleFieldMaxSize(cv, Organization.COMPANY); + applySimpleFieldMaxSize(cv, Organization.TITLE); + } + @Override public long insert(SQLiteDatabase db, TransactionContext txContext, long rawContactId, ContentValues values) { + applySimpleFieldMaxSize(values); String company = values.getAsString(Organization.COMPANY); String title = values.getAsString(Organization.TITLE); @@ -52,6 +59,7 @@ public class DataRowHandlerForOrganization extends DataRowHandlerForCommonDataKi @Override public boolean update(SQLiteDatabase db, TransactionContext txContext, ContentValues values, Cursor c, boolean callerIsSyncAdapter) { + applySimpleFieldMaxSize(values); if (!super.update(db, txContext, values, c, callerIsSyncAdapter)) { return false; } -- cgit v1.2.3