Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f2ed5861 authored by d34d's avatar d34d Committed by Steve Kondik
Browse files

Spam: Close writable DB after use

Writable DBs in the SpamMessageProvider were not being closed due
to the way the methods were chained together.  This patch gets an
instance of a writable SQLiteDatabase and then closes that instance
after performing the required operations.

This patch also removes the moveToFirst call in the MESSAGE query.

Change-Id: Ibe29aaa553b9c1d06cd39bf6c95d6d6f571b9f12
parent a5ab708c
Loading
Loading
Loading
Loading
+14 −5
Original line number Original line Diff line number Diff line
@@ -69,7 +69,6 @@ public class SpamMessageProvider extends ContentProvider {
            SQLiteDatabase db = mDbHelper.getReadableDatabase();
            SQLiteDatabase db = mDbHelper.getReadableDatabase();
            Cursor ret = qb.query(db, new String[]{NotificationTable.TABLE_NAME + ".*"},
            Cursor ret = qb.query(db, new String[]{NotificationTable.TABLE_NAME + ".*"},
                    selection, selectionArgs, null, null, null);
                    selection, selectionArgs, null, null, null);
            ret.moveToFirst();
            return ret;
            return ret;
        case MESSAGE_FOR_ID:
        case MESSAGE_FOR_ID:
            qb = new SQLiteQueryBuilder();
            qb = new SQLiteQueryBuilder();
@@ -118,8 +117,10 @@ public class SpamMessageProvider extends ContentProvider {
            values.clear();
            values.clear();
            values.put(PackageTable.PACKAGE_NAME, packageName);
            values.put(PackageTable.PACKAGE_NAME, packageName);
            long packageId = getPackageId(packageName);
            long packageId = getPackageId(packageName);
            SQLiteDatabase writableDb = null;
            if (packageId == -1) {
            if (packageId == -1) {
                packageId = mDbHelper.getWritableDatabase().insert(
                writableDb = mDbHelper.getWritableDatabase();
                packageId = writableDb.insert(
                        PackageTable.TABLE_NAME, null, values);
                        PackageTable.TABLE_NAME, null, values);
            }
            }
            if (packageId != -1) {
            if (packageId != -1) {
@@ -133,6 +134,8 @@ public class SpamMessageProvider extends ContentProvider {
                        null, values);
                        null, values);
                notifyChange();
                notifyChange();
            }
            }
            // Close the writable DB if non-null
            if (writableDb != null) writableDb.close();
            return null;
            return null;
        default:
        default:
            return null;
            return null;
@@ -148,8 +151,10 @@ public class SpamMessageProvider extends ContentProvider {
                NotificationTable.TABLE_NAME, NotificationTable.PACKAGE_ID + "=?",
                NotificationTable.TABLE_NAME, NotificationTable.PACKAGE_ID + "=?",
                new String[]{String.valueOf(packageId)});
                new String[]{String.valueOf(packageId)});
        if (numEntries == 0) {
        if (numEntries == 0) {
            mDbHelper.getWritableDatabase().delete(PackageTable.TABLE_NAME, PackageTable.ID + "=?",
            SQLiteDatabase writableDb = mDbHelper.getWritableDatabase();
            writableDb.delete(PackageTable.TABLE_NAME, PackageTable.ID + "=?",
                    new String[]{String.valueOf(packageId)});
                    new String[]{String.valueOf(packageId)});
            writableDb.close();
        }
        }
    }
    }


@@ -168,8 +173,10 @@ public class SpamMessageProvider extends ContentProvider {
                }
                }
                idCursor.close();
                idCursor.close();
            }
            }
            int result = mDbHelper.getWritableDatabase().delete(NotificationTable.TABLE_NAME,
            SQLiteDatabase writableDb = mDbHelper.getWritableDatabase();
            int result = writableDb.delete(NotificationTable.TABLE_NAME,
                    NotificationTable.ID + "=?", new String[]{uri.getLastPathSegment()});
                    NotificationTable.ID + "=?", new String[]{uri.getLastPathSegment()});
            writableDb.close();
            removePackageIfNecessary(packageId);
            removePackageIfNecessary(packageId);
            notifyChange();
            notifyChange();
            return result;
            return result;
@@ -185,7 +192,9 @@ public class SpamMessageProvider extends ContentProvider {
        case MESSAGE_UPDATE_COUNT:
        case MESSAGE_UPDATE_COUNT:
            String formattedQuery = String.format(UPDATE_COUNT_QUERY,
            String formattedQuery = String.format(UPDATE_COUNT_QUERY,
                    System.currentTimeMillis(), uri.getLastPathSegment());
                    System.currentTimeMillis(), uri.getLastPathSegment());
            mDbHelper.getWritableDatabase().execSQL(formattedQuery);
            SQLiteDatabase writableDb = mDbHelper.getWritableDatabase();
            writableDb.execSQL(formattedQuery);
            writableDb.close();
            notifyChange();
            notifyChange();
            return 0;
            return 0;
        default:
        default: