Merge "Fixing DatabaseUtils to detect malformed UTF-16 strings" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
0dcc5c6eb5
@@ -511,17 +511,31 @@ public class DatabaseUtils {
|
|||||||
*/
|
*/
|
||||||
public static void appendEscapedSQLString(StringBuilder sb, String sqlString) {
|
public static void appendEscapedSQLString(StringBuilder sb, String sqlString) {
|
||||||
sb.append('\'');
|
sb.append('\'');
|
||||||
if (sqlString.indexOf('\'') != -1) {
|
int length = sqlString.length();
|
||||||
int length = sqlString.length();
|
for (int i = 0; i < length; i++) {
|
||||||
for (int i = 0; i < length; i++) {
|
char c = sqlString.charAt(i);
|
||||||
char c = sqlString.charAt(i);
|
if (Character.isHighSurrogate(c)) {
|
||||||
if (c == '\'') {
|
if (i == length - 1) {
|
||||||
sb.append('\'');
|
continue;
|
||||||
|
}
|
||||||
|
if (Character.isLowSurrogate(sqlString.charAt(i + 1))) {
|
||||||
|
// add them both
|
||||||
|
sb.append(c);
|
||||||
|
sb.append(sqlString.charAt(i + 1));
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
// this is a lone surrogate, skip it
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
sb.append(c);
|
|
||||||
}
|
}
|
||||||
} else
|
if (Character.isLowSurrogate(c)) {
|
||||||
sb.append(sqlString);
|
continue;
|
||||||
|
}
|
||||||
|
if (c == '\'') {
|
||||||
|
sb.append('\'');
|
||||||
|
}
|
||||||
|
sb.append(c);
|
||||||
|
}
|
||||||
sb.append('\'');
|
sb.append('\'');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user