diff options
| author | 2023-07-28 01:58:02 +0000 | |
|---|---|---|
| committer | 2023-07-28 01:58:02 +0000 | |
| commit | ceacb727a481565e77a0ccf79daa0193b70397e0 (patch) | |
| tree | a9361823ed204cfed8b159cf953db4dba2a5ed8d | |
| parent | 7d2065df8a315a4def4b4c210f40b721f928ae4d (diff) | |
| parent | 2b3e7ada29a1a444f8e64b133f838277a1db9ace (diff) | |
Merge "Fixing DatabaseUtils to detect malformed UTF-16 strings" into rvc-dev am: 0dcc5c6eb5 am: 799e127b0b am: ddc2eb9d24 am: 16658a145e am: 2b3e7ada29
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24057913
Change-Id: Ibae9f4593ce4fb917584f3fd503f82ac457c4b7f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | core/java/android/database/DatabaseUtils.java | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/core/java/android/database/DatabaseUtils.java b/core/java/android/database/DatabaseUtils.java index 6c8a8500e4e3..d41df4f49d48 100644 --- a/core/java/android/database/DatabaseUtils.java +++ b/core/java/android/database/DatabaseUtils.java @@ -511,17 +511,31 @@ public class DatabaseUtils { */ public static void appendEscapedSQLString(StringBuilder sb, String sqlString) { sb.append('\''); - if (sqlString.indexOf('\'') != -1) { - int length = sqlString.length(); - for (int i = 0; i < length; i++) { - char c = sqlString.charAt(i); - if (c == '\'') { - sb.append('\''); + int length = sqlString.length(); + for (int i = 0; i < length; i++) { + char c = sqlString.charAt(i); + if (Character.isHighSurrogate(c)) { + if (i == length - 1) { + 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 - sb.append(sqlString); + if (Character.isLowSurrogate(c)) { + continue; + } + if (c == '\'') { + sb.append('\''); + } + sb.append(c); + } sb.append('\''); } |