mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-04 23:08:39 +09:00
Check for contiguous buffer state.
When we are reading large image data (i.e.: people using webp to stream video instead of the native webm format; I'm looking at you, Giphy!) we can run into the situation where the available data is not in a contiguous buffer, and we need to either buffer additional data or re-buffer from the start. If we don't do this, we can run into issues because of buffer over-reading (causing corrupted data if allocated or more likely crashes if not allocated). Re-buffering is expensive, but this should be rare and limited to dealing with unintended use for animated image formats. This resolves #940.
This commit is contained in:
parent
3640321580
commit
a1c22f3a76
2 changed files with 11 additions and 0 deletions
|
|
@ -144,6 +144,10 @@ nsWebPDecoder::UpdateBuffer(SourceBufferIterator& aIterator,
|
|||
|
||||
switch (aState) {
|
||||
case SourceBufferIterator::READY:
|
||||
if(!aIterator.IsContiguous()) {
|
||||
//We need to buffer. This should be rare, but expensive.
|
||||
break;
|
||||
}
|
||||
if (!mData) {
|
||||
// For as long as we hold onto an iterator, we know the data pointers
|
||||
// to the chunks cannot change underneath us, so save the pointer to
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue