Changeset 181424 in webkit
- Timestamp:
- Mar 11, 2015 7:01:42 PM (9 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r181423 r181424 1 2015-03-11 Antti Koivisto <antti@apple.com> 2 3 Cache traversal missing large entries 4 https://bugs.webkit.org/show_bug.cgi?id=142601 5 6 Reviewed by Andreas Kling. 7 8 When traversing cache entries we only read the header data from disk. This didn't work 9 correctly for entries larger than the read size. 10 11 * NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm: 12 (WebKit::NetworkCache::IOChannel::read): 13 14 Partial reads only receive one callback with 'done' set to true. 15 Ensure we actually return data in this case. 16 17 * NetworkProcess/cache/NetworkCacheStorage.cpp: 18 (WebKit::NetworkCache::decodeEntryHeader): 19 20 Add some logging. 21 1 22 2015-03-11 Eric Carlson <eric.carlson@apple.com> 2 23 -
trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm
r181161 r181424 81 81 bool didCallCompletionHandler = false; 82 82 dispatch_io_read(m_dispatchIO.get(), offset, size, dispatch_get_main_queue(), [channel, completionHandler, didCallCompletionHandler](bool done, dispatch_data_t fileData, int error) mutable { 83 if (done) { 84 if (!didCallCompletionHandler) { 85 Data nullData; 86 completionHandler(nullData, error); 87 } 83 ASSERT_UNUSED(done, done || !didCallCompletionHandler); 84 if (didCallCompletionHandler) 88 85 return; 89 }90 ASSERT(!didCallCompletionHandler);91 86 DispatchPtr<dispatch_data_t> fileDataPtr(fileData); 92 87 Data data(fileDataPtr); -
trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp
r181364 r181424 180 180 static bool decodeEntryHeader(const Data& fileData, EntryMetaData& metaData, Data& data) 181 181 { 182 if (!decodeEntryMetaData(metaData, fileData)) 182 if (!decodeEntryMetaData(metaData, fileData)) { 183 LOG(NetworkCacheStorage, "(NetworkProcess) meta data decode failure"); 183 184 return false; 184 if (metaData.cacheStorageVersion != Storage::version) 185 } 186 187 if (metaData.cacheStorageVersion != Storage::version) { 188 LOG(NetworkCacheStorage, "(NetworkProcess) version mismatch"); 185 189 return false; 186 if (metaData.headerOffset + metaData.headerSize > metaData.bodyOffset) 190 } 191 if (metaData.headerOffset + metaData.headerSize > metaData.bodyOffset) { 192 LOG(NetworkCacheStorage, "(NetworkProcess) body offset mismatch"); 187 193 return false; 194 } 188 195 189 196 auto headerData = fileData.subrange(metaData.headerOffset, metaData.headerSize);
Note: See TracChangeset
for help on using the changeset viewer.