Skip to content

Commit 1726460

Browse files
committed
Support SQLiteDatabase.replace
1 parent c1d38c4 commit 1726460

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

java/ql/src/semmle/code/java/security/CleartextStorageQuery.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ private predicate localDatabaseStore(DataFlow::Node database, MethodAccess store
417417
database.asExpr() = store.getQualifier()
418418
or
419419
m.getDeclaringType() instanceof TypeSQLiteDatabase and
420-
m.getName().matches(["insert%", "update%"]) and
420+
m.getName().matches(["insert%", "replace%", "update%"]) and
421421
database.asExpr() = store.getAnArgument() and
422422
database.getType() instanceof ContentValues
423423
or

java/ql/test/query-tests/security/CWE-312/CleartextStorageAndroidDatabaseTest.java

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,26 @@ public void testCleartextStorageAndroiDatabase7(String name, String password) {
7272
ContentValues cv = new ContentValues();
7373
cv.put("username", name);
7474
cv.put("password", password); // $ hasCleartextStorageAndroidDatabase
75-
db.update("table", cv, "", new String[] {});
75+
db.replace("table", null, cv);
7676
}
7777

7878
public void testCleartextStorageAndroiDatabase8(String name, String password) {
79+
SQLiteDatabase db = SQLiteDatabase.openDatabase("", null, 0);
80+
ContentValues cv = new ContentValues();
81+
cv.put("username", name);
82+
cv.put("password", password); // $ hasCleartextStorageAndroidDatabase
83+
db.replaceOrThrow("table", null, cv);
84+
}
85+
86+
public void testCleartextStorageAndroiDatabase9(String name, String password) {
87+
SQLiteDatabase db = SQLiteDatabase.openDatabase("", null, 0);
88+
ContentValues cv = new ContentValues();
89+
cv.put("username", name);
90+
cv.put("password", password); // $ hasCleartextStorageAndroidDatabase
91+
db.update("table", cv, "", new String[] {});
92+
}
93+
94+
public void testCleartextStorageAndroiDatabase10(String name, String password) {
7995
SQLiteDatabase db = SQLiteDatabase.openDatabase("", null, 0);
8096
ContentValues cv = new ContentValues();
8197
cv.put("username", name);
@@ -89,14 +105,14 @@ public void testCleartextStorageAndroiDatabaseSafe4(SQLiteDatabase db, String na
89105
SQLiteStatement stmt = db.compileStatement(query); // Safe - statement isn't executed
90106
}
91107

92-
public void testCleartextStorageAndroiDatabase9(SQLiteDatabase db, String name,
108+
public void testCleartextStorageAndroiDatabase11(SQLiteDatabase db, String name,
93109
String password) {
94110
String query = "INSERT INTO users VALUES ('" + name + "', '" + password + "');";
95111
SQLiteStatement stmt = db.compileStatement(query); // $ hasCleartextStorageAndroidDatabase
96112
stmt.executeUpdateDelete();
97113
}
98114

99-
public void testCleartextStorageAndroiDatabase10(SQLiteDatabase db, String name,
115+
public void testCleartextStorageAndroiDatabase12(SQLiteDatabase db, String name,
100116
String password) {
101117
String query = "INSERT INTO users VALUES ('" + name + "', '" + password + "');";
102118
SQLiteStatement stmt = db.compileStatement(query); // $ hasCleartextStorageAndroidDatabase

0 commit comments

Comments
 (0)