diff options
| author | 2023-07-27 17:15:22 +0000 | |
|---|---|---|
| committer | 2023-07-27 17:15:22 +0000 | |
| commit | 80ca16da34cea41499d970ee60446ab5b9df2df2 (patch) | |
| tree | d98aaf6554551f19b40487bc9d1b6585128d542c | |
| parent | 276d752a5d205c945fcc42daee29cc54dce9046a (diff) | |
| parent | 71c7da3b067e80e77d6479de444d3858fc003af3 (diff) | |
Merge "Fixing DatabaseUtils to detect malformed UTF-16 strings" into udc-dev am: 24cc154421 am: 71c7da3b06
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23545766
Change-Id: I5d93ae5a5c62fe58c316a23cd4bb6e0ff65ef174
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('\''); } |