Changeset 201565 in webkit
- Timestamp:
- Jun 1, 2016, 1:15:23 PM (10 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
-
ChangeLog (modified) (1 diff)
-
loader/ResourceTimingInformation.cpp (modified) (1 diff)
-
loader/ResourceTimingInformation.h (modified) (1 diff)
-
loader/cache/CachedResourceLoader.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r201561 r201565 1 2016-06-01 Alex Christensen <achristensen@webkit.org> 2 3 Fix null dereferencing in ResourceTimingInformation::addResourceTiming 4 https://bugs.webkit.org/show_bug.cgi?id=158266 5 rdar://problem/26528466 6 7 Reviewed by Chris Dumez. 8 9 This would crash sometimes in http/tests/security/cross-frame-access-custom.html 10 11 * loader/ResourceTimingInformation.cpp: 12 (WebCore::ResourceTimingInformation::addResourceTiming): 13 * loader/ResourceTimingInformation.h: 14 * loader/cache/CachedResourceLoader.cpp: 15 (WebCore::CachedResourceLoader::requestResource): 16 (WebCore::CachedResourceLoader::loadDone): 17 We would dereference a null pointer on the first instruction when calling 18 Document::parentDocument from ResourceTimingInformation::addResourceTiming, 19 which means the document was null. CachedResourceLoader::document even has 20 a comment saying it can be null, so we should check it before using it. 21 1 22 2016-06-01 Said Abou-Hallawa <sabouhallawa@apple.com> 2 23 -
trunk/Source/WebCore/loader/ResourceTimingInformation.cpp
r201447 r201565 39 39 namespace WebCore { 40 40 41 void ResourceTimingInformation::addResourceTiming(CachedResource* resource, Document *document)41 void ResourceTimingInformation::addResourceTiming(CachedResource* resource, Document& document) 42 42 { 43 43 ASSERT(RuntimeEnabledFeatures::sharedFeatures().resourceTimingEnabled()); 44 44 if (resource && resource->resourceRequest().url().protocolIsInHTTPFamily() 45 45 && ((!resource->errorOccurred() && !resource->wasCanceled()) || resource->response().httpStatusCode() == 304)) { 46 HashMap<CachedResource*, InitiatorInfo>::iteratorinitiatorIt = m_initiatorMap.find(resource);46 auto initiatorIt = m_initiatorMap.find(resource); 47 47 if (initiatorIt != m_initiatorMap.end() && initiatorIt->value.added == NotYetAdded) { 48 ASSERT(document); 49 Document* initiatorDocument = document; 48 Document* initiatorDocument = &document; 50 49 if (resource->type() == CachedResource::MainResource) 51 initiatorDocument = document ->parentDocument();50 initiatorDocument = document.parentDocument(); 52 51 ASSERT(initiatorDocument); 53 52 ASSERT(initiatorDocument->domWindow()); -
trunk/Source/WebCore/loader/ResourceTimingInformation.h
r201415 r201565 42 42 public: 43 43 44 void addResourceTiming(CachedResource*, Document *);44 void addResourceTiming(CachedResource*, Document&); 45 45 void storeResourceTimingInitiatorInformation(const CachedResourceHandle<CachedResource>&, const CachedResourceRequest&, Frame*); 46 46 -
trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp
r201539 r201565 620 620 memoryCache.resourceAccessed(*resource); 621 621 #if ENABLE(WEB_TIMING) 622 if ( RuntimeEnabledFeatures::sharedFeatures().resourceTimingEnabled()) {622 if (document() && RuntimeEnabledFeatures::sharedFeatures().resourceTimingEnabled()) { 623 623 m_resourceTimingInfo.storeResourceTimingInitiatorInformation(resource, request, frame()); 624 m_resourceTimingInfo.addResourceTiming(resource.get(), document());624 m_resourceTimingInfo.addResourceTiming(resource.get(), *document()); 625 625 } 626 626 #endif … … 968 968 969 969 #if ENABLE(WEB_TIMING) 970 if ( RuntimeEnabledFeatures::sharedFeatures().resourceTimingEnabled())971 m_resourceTimingInfo.addResourceTiming(resource, document());970 if (document() && RuntimeEnabledFeatures::sharedFeatures().resourceTimingEnabled()) 971 m_resourceTimingInfo.addResourceTiming(resource, *document()); 972 972 #else 973 973 UNUSED_PARAM(resource);
Note:
See TracChangeset
for help on using the changeset viewer.