Bug 1456147 - do not fail on an assertion error when calling Pickle::ExtractBuffers on an empty iterator; r?jld draft
authorAlex Gaynor <agaynor@mozilla.com>
Mon, 23 Apr 2018 11:20:07 -0400
changeset 786597 af7d8dd8063f0e29d4b690bc40902071df91c497
parent 786478 dfb15917c057f17e5143f7d7c6e1972ba53efc49
push id107537
push userbmo:agaynor@mozilla.com
push dateMon, 23 Apr 2018 16:40:51 +0000
reviewersjld
bugs1456147
milestone61.0a1
Bug 1456147 - do not fail on an assertion error when calling Pickle::ExtractBuffers on an empty iterator; r?jld MozReview-Commit-ID: 7m2QSOuxLOw
ipc/chromium/src/base/pickle.cc
--- a/ipc/chromium/src/base/pickle.cc
+++ b/ipc/chromium/src/base/pickle.cc
@@ -415,17 +415,17 @@ bool Pickle::ReadWString(PickleIterator*
 bool Pickle::ExtractBuffers(PickleIterator* iter, size_t length, BufferList* buffers,
                             uint32_t alignment) const
 {
   DCHECK(iter);
   DCHECK(buffers);
   DCHECK(alignment == 4 || alignment == 8);
   DCHECK(intptr_t(header_) % alignment == 0);
 
-  if (AlignInt(length) < length) {
+  if (AlignInt(length) < length || iter->iter_.Done()) {
     return false;
   }
 
   uint32_t padding_len = intptr_t(iter->iter_.Data()) % alignment;
   if (!iter->iter_.AdvanceAcrossSegments(buffers_, padding_len)) {
     return false;
   }