[webkit-dev] size_t vs unsigned in WTF::Vector API ?

Chris Dumez cdumez at apple.com
Wed Nov 19 15:13:11 PST 2014


If we don’t want to crash on overflow, the callers can use the try*() API I believe (e.g. tryAppend()). This returns false (and does not resize the vector) instead of crashing, when we reach the size limit.

Kr,
--
Chris Dumez - Apple Inc.
Cupertino, CA




> On Nov 19, 2014, at 2:58 PM, Alexey Proskuryakov <ap at webkit.org> wrote:
> 
> 
> 19 нояб. 2014 г., в 13:58, Filip Pizlo <fpizlo at apple.com <mailto:fpizlo at apple.com>> написал(а):
> 
>>> With Vector though, I don't know how we would differentiate code paths that need large allocations from ones that don't. Nearly anything that is exposed as a JS API or deals with external world can hit sizes over 4Gb. That's not out of reach in most scenarios, not even for resources loaded from network.
>> 
>> Can you provide an example?
> 
> Yes. XMLHttpRequest::m_binaryResponseBuilder keeps the downloaded data in a Vector, so any time there is much data, something bad will happen. This is a case that we should support, and not just crash as we would when we think that only exploits would try to use as much memory.
> 
> All code that is Blob related also uses Vectors, and of course Blobs can legitimately be large.
> 
> Crypto code uses Vectors internally for the data.
> 
> These and related uses are all over the place - see also Vectors in FormDataBuilder, data returned from FrameLoader::loadResourceSynchronously, plug-in code that loads from network, SharedBuffer etc.
> 
> - Alexey
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-dev/attachments/20141119/7a96e03e/attachment.html>


More information about the webkit-dev mailing list