[dart2wasm] Check bounds when indexing strings
New passing test: corelib/string_test
Change-Id: I294364e39a3fad22d1fc5e8371df259af23a3c32
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/267940
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Ömer Ağacan <omersa@google.com>
diff --git a/sdk/lib/_internal/wasm/lib/string_patch.dart b/sdk/lib/_internal/wasm/lib/string_patch.dart
index 0990d42..dc5c30c 100644
--- a/sdk/lib/_internal/wasm/lib/string_patch.dart
+++ b/sdk/lib/_internal/wasm/lib/string_patch.dart
@@ -1049,7 +1049,10 @@
}
@override
- int codeUnitAt(int index) => _array.readUnsigned(index);
+ int codeUnitAt(int index) {
+ RangeError.checkValueInInterval(index, 0, length);
+ return _array.readUnsigned(index);
+ }
@override
int get length => _array.length;
@@ -1411,7 +1414,10 @@
}
@override
- int codeUnitAt(int index) => _array.readUnsigned(index);
+ int codeUnitAt(int index) {
+ RangeError.checkValueInInterval(index, 0, length);
+ return _array.readUnsigned(index);
+ }
@override
int get length => _array.length;