From 330ec91e02406ba0d62e5672c6f0e2ed271f6898 Mon Sep 17 00:00:00 2001 From: Jeff Brown Date: Thu, 19 Apr 2012 19:44:43 -0700 Subject: [PATCH] Check whether db was really opened read/write. Bug: 6176510 Change-Id: I7aeeb4340e55d554a57bb46c3c27ab37186f7e3a --- core/jni/android_database_SQLiteConnection.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/jni/android_database_SQLiteConnection.cpp b/core/jni/android_database_SQLiteConnection.cpp index fca5f20dddcec..0777ea2b18596 100644 --- a/core/jni/android_database_SQLiteConnection.cpp +++ b/core/jni/android_database_SQLiteConnection.cpp @@ -120,6 +120,13 @@ static jint nativeOpen(JNIEnv* env, jclass clazz, jstring pathStr, jint openFlag return 0; } + // Check that the database is really read/write when that is what we asked for. + if ((sqliteFlags & SQLITE_OPEN_READWRITE) && sqlite3_db_readonly(db, NULL)) { + throw_sqlite3_exception(env, db, "Could not open the database in read/write mode."); + sqlite3_close(db); + return 0; + } + // Set the default busy handler to retry for 1000ms and then return SQLITE_BUSY err = sqlite3_busy_timeout(db, 1000 /* ms */); if (err != SQLITE_OK) {