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