8000 Merge branch 'brodybits-npe-fixes' · boxer/android-database-sqlcipher@62edf6d · GitHub
[go: up one dir, main page]

Skip to content

Commit 62edf6d

Browse files
Merge branch 'brodybits-npe-fixes'
2 parents 65d27a5 + da1cc4e commit 62edf6d

File tree

2 files changed

+30
-20
lines changed

2 files changed

+30
-20
lines changed

src/net/sqlcipher/database/SQLiteDatabase.java

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,9 @@ public void changePassword(String password) throws SQLiteException {
100100
if (!isOpen()) {
101101
throw new SQLiteException("database not open");
102102
}
103-
native_rekey(password);
103+
if (password != null) {
104+
native_rekey(password);
105+
}
104106
}
105107

106108
/**
@@ -119,7 +121,9 @@ public void changePassword(char[] password) throws SQLiteException {
119121
if (!isOpen()) {
120122
throw new SQLiteException("database not open");
121123
}
122-
native_rekey(String.valueOf(password));
124+
if (password != null) {
125+
native_rekey(String.valueOf(password));
126+
}
123127
}
124128

125129
private static void loadICUData(Context context, File workingDir) {
@@ -294,6 +298,11 @@ public static synchronized void loadLibs (Context context, File workingDir) {
294298
*/
295299
public static final int CREATE_IF_NECESSARY = 0x10000000; // update native code if changing
296300

301+
/**
302+
* SQLite memory database name
303+
*/
304+
public static final String MEMORY = ":memory:";
305+
297306
/**
298307
* Indicates whether the most-recently started transaction has been marked as successful.
299308
*/
@@ -959,7 +968,7 @@ public Cursor newCursor(SQLiteDatabase db,
959968
* @throws IllegalArgumentException if the database path is null
960969
*/
961970
public static SQLiteDatabase openDatabase(String path, String password, CursorFactory factory, int flags) {
962-
return openDatabase(path, password.toCharArray(), factory, flags, null);
971+
return openDatabase(path, password, factory, flags, null);
963972
}
964973

965974
/**
@@ -981,7 +990,7 @@ public static SQLiteDatabase openDatabase(String path, String password, CursorFa
981990
* @throws IllegalArgumentException if the database path is null
982991
*/
983992
public static SQLiteDatabase openDatabase(String path, char[] password, CursorFactory factory, int flags) {
984-
return openDatabase(path, password, factory, flags, null);
993+
return openDatabase(path, password, factory, flags, null, null);
985994
}
986995

987996
/**
@@ -1005,7 +1014,7 @@ public static SQLiteDatabase openDatabase(String path, char[] password, CursorFa
10051014
* @throws IllegalArgumentException if the database path is null
10061015
*/
10071016
public static SQLiteDatabase openDatabase(String path, String password, CursorFactory factory, int flags, SQLiteDatabaseHook hook) {
1008-
return openDatabase(path, password.toCharArray(), factory, flags, hook);
1017+
return openDatabase(path, password, factory, flags, hook, null);
10091018
}
10101019

10111020
/**
@@ -1029,7 +1038,7 @@ public static SQLiteDatabase openDatabase(String path, String password, CursorFa
10291038
* @throws IllegalArgumentException if the database path is null
10301039
*/
10311040
public static SQLiteDatabase openDatabase(String path, char[] password, CursorFactory factory, int flags, SQLiteDatabaseHook hook) {
1032-
return openDatabase(path, password, factory, flags, hook, new DefaultDatabaseErrorHandler());
1041+
return openDatabase(path, password, factory, flags, hook, null);
10331042
}
10341043

10351044
/**
@@ -1056,7 +1065,7 @@ public static SQLiteDatabase openDatabase(String path, char[] password, CursorFa
10561065
*/
10571066
public static SQLiteDatabase openDatabase(String path, String password, CursorFactory factory, int flags,
10581067
SQLiteDatabaseHook hook, DatabaseErrorHandler errorHandler) {
1059-
return openDatabase(path, password.toCharArray(), factory, flags, hook, errorHandler);
1068+
return openDatabase(path, password == null ? null : password.toCharArray(), factory, flags, hook, errorHandler);
10601069
}
10611070

10621071
/**
@@ -1084,10 +1093,11 @@ public static SQLiteDatabase openDatabase(String path, String password, CursorFa
10841093
public static SQLiteDatabase openDatabase(String path, char[] password, CursorFactory factory, int flags,
10851094
SQLiteDatabaseHook hook, DatabaseErrorHandler errorHandler) {
10861095
SQLiteDatabase sqliteDatabase = null;
1096+
DatabaseErrorHandler myErrorHandler = (errorHandler != null) ? errorHandler : new DefaultDatabaseErrorHandler();
10871097

10881098
try {
10891099
// Open the database.
1090-
sqliteDatabase = new SQLiteDatabase(path, factory, flags, errorHandler);
1100+
sqliteDatabase = new SQLiteDatabase(path, factory, flags, myErrorHandler);
10911101
sqliteDatabase.openDatabaseInternal(password, hook);
10921102
} catch (SQLiteDatabaseCorruptException e) {
10931103
// Try to recover from this, if possible.
@@ -1097,10 +1107,10 @@ public static SQLiteDatabase openDatabase(String path, char[] password, CursorFa
10971107
// NOTE: if this errorHandler.onCorruption() throws the exception _should_
10981108
// bubble back to the original caller.
10991109
// DefaultDatabaseErrorHandler deletes the corrupt file, EXCEPT for memory database
1100-
errorHandler.onCorruption(sqliteDatabase);
1110+
myErrorHandler.onCorruption(sqliteDatabase);
11011111

11021112
// try *once* again:
1103-
sqliteDatabase = new SQLiteDatabase(path, factory, flags, errorHandler);
1113+
sqliteDatabase = new SQLiteDatabase(path, factory, flags, myErrorHandler);
11041114
sqliteDatabase.openDatabaseInternal(password, hook);
11051115
}
11061116

@@ -1122,7 +1132,7 @@ public static SQLiteDatabase openDatabase(String path, char[] password, CursorFa
11221132
* Equivalent to openDatabase(file.getPath(), password, factory, CREATE_IF_NECESSARY, databaseHook).
11231133
*/
11241134
public static SQLiteDatabase openOrCreateDatabase(File file, String password, CursorFactory factory, SQLiteDatabaseHook databaseHook) {
1125-
return openOrCreateDatabase(file.getPath(), password, factory, databaseHook);
1135+
return openOrCreateDatabase(file, password, factory, databaseHook, null);
11261136
}
11271137

11281138
/**
@@ -1137,12 +1147,12 @@ public static SQLiteDatabase openOrCreateDatabase(String path, String password,
11371147
*/
11381148
public static SQLiteDatabase openOrCreateDatabase(File file, String password, CursorFactory factory, SQLiteDatabaseHook databaseHook,
11391149
DatabaseErrorHandler errorHandler) {
1140-
return openDatabase(file.getPath(), password.toCharArray(), factory, CREATE_IF_NECESSARY, databaseHook, errorHandler);
1150+
return openOrCreateDatabase(file == null ? null : file.getPath(), password, factory, databaseHook, errorHandler);
11411151
}
11421152

11431153
public static SQLiteDatabase openOrCreateDatabase(String path, String password, CursorFactory factory, SQLiteDatabaseHook databaseHook,
11441154
DatabaseErrorHandler errorHandler) {
1145-
return openDatabase(path, password.toCharArray(), factory, CREATE_IF_NECESSARY, databaseHook, errorHandler);
1155+
return openDatabase(path, password == null ? null : password.toCharArray(), factory, CREATE_IF_NECESSARY, databaseHook, errorHandler);
11461156
}
11471157

11481158
public static SQLiteDatabase openOrCreateDatabase(String path, char[] password, CursorFactory factory, SQLiteDatabaseHook databaseHook) {
@@ -1158,14 +1168,14 @@ public static SQLiteDatabase openOrCreateDatabase(String path, char[] password,
11581168
* Equivalent to openDatabase(file.getPath(), password, factory, CREATE_IF_NECESSARY).
11591169
*/
11601170
public static SQLiteDatabase openOrCreateDatabase(File file, String password, CursorFactory factory) {
1161-
return openOrCreateDatabase(file.getPath(), password, factory, null);
1171+
return openOrCreateDatabase(file, password, factory, null);
11621172
}
11631173

11641174
/**
11651175
* Equivalent to openDatabase(path, password, factory, CREATE_IF_NECESSARY).
11661176
*/
11671177
public static SQLiteDatabase openOrCreateDatabase(String path, String password, CursorFactory factory) {
1168-
return openDatabase(path, password.toCharArray(), factory, CREATE_IF_NECESSARY, null);
1178+
return openDatabase(path, password, factory, CREATE_IF_NECESSARY, null);
11691179
}
11701180

11711181
/**
@@ -1192,7 +1202,7 @@ public static SQLiteDatabase openOrCreateDatabase(String path, char[] password,
11921202
*/
11931203
public static SQLiteDatabase create(CursorFactory factory, String password) {
11941204
// This is a magic string with special meaning for SQLite.
1195-
return openDatabase(":memory:", password.toCharArray(), factory, CREATE_IF_NECESSARY);
1205+
return openDatabase(MEMORY, password == null ? < 10000 /span>null : password.toCharArray(), factory, CREATE_IF_NECESSARY);
11961206
}
11971207

11981208
/**
@@ -1211,7 +1221,7 @@ public static SQLiteDatabase create(CursorFactory factory, String password) {
12111221
* @throws SQLiteException if the database cannot be opened
12121222
*/
12131223
public static SQLiteDatabase create(CursorFactory factory, char[] password) {
1214-
return openDatabase(":memory:", password, factory, CREATE_IF_NECESSARY);
1224+
return openDatabase(MEMORY, password, factory, CREATE_IF_NECESSARY);
12151225
}
12161226

12171227

@@ -2823,7 +2833,7 @@ private static ArrayList<Pair<String, String>> getAttachedDbs(SQLiteDatabase dbO
28232833

28242834
private native int native_status(int operation, boolean reset);
28252835

2826-
private native void native_key(char[] key) throws SQLException;
2836+
private native void native_key(char[] key) throws SQLException;
28272837

28282838
private native void native_rekey(String key) throws SQLException;
28292839
}

src/net/sqlcipher/database/SQLiteOpenHelper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ public SQLiteOpenHelper(Context context, String name, CursorFactory factory,
126126
*/
127127

128128
public synchronized SQLiteDatabase getWritableDatabase(String password) {
129-
return getWritableDatabase(password.toCharArray());
129+
return getWritableDatabase(password == null ? null : password.toCharArray());
130130
}
131131

132132
public synchronized SQLiteDatabase getWritableDatabase(char[] password) {
@@ -211,7 +211,7 @@ public synchronized SQLiteDatabase getWritableDatabase(char[] password) {
211211
* or {@link #close} is called.
212212
*/
213213
public synchronized SQLiteDatabase getReadableDatabase(String password) {
214-
return getReadableDatabase(password.toCharArray());
214+
return getReadableDatabase(password == null ? null : password.toCharArray());
215215
}
216216

217217
public synchronized SQLiteDatabase getReadableDatabase(char[] password) {

0 commit comments

Comments
 (0)
0