Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(138)

Unified Diff: runtime/lib/typed_data.dart

Issue 23714005: Fix range check bug for ByteData getters and setters. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: updated co19 status Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tests/co19/co19-co19.status » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/lib/typed_data.dart
===================================================================
--- runtime/lib/typed_data.dart (revision 27098)
+++ runtime/lib/typed_data.dart (working copy)
@@ -2826,8 +2826,8 @@
}
int getInt16(int byteOffset, [Endianness endian = Endianness.BIG_ENDIAN]) {
- if (byteOffset < 0 || byteOffset >= length) {
- _throwRangeError(byteOffset, length);
+ if (byteOffset < 0 || byteOffset + 1 >= length) {
+ _throwRangeError(byteOffset + 1, length);
}
var result = _typedData._getInt16(_offset + byteOffset);
if (identical(endian, Endianness.HOST_ENDIAN)) {
@@ -2838,8 +2838,8 @@
void setInt16(int byteOffset,
int value,
[Endianness endian = Endianness.BIG_ENDIAN]) {
- if (byteOffset < 0 || byteOffset >= length) {
- _throwRangeError(byteOffset, length);
+ if (byteOffset < 0 || byteOffset + 1 >= length) {
+ _throwRangeError(byteOffset + 1, length);
}
var set_value = _toInt16(value);
if (!identical(endian, Endianness.HOST_ENDIAN)) {
@@ -2849,8 +2849,8 @@
}
int getUint16(int byteOffset, [Endianness endian = Endianness.BIG_ENDIAN]) {
- if (byteOffset < 0 || byteOffset >= length) {
- _throwRangeError(byteOffset, length);
+ if (byteOffset < 0 || byteOffset + 1 >= length) {
+ _throwRangeError(byteOffset + 1, length);
}
var result = _typedData._getUint16(_offset + byteOffset);
if (identical(endian, Endianness.HOST_ENDIAN)) {
@@ -2861,8 +2861,8 @@
void setUint16(int byteOffset,
int value,
[Endianness endian = Endianness.BIG_ENDIAN]) {
- if (byteOffset < 0 || byteOffset >= length) {
- _throwRangeError(byteOffset, length);
+ if (byteOffset < 0 || byteOffset + 1 >= length) {
+ _throwRangeError(byteOffset + 1, length);
}
var set_value = _toUint16(value);
if (!identical(endian, Endianness.HOST_ENDIAN)) {
@@ -2872,8 +2872,8 @@
}
int getInt32(int byteOffset, [Endianness endian = Endianness.BIG_ENDIAN]) {
- if (byteOffset < 0 || byteOffset >= length) {
- _throwRangeError(byteOffset, length);
+ if (byteOffset < 0 || byteOffset + 3 >= length) {
+ _throwRangeError(byteOffset + 3, length);
}
var result = _typedData._getInt32(_offset + byteOffset);
if (identical(endian, Endianness.HOST_ENDIAN)) {
@@ -2884,8 +2884,8 @@
void setInt32(int byteOffset,
int value,
[Endianness endian = Endianness.BIG_ENDIAN]) {
- if (byteOffset < 0 || byteOffset >= length) {
- _throwRangeError(byteOffset, length);
+ if (byteOffset < 0 || byteOffset + 3 >= length) {
+ _throwRangeError(byteOffset + 3, length);
}
var set_value = _toInt32(value);
if (!identical(endian, Endianness.HOST_ENDIAN)) {
@@ -2895,8 +2895,8 @@
}
int getUint32(int byteOffset, [Endianness endian = Endianness.BIG_ENDIAN]) {
- if (byteOffset < 0 || byteOffset >= length) {
- _throwRangeError(byteOffset, length);
+ if (byteOffset < 0 || byteOffset + 3 >= length) {
+ _throwRangeError(byteOffset + 3, length);
}
var result = _typedData._getUint32(_offset + byteOffset);
if (identical(endian, Endianness.HOST_ENDIAN)) {
@@ -2907,8 +2907,8 @@
void setUint32(int byteOffset,
int value,
[Endianness endian = Endianness.BIG_ENDIAN]) {
- if (byteOffset < 0 || byteOffset >= length) {
- _throwRangeError(byteOffset, length);
+ if (byteOffset < 0 || byteOffset + 3 >= length) {
+ _throwRangeError(byteOffset + 3, length);
}
var set_value = _toUint32(value);
if (!identical(endian, Endianness.HOST_ENDIAN)) {
@@ -2918,8 +2918,8 @@
}
int getInt64(int byteOffset, [Endianness endian = Endianness.BIG_ENDIAN]) {
- if (byteOffset < 0 || byteOffset >= length) {
- _throwRangeError(byteOffset, length);
+ if (byteOffset < 0 || byteOffset + 7 >= length) {
+ _throwRangeError(byteOffset + 7, length);
}
var result = _typedData._getInt64(_offset + byteOffset);
if (identical(endian, Endianness.HOST_ENDIAN)) {
@@ -2930,8 +2930,8 @@
void setInt64(int byteOffset,
int value,
[Endianness endian = Endianness.BIG_ENDIAN]) {
- if (byteOffset < 0 || byteOffset >= length) {
- _throwRangeError(byteOffset, length);
+ if (byteOffset < 0 || byteOffset + 7 >= length) {
+ _throwRangeError(byteOffset + 7, length);
}
var set_value = _toInt64(value);
if (!identical(endian, Endianness.HOST_ENDIAN)) {
@@ -2941,8 +2941,8 @@
}
int getUint64(int byteOffset, [Endianness endian = Endianness.BIG_ENDIAN]) {
- if (byteOffset < 0 || byteOffset >= length) {
- _throwRangeError(byteOffset, length);
+ if (byteOffset < 0 || byteOffset + 7 >= length) {
+ _throwRangeError(byteOffset + 7, length);
}
var result = _typedData._getUint64(_offset + byteOffset);
if (identical(endian, Endianness.HOST_ENDIAN)) {
@@ -2953,8 +2953,8 @@
void setUint64(int byteOffset,
int value,
[Endianness endian = Endianness.BIG_ENDIAN]) {
- if (byteOffset < 0 || byteOffset >= length) {
- _throwRangeError(byteOffset, length);
+ if (byteOffset < 0 || byteOffset + 7 >= length) {
+ _throwRangeError(byteOffset + 7, length);
}
var set_value = _toUint64(value);
if (!identical(endian, Endianness.HOST_ENDIAN)) {
@@ -2965,8 +2965,8 @@
double getFloat32(int byteOffset,
[Endianness endian = Endianness.BIG_ENDIAN]) {
- if (byteOffset < 0 || byteOffset >= length) {
- _throwRangeError(byteOffset, length);
+ if (byteOffset < 0 || byteOffset + 3 >= length) {
+ _throwRangeError(byteOffset + 3, length);
}
var result = _typedData._getFloat32(_offset + byteOffset);
if (identical(endian, Endianness.HOST_ENDIAN)) {
@@ -2977,8 +2977,8 @@
void setFloat32(int byteOffset,
double value,
[Endianness endian = Endianness.BIG_ENDIAN]) {
- if (byteOffset < 0 || byteOffset >= length) {
- _throwRangeError(byteOffset, length);
+ if (byteOffset < 0 || byteOffset + 3 >= length) {
+ _throwRangeError(byteOffset + 3, length);
}
var set_value = value;
if (!identical(endian, Endianness.HOST_ENDIAN)) {
@@ -2989,8 +2989,8 @@
double getFloat64(int byteOffset,
[Endianness endian = Endianness.BIG_ENDIAN]) {
- if (byteOffset < 0 || byteOffset >= length) {
- _throwRangeError(byteOffset, length);
+ if (byteOffset < 0 || byteOffset + 7 >= length) {
+ _throwRangeError(byteOffset + 7, length);
}
var result = _typedData._getFloat64(_offset + byteOffset);
if (identical(endian, Endianness.HOST_ENDIAN)) {
@@ -3001,8 +3001,8 @@
void setFloat64(int byteOffset,
double value,
[Endianness endian = Endianness.BIG_ENDIAN]) {
- if (byteOffset < 0 || byteOffset >= length) {
- _throwRangeError(byteOffset, length);
+ if (byteOffset < 0 || byteOffset + 7 >= length) {
+ _throwRangeError(byteOffset + 7, length);
}
var set_value = value;
if (!identical(endian, Endianness.HOST_ENDIAN)) {
@@ -3013,8 +3013,8 @@
Float32x4 getFloat32x4(int byteOffset,
[Endianness endian = Endianness.BIG_ENDIAN]) {
- if (byteOffset < 0 || byteOffset >= length) {
- _throwRangeError(byteOffset, length);
+ if (byteOffset < 0 || byteOffset + 3 >= length) {
+ _throwRangeError(byteOffset + 3, length);
}
// TODO(johnmccutchan) : Need to resolve this for endianity.
return _typedData._getFloat32x4(_offset + byteOffset);
@@ -3022,8 +3022,8 @@
void setFloat32x4(int byteOffset,
Float32x4 value,
[Endianness endian = Endianness.BIG_ENDIAN]) {
- if (byteOffset < 0 || byteOffset >= length) {
- _throwRangeError(byteOffset, length);
+ if (byteOffset < 0 || byteOffset + 3 >= length) {
+ _throwRangeError(byteOffset + 3, length);
}
// TODO(johnmccutchan) : Need to resolve this for endianity.
_typedData._setFloat32x4(_offset + byteOffset, value);
« no previous file with comments | « no previous file | tests/co19/co19-co19.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698