Description[csa] Bailout to the runtime for ToInteger conversion in Array.p.indexOf.
The fast-path for Array.prototype.indexOf first checks whether the
receiver is a fast-mode JSArray (and there are no elements in the
prototype chain in case of holey arrays), then loads the known
JSArray::length, and afterwards calls ToInteger on the fromIndex.
But this ToInteger(fromIndex) call can cause arbitrary side effects if
the fromIndex is a JSReceiver, in particular it can invalidate the
assumptions about the fast-mode of the receiver and the length. In the
worst case this leads to OOB memory access.
Quick-fix is to bailout to the runtime if the fromIndex is neither a Smi
nor undefined, which represents the common cases.
R=jarin@chromium.org
BUG=chromium:702058
Review-Url: https://codereview.chromium.org/2756663002
Cr-Commit-Position: refs/heads/master@{#43843}
Committed: https://chromium.googlesource.com/v8/v8/+/9224d5d1bc61c5054ff79b9c5c700052b85c56d3
Patch Set 1 #
Total comments: 2
Patch Set 2 : Update comment. #Patch Set 3 : Also fix FastDoubleElementsAccessor::IndexOfValueImpl #
Messages
Total messages: 26 (16 generated)
|