Skip to content

Commit 0c387e4

Browse files
authored
Fixed error with changing execute statements in SQLi codemods (#494)
1 parent 6a7eedf commit 0c387e4

File tree

10 files changed

+20
-23
lines changed

10 files changed

+20
-23
lines changed

core-codemods/src/test/resources/defectdojo-sql-injection/SqlInjectionChallenge/SqlInjectionChallenge.java.after

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public class SqlInjectionChallenge extends AssignmentEndpoint {
6969
PreparedStatement statement = connection.prepareStatement(checkUserQuery);
7070
statement.setString(1, username_reg);
7171

72-
ResultSet resultSet = statement.execute();
72+
ResultSet resultSet = statement.executeQuery();
7373
if (resultSet.next()) {
7474
if (username_reg.contains("tom'")) {
7575
attackResult = success(this).feedback("user.exists").build();

core-codemods/src/test/resources/defectdojo-sql-injection/SqlInjectionLesson8/SqlInjectionLesson8.java.after

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public class SqlInjectionLesson8 extends AssignmentEndpoint {
7575
statement.setString(1, name);
7676

7777
statement.setString(2, auth_tan);
78-
ResultSet results = statement.execute();
78+
ResultSet results = statement.executeQuery();
7979
if (results.getStatement() != null) {
8080
if (results.first()) {
8181
output.append(generateTable(results));
@@ -155,7 +155,7 @@ public class SqlInjectionLesson8 extends AssignmentEndpoint {
155155
PreparedStatement statement = connection.prepareStatement(logQuery, TYPE_SCROLL_SENSITIVE, CONCUR_UPDATABLE);
156156
statement.setString(1, sdf.format(cal.getTime()));
157157
statement.setString(2, action);
158-
statement.execute();
158+
statement.executeUpdate();
159159
} catch (SQLException e) {
160160
System.err.println(e.getMessage());
161161
}

core-codemods/src/test/resources/semgrep-sql-injection-formatted-sql-string/SqlInjectionLesson5a.java.after

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public class SqlInjectionLesson5a extends AssignmentEndpoint {
6767
query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE)) {
6868
statement.setString(1, accountName);
6969

70-
ResultSet results = statement.execute();
70+
ResultSet results = statement.executeQuery();
7171
if ((results != null) && (results.first())) {
7272
ResultSetMetaData resultsMetaData = results.getMetaData();
7373
StringBuilder output = new StringBuilder();

core-codemods/src/test/resources/semgrep-sql-injection/SqlInjectionLesson8.java.after

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public class SqlInjectionLesson8 extends AssignmentEndpoint {
7575
statement.setString(1, name);
7676

7777
statement.setString(2, auth_tan);
78-
ResultSet results = statement.execute();
78+
ResultSet results = statement.executeQuery();
7979
if (results.getStatement() != null) {
8080
if (results.first()) {
8181
output.append(generateTable(results));
@@ -155,7 +155,7 @@ public class SqlInjectionLesson8 extends AssignmentEndpoint {
155155
PreparedStatement statement = connection.prepareStatement(logQuery, TYPE_SCROLL_SENSITIVE, CONCUR_UPDATABLE);
156156
statement.setString(1, sdf.format(cal.getTime()));
157157
statement.setString(2, action);
158-
statement.execute();
158+
statement.executeUpdate();
159159
} catch (SQLException e) {
160160
System.err.println(e.getMessage());
161161
}

core-codemods/src/test/resources/sonar-sql-injection-s2077/supported/SqlInjectionChallenge.java.after

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public class SqlInjectionChallenge extends AssignmentEndpoint {
6969
PreparedStatement statement = connection.prepareStatement(checkUserQuery);
7070
statement.setString(1, username_reg);
7171

72-
ResultSet resultSet = statement.execute();
72+
ResultSet resultSet = statement.executeQuery();
7373
if (resultSet.next()) {
7474
if (username_reg.contains("tom'")) {
7575
attackResult = success(this).feedback("user.exists").build();

core-codemods/src/test/resources/sonar-sql-injection-s2077/supportedMixedInjections/SQLTestMixed.java.after

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public final class SQLTestMixed {
1818
String sql = "SELECT * FROM " + validateTableName(input + "") + " where name=?" ;
1919
PreparedStatement stmt = conn.prepareStatement(sql);
2020
stmt.setString(1, scanner.nextLine());
21-
return stmt.execute();
21+
return stmt.executeQuery();
2222
}
2323

2424
String validateTableName(final String tablename) {

core-codemods/src/test/resources/sonar-sql-injection-s3649/SqlInjectionChallenge.java.after

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public class SqlInjectionChallenge extends AssignmentEndpoint {
6969
PreparedStatement statement = connection.prepareStatement(checkUserQuery);
7070
statement.setString(1, username_reg);
7171

72-
ResultSet resultSet = statement.execute();
72+
ResultSet resultSet = statement.executeQuery();
7373
if (resultSet.next()) {
7474
if (username_reg.contains("tom'")) {
7575
attackResult = success(this).feedback("user.exists").build();

core-codemods/src/test/resources/sql-parameterizer/defaultTransformation/Test.java.after

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ public final class Test {
1414
String sql = "SELECT * FROM USERS WHERE USER = ?";
1515
PreparedStatement stmt = conn.prepareStatement(sql);
1616
stmt.setString(1, input);
17-
return stmt.execute();
17+
return stmt.executeQuery();
1818
}
1919

2020
public ResultSet directStatement(String input) throws SQLException {
2121
String sql = "SELECT * FROM USERS WHERE USER = ?";
2222
PreparedStatement stmt = conn.prepareStatement(sql);
2323
stmt.setString(1, input);
24-
var rs = stmt.execute();
24+
var rs = stmt.executeQuery();
2525
return rs;
2626
}
2727

@@ -30,7 +30,7 @@ public final class Test {
3030
String sql = "SELECT * FROM USERS WHERE USER = ?";
3131
PreparedStatement statement = conn.prepareStatement(sql);
3232
statement.setString(1, input);
33-
ResultSet rs = statement.execute();
33+
ResultSet rs = statement.executeQuery();
3434
stmt++;
3535
return rs;
3636
}
@@ -41,7 +41,7 @@ public final class Test {
4141
String sql = "SELECT * FROM USERS WHERE USER = ?";
4242
PreparedStatement stmt1 = conn.prepareStatement(sql);
4343
stmt1.setString(1, input);
44-
ResultSet rs = stmt1.execute();
44+
ResultSet rs = stmt1.executeQuery();
4545
stmt = stmt + statement;
4646
return rs;
4747
}
@@ -50,7 +50,7 @@ public final class Test {
5050
String sql = "SELECT * FROM USERS WHERE USER = ?";
5151
try(PreparedStatement stmt = conn.prepareStatement(sql) ){
5252
stmt.setString(1, input);
53-
try (ResultSet rs = stmt.execute()) {
53+
try (ResultSet rs = stmt.executeQuery()) {
5454
return rs;
5555
}
5656
}
@@ -61,14 +61,14 @@ public final class Test {
6161
PreparedStatement stmt = conn.prepareStatement(sql);
6262
stmt.setString(1, "user_" + input + "_name");
6363
stmt.setString(2, input2);
64-
return stmt.execute();
64+
return stmt.executeQuery();
6565
}
6666

6767
public ResultSet referencesAfterExecute(String input) throws SQLException {
6868
String sql = "SELECT * FROM USERS WHERE USER = ?";
6969
PreparedStatement stmt = conn.prepareStatement(sql);
7070
stmt.setString(1, input);
71-
var rs = stmt.execute();
71+
var rs = stmt.executeQuery();
7272
System.out.println(sql);
7373
return rs;
7474
}
@@ -78,7 +78,7 @@ public final class Test {
7878
sql = "SELECT * FROM USERS WHERE USER = ?";
7979
PreparedStatement stmt = conn.prepareStatement(sql);
8080
stmt.setString(1, input);
81-
var rs = stmt.execute();
81+
var rs = stmt.executeQuery();
8282
return rs;
8383
}
8484

@@ -88,7 +88,7 @@ public final class Test {
8888
try {
8989
stmt = conn.prepareStatement(sql);
9090
stmt.setString(1, input);
91-
ResultSet rs = stmt.execute();
91+
ResultSet rs = stmt.executeQuery();
9292
return rs;
9393
} catch (Exception e) {
9494
}

core-codemods/src/test/resources/sql-parameterizer/hijackTransformation/Test.java.after

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public final class Test {
1515
String query2 = "SELECT * FROM users WHERE username = ?";
1616
PreparedStatement statement = conn.prepareStatement(query2);
1717
statement.setString(1, request.getParameter("username"));
18-
ResultSet rs2 = statement.execute();
18+
ResultSet rs2 = statement.executeQuery();
1919
stmt = statement;
2020
while (rs2.next()) {
2121
System.out.println("User: " + rs2.getString("username"));
@@ -24,7 +24,7 @@ public final class Test {
2424
stmt.close();
2525
PreparedStatement stmt1 = conn.prepareStatement(query3);
2626
stmt1.setString(1, request.getParameter("email"));
27-
ResultSet rs3 = stmt1.execute();
27+
ResultSet rs3 = stmt1.executeQuery();
2828
stmt = stmt1;
2929
while (rs3.next()) {
3030
System.out.println("User: " + rs3.getString("username"));

framework/codemodder-base/src/main/java/io/codemodder/remediation/sqlinjection/SQLParameterizer.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,6 @@ private MethodCallExpr fix(
524524
var topStatement = gatherAndSetParameters(stmtName, executeStmt, queryParameterizer);
525525

526526
// (3)
527-
executeCall.setName("execute");
528527
executeCall.setScope(new NameExpr(stmtName));
529528
executeCall.setArguments(new NodeList<>());
530529

@@ -723,9 +722,7 @@ private MethodCallExpr fixByHijackedStatement(
723722
ASTTransforms.addStatementBeforeStatement(topStatement, closeOriginal);
724723
}
725724

726-
// TODO will this work for every type of execute statement? or just executeQuery?
727725
// change execute statement
728-
executeCall.setName("execute");
729726
executeCall.setScope(new NameExpr(pStmtName));
730727
executeCall.setArguments(new NodeList<>());
731728

0 commit comments

Comments
 (0)