Skip to content

Commit 73812d4

Browse files
authored
Merge pull request #20 from topcoder-platform/CORE-140
feat: increase raw query length limit
2 parents a9e5527 + f752f23 commit 73812d4

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

src/main/java/com/topcoder/dal/DBAccessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ private Row rawQueryMapper(ResultSet rs, int rowNum) throws SQLException {
126126
case java.sql.Types.BIGINT -> valueBuilder.setLongValue(rs.getLong(i + 1));
127127
case java.sql.Types.FLOAT -> valueBuilder.setFloatValue(rs.getFloat(i + 1));
128128
case java.sql.Types.DOUBLE -> valueBuilder.setDoubleValue(rs.getDouble(i + 1));
129-
case java.sql.Types.VARCHAR ->
129+
case java.sql.Types.VARCHAR, java.sql.Types.CHAR ->
130130
valueBuilder.setStringValue(Objects.requireNonNullElse(rs.getString(i + 1), ""));
131131
case java.sql.Types.BOOLEAN -> valueBuilder.setBooleanValue(rs.getBoolean(i + 1));
132132
case java.sql.Types.DATE, java.sql.Types.TIMESTAMP -> valueBuilder

src/main/java/com/topcoder/dal/util/QueryHelper.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,23 +192,24 @@ public static String sanitizeSQLStatement(String sql) {
192192
}
193193

194194
// Limit the length of the SQL statement to prevent very long strings
195-
if (sql.length() > 1000) {
195+
if (sql.length() > 2000) {
196196
throw new IllegalArgumentException("SQL statement length exceeds the allowed limit");
197197
}
198198

199199
// Whitelist characters
200200
StringBuilder safeSQL = new StringBuilder();
201201
for (char c : sql.toCharArray()) {
202202
if (Character.isLetterOrDigit(c) || c == ' ' || c == ',' || c == '(' || c == ')' || c == '=' || c == '<'
203-
|| c == '>' || c == '_' || c == ':' || c == '.' || c == '-' || c == '+' || c == '*' || c == '\'') {
203+
|| c == '>' || c == '_' || c == ':' || c == '.' || c == '-' || c == '+' || c == '*' || c == '\''
204+
|| c == '!') {
204205
safeSQL.append(c);
205206
}
206207
}
207208
sql = safeSQL.toString();
208209

209210
// replace single quotes with two single quotes to prevent SQL injection through
210211
// strings
211-
sql = sql.replace("'", "''");
212+
// sql = sql.replace("'", "''");
212213

213214
return sql;
214215
}

0 commit comments

Comments
 (0)