Changeset 185766 in webkit
- Timestamp:
- Jun 19, 2015, 1:45:54 PM (11 years ago)
- Location:
- trunk/Source
- Files:
-
- 10 edited
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/platform/graphics/BitmapImage.cpp (modified) (4 diffs)
-
WebCore/platform/graphics/cairo/ImageBufferCairo.cpp (modified) (1 diff)
-
WebCore/platform/graphics/cg/ImageBufferCG.cpp (modified) (2 diffs)
-
WebCore/platform/graphics/filters/FETile.cpp (modified) (1 diff)
-
WebCore/platform/graphics/filters/FilterEffect.cpp (modified) (5 diffs)
-
WebCore/platform/graphics/texmap/BitmapTexture.cpp (modified) (1 diff)
-
WebCore/svg/graphics/SVGImage.cpp (modified) (2 diffs)
-
WebKit/mac/ChangeLog (modified) (1 diff)
-
WebKit/mac/WebCoreSupport/WebContextMenuClient.mm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r185763 r185766 1 2015-06-19 Brent Fulgham <bfulgham@apple.com> 2 3 All calls of ImageBuffer::create should null check the return value 4 https://bugs.webkit.org/show_bug.cgi?id=22132 5 6 Reviewed by Zalan Bujtas. 7 8 ImageBuffer::create returns nullptr for a number of reasons, and should be 9 expected to do so. We missed this check in a few places, resulting in 10 crashes on some systems. Likewise, ImageBuffer::copyImage may return nullptr 11 in normal use and should be checked. 12 13 * platform/graphics/BitmapImage.cpp: 14 (WebCore::BitmapImage::drawPattern): Add nullptr check for create and copyImage. Remove 15 extra call to 'setImageObserver'. 16 * platform/graphics/cairo/ImageBufferCairo.cpp: 17 (WebCore::ImageBuffer::drawPattern): Add nullptr check for copyImage. 18 * platform/graphics/cg/ImageBufferCG.cpp: 19 (WebCore::ImageBuffer::drawPattern): Add nullptr checks for copyImage. 20 * platform/graphics/filters/FETile.cpp: 21 (WebCore::FETile::platformApplySoftware): Add nullptr check for copyImage. 22 * platform/graphics/filters/FilterEffect.cpp: 23 (WebCore::FilterEffect::asImageBuffer): Add nullptr check for create. 24 (WebCore::FilterEffect::openCLImageToImageBuffer): Ditto. 25 * platform/graphics/texmap/BitmapTexture.cpp: 26 (WebCore::BitmapTexture::updateContents): Add nullptr checks for create and copyImage. 27 * svg/graphics/SVGImage.cpp: 28 (WebCore::SVGImage::drawPatternForContainer): Add nullptr check for copyImage. 29 1 30 2015-06-19 Jeremy Jones <jeremyj@apple.com> 2 31 -
trunk/Source/WebCore/platform/graphics/BitmapImage.cpp
r184793 r185766 1 1 /* 2 2 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) 3 * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved.3 * Copyright (C) 2004, 2005, 2006, 2008, 2015 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 618 618 if (!m_cachedImage) { 619 619 std::unique_ptr<ImageBuffer> buffer = ImageBuffer::create(expandedIntSize(tileRect.size())); 620 ASSERT(buffer.get()); 620 if (!buffer) 621 return; 621 622 622 623 ImageObserver* observer = imageObserver(); … … 624 625 625 626 // Temporarily reset image observer, we don't want to receive any changeInRect() calls due to this relayout. 626 setImageObserver( 0);627 setImageObserver(nullptr); 627 628 628 629 draw(buffer->context(), tileRect, tileRect, styleColorSpace, op, blendMode, ImageOrientationDescription()); … … 632 633 633 634 m_cachedImage = buffer->copyImage(DontCopyBackingStore, Unscaled); 635 if (!m_cachedImage) 636 return; 637 634 638 m_cachedImage->setSpaceSize(spaceSize()); 635 636 setImageObserver(observer);637 639 } 638 640 -
trunk/Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp
r185417 r185766 162 162 const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator op, const FloatRect& destRect, BlendMode) 163 163 { 164 RefPtr<Image> image = copyImage(DontCopyBackingStore);165 image->drawPattern(context, srcRect, patternTransform, phase, styleColorSpace, op, destRect);164 if (RefPtr<Image> image = copyImage(DontCopyBackingStore)) 165 image->drawPattern(context, srcRect, patternTransform, phase, styleColorSpace, op, destRect); 166 166 } 167 167 -
trunk/Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp
r183234 r185766 1 1 /* 2 2 * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org> 3 * Copyright (C) 2008 Apple Inc. All rights reserved.3 * Copyright (C) 2008, 2015 Apple Inc. All rights reserved. 4 4 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. 5 5 * … … 255 255 if (!context()->isAcceleratedContext()) { 256 256 if (destContext == context() || destContext->isAcceleratedContext()) { 257 RefPtr<Image> copy = copyImage(CopyBackingStore);// Drawing into our own buffer, need to deep copy.258 copy->drawPattern(destContext, adjustedSrcRect, patternTransform, phase, styleColorSpace, op, destRect, blendMode);257 if (RefPtr<Image> copy = copyImage(CopyBackingStore)) // Drawing into our own buffer, need to deep copy. 258 copy->drawPattern(destContext, adjustedSrcRect, patternTransform, phase, styleColorSpace, op, destRect, blendMode); 259 259 } else { 260 RefPtr<Image> imageForRendering = copyImage(DontCopyBackingStore);261 imageForRendering->drawPattern(destContext, adjustedSrcRect, patternTransform, phase, styleColorSpace, op, destRect, blendMode);260 if (RefPtr<Image> imageForRendering = copyImage(DontCopyBackingStore)) 261 imageForRendering->drawPattern(destContext, adjustedSrcRect, patternTransform, phase, styleColorSpace, op, destRect, blendMode); 262 262 } 263 263 } else { 264 RefPtr<Image> copy = copyImage(CopyBackingStore);265 copy->drawPattern(destContext, adjustedSrcRect, patternTransform, phase, styleColorSpace, op, destRect, blendMode);264 if (RefPtr<Image> copy = copyImage(CopyBackingStore)) 265 copy->drawPattern(destContext, adjustedSrcRect, patternTransform, phase, styleColorSpace, op, destRect, blendMode); 266 266 } 267 267 } -
trunk/Source/WebCore/platform/graphics/filters/FETile.cpp
r183956 r185766 72 72 tileImageContext->drawImageBuffer(in->asImageBuffer(), ColorSpaceDeviceRGB, in->absolutePaintRect().location()); 73 73 74 auto pattern = Pattern::create(tileImage->copyImage(CopyBackingStore), true, true); 74 auto tileImageCopy = tileImage->copyImage(CopyBackingStore); 75 if (!tileImageCopy) 76 return; 77 78 auto pattern = Pattern::create(tileImageCopy, true, true); 75 79 76 80 AffineTransform patternTransform; -
trunk/Source/WebCore/platform/graphics/filters/FilterEffect.cpp
r185392 r185766 4 4 * Copyright (C) Research In Motion Limited 2010. All rights reserved. 5 5 * Copyright (C) 2012 University of Szeged 6 * Copyright (C) 2015 Apple Inc. All rights reserved. 6 7 * 7 8 * This library is free software; you can redistribute it and/or … … 269 270 { 270 271 if (!hasResult()) 271 return 0;272 return nullptr; 272 273 if (m_imageBufferResult) 273 274 return m_imageBufferResult.get(); … … 277 278 #endif 278 279 m_imageBufferResult = ImageBuffer::create(m_absolutePaintRect.size(), m_filter.filterScale(), m_resultColorSpace, m_filter.renderingMode()); 280 if (!m_imageBufferResult) 281 return nullptr; 282 279 283 IntRect destinationRect(IntPoint(), m_absolutePaintRect.size()); 280 284 if (m_premultipliedImageResult) … … 292 296 293 297 if (context->inError()) 294 return 0;298 return nullptr; 295 299 296 300 size_t origin[3] = { 0, 0, 0 }; … … 300 304 301 305 if (context->isFailed(clFinish(context->commandQueue()))) 302 return 0;306 return nullptr; 303 307 304 308 if (context->isFailed(clEnqueueReadImage(context->commandQueue(), m_openCLImageResult, CL_TRUE, origin, region, 0, 0, destinationPixelArray->data(), 0, 0, 0))) 305 return 0;309 return nullptr; 306 310 307 311 m_imageBufferResult = ImageBuffer::create(m_absolutePaintRect.size()); 312 if (!m_imageBufferResult) 313 return nullptr; 314 308 315 IntRect destinationRect(IntPoint(), m_absolutePaintRect.size()); 309 316 m_imageBufferResult->putByteArray(Unmultiplied, destinationPixelArray.get(), destinationRect.size(), destinationRect, IntPoint()); -
trunk/Source/WebCore/platform/graphics/texmap/BitmapTexture.cpp
r185752 r185766 51 51 52 52 RefPtr<Image> image = imageBuffer->copyImage(DontCopyBackingStore); 53 if (!image) 54 return; 53 55 54 56 updateContents(image.get(), targetRect, IntPoint(), updateContentsFlag); -
trunk/Source/WebCore/svg/graphics/SVGImage.cpp
r185395 r185766 1 1 /* 2 2 * Copyright (C) 2006 Eric Seidel <eric@webkit.org> 3 * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.3 * Copyright (C) 2008, 2009, 2015 Apple Inc. All rights reserved. 4 4 * Copyright (C) Research In Motion Limited 2011. All rights reserved. 5 5 * … … 208 208 209 209 RefPtr<Image> image = buffer->copyImage(DontCopyBackingStore, Unscaled); 210 if (!image) 211 return; 210 212 image->setSpaceSize(spaceSize()); 211 213 -
trunk/Source/WebKit/mac/ChangeLog
r185727 r185766 1 2015-06-19 Brent Fulgham <bfulgham@apple.com> 2 3 All calls of ImageBuffer::create should null check the return value 4 https://bugs.webkit.org/show_bug.cgi?id=22132 5 6 Reviewed by Zalan Bujtas. 7 8 ImageBuffer::create returns nullptr for a number of reasons, and should be 9 expected to do so. We missed this check in a few places, resulting in 10 crashes on some systems. Likewise, ImageBuffer::copyImage may return nullptr 11 in normal use and should be checked. 12 13 * WebCoreSupport/WebContextMenuClient.mm: 14 (WebContextMenuClient::imageForCurrentSharingServicePickerItem): Add nullptr check 15 for copyImage. 16 1 17 2015-06-18 Jon Lee <jonlee@apple.com> 2 18 -
trunk/Source/WebKit/mac/WebCoreSupport/WebContextMenuClient.mm
r183158 r185766 484 484 485 485 RefPtr<Image> image = buffer->copyImage(DontCopyBackingStore); 486 if (!image) 487 return nil; 488 486 489 return image->getNSImage(); 487 490 }
Note:
See TracChangeset
for help on using the changeset viewer.