From 3dea1a84cc45220e86187d6a5a6a6223452043f1 Mon Sep 17 00:00:00 2001 From: Prameet Shah Date: Thu, 15 Dec 2022 13:03:05 -0800 Subject: [PATCH] Catch SqlLiteException in WatchlistReportDbHelper SQLiteOpenHelper.getReadableDatabase() and SQLiteOpenHelper.getWritableDatabase() javadocs say they can throw SQLiteException if the database cannot be opened. Updated all calls in WatchlistReportDbHelper to catch the exception. Bug: 175819413 Test: m Change-Id: I4b0d3170abe4f8b2cc2583ef8cb1e359ba2ed3b5 --- .../watchlist/WatchlistReportDbHelper.java | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/services/core/java/com/android/server/net/watchlist/WatchlistReportDbHelper.java b/services/core/java/com/android/server/net/watchlist/WatchlistReportDbHelper.java index c69934aceb754..7a96195528d5a 100644 --- a/services/core/java/com/android/server/net/watchlist/WatchlistReportDbHelper.java +++ b/services/core/java/com/android/server/net/watchlist/WatchlistReportDbHelper.java @@ -21,18 +21,16 @@ import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; import android.os.Environment; -import android.util.Pair; +import android.util.Slog; import com.android.internal.util.HexDump; import java.io.File; -import java.util.ArrayList; -import java.util.GregorianCalendar; import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Set; /** @@ -132,7 +130,13 @@ class WatchlistReportDbHelper extends SQLiteOpenHelper { */ public boolean insertNewRecord(byte[] appDigest, String cncDomain, long timestamp) { - final SQLiteDatabase db = getWritableDatabase(); + final SQLiteDatabase db; + try { + db = getWritableDatabase(); + } catch (SQLiteException e) { + Slog.e(TAG, "Error opening the database to insert a new record", e); + return false; + } final ContentValues values = new ContentValues(); values.put(WhiteListReportContract.APP_DIGEST, appDigest); values.put(WhiteListReportContract.CNC_DOMAIN, cncDomain); @@ -148,7 +152,13 @@ class WatchlistReportDbHelper extends SQLiteOpenHelper { public AggregatedResult getAggregatedRecords(long untilTimestamp) { final String selectStatement = WhiteListReportContract.TIMESTAMP + " < ?"; - final SQLiteDatabase db = getReadableDatabase(); + final SQLiteDatabase db; + try { + db = getReadableDatabase(); + } catch (SQLiteException e) { + Slog.e(TAG, "Error opening the database", e); + return null; + } Cursor c = null; try { c = db.query(true /* distinct */, @@ -186,8 +196,14 @@ class WatchlistReportDbHelper extends SQLiteOpenHelper { * @return True if success. */ public boolean cleanup(long untilTimestamp) { - final SQLiteDatabase db = getWritableDatabase(); + final SQLiteDatabase db; + try { + db = getWritableDatabase(); + } catch (SQLiteException e) { + Slog.e(TAG, "Error opening the database to cleanup", e); + return false; + } final String clause = WhiteListReportContract.TIMESTAMP + "< " + untilTimestamp; return db.delete(WhiteListReportContract.TABLE, clause, null) != 0; } -} \ No newline at end of file +}