New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Email to this user bounced
Closed: Sep 2010
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 1
Type: Bug-Security
M-7

Restricted
  • Only users with EditIssue permission may comment.



Sign in to add a comment
link

Issue 54500: Renderer crash on very big animated gif image @ WebCore::RGBA32Buffer::setRGBA(unsigned int *,unsigned int,unsigned int,unsigned int,unsigned int)

Reported by simon.sc...@gmail.com, Sep 4 2010

Issue description

Chrome Version       : 7.0.503.1 (Official Build 57041) dev
URLs (if applicable) : http://asset.soup.io/asset/1056/8367_7835_48-square.gif
backup: http://home.arcor.de/slxviper/8367_7835_48-square.gif
Other browsers tested:
Add OK or FAIL after other browsers where you have tested this issue:
Safari 4:
  Firefox 3.x: FAIL/(ok)
IE 7:
         IE 8: (ok)

What steps will reproduce the problem?
1. open above url (animated gif image, actual size 10176x7632 px)
2. observe RAM consumption

What is the expected result?
Image is displayed, browser and OS are continuing to work normally.
OR: Warning is displayed, allocation of even more RAM is stopped.

What happens instead?
Huge amounts of RAM are consumed, until...
a) on Windows: some RAM is allocated, "sad tab" is displayed, RAM is freed again
b) on Linux: all available RAM ist allocated, everything hangs until killing that chrome process (which isn't that easy in this situation...)

Please provide any additional information below. Attach a screenshot if
possible.
IE8 consumes about 110MB overall, FF 3.6.8 on Linux crashes as well, FF 3.6 on Windows needs about 360MB overall. Some image viewers crash as well.

This bug was reported to soup.io as well, since the image should be only 48x48 px, so there seems to be a bug on their side as well.
 

Comment 1 by sunandt@chromium.org, Sep 7 2010

Labels: -Pri-2 -Area-Undefined Pri-1 Area-WebKit Crash private Mstone-7
Status: Untriaged
Summary: Renderer crash on very big animated gif image @ WebCore::RGBA32Buffer::setRGBA(unsigned int *,unsigned int,unsigned int,unsigned int,unsigned int)
Thanks for the report.

Stack Trace
------------
Thread 0 *CRASHED* ( EXCEPTION_ACCESS_VIOLATION_WRITE @ 0x00000098 )

0x022cdebd	 [chrome.dll	 - imagedecoder.h:167]	WebCore::RGBA32Buffer::setRGBA(unsigned int *,unsigned int,unsigned int,unsigned int,unsigned int)
0x022cde10	 [chrome.dll	 - imagedecoder.h:132]	WebCore::RGBA32Buffer::setRGBA(int,int,unsigned int,unsigned int,unsigned int,unsigned int)
0x022cf542	 [chrome.dll	 - gifimagedecoder.cpp:228]	WebCore::GIFImageDecoder::haveDecodedRow(unsigned int,unsigned char *,unsigned char *,unsigned int,unsigned int,bool)
0x022d5faf	 [chrome.dll	 - gifimagereader.cpp:164]	GIFImageReader::output_row()
0x022d624b	 [chrome.dll	 - gifimagereader.cpp:356]	GIFImageReader::do_lzw(unsigned char const *)
0x022d63b7	 [chrome.dll	 - gifimagereader.cpp:446]	GIFImageReader::read(unsigned char const *,unsigned int,WebCore::GIFImageDecoder::GIFQuery,unsigned int)
0x022cf6bf	 [chrome.dll	 - gifimagedecoder.cpp:313]	WebCore::GIFImageDecoder::decode(unsigned int,WebCore::GIFImageDecoder::GIFQuery)
0x022cf316	 [chrome.dll	 - gifimagedecoder.cpp:124]	WebCore::GIFImageDecoder::frameBufferAtIndex(unsigned int)
0x0226e297	 [chrome.dll	 - imagesource.cpp:132]	WebCore::ImageSource::createFrameAtIndex(unsigned int)
0x02251254	 [chrome.dll	 - bitmapimage.cpp:121]	WebCore::BitmapImage::cacheFrame(unsigned int)
0x02251447	 [chrome.dll	 - bitmapimage.cpp:224]	WebCore::BitmapImage::frameIsCompleteAtIndex(unsigned int)
0x02251691	 [chrome.dll	 - bitmapimage.cpp:336]	WebCore::BitmapImage::startAnimation(bool)
0x021c32c2	 [chrome.dll	 - imageskia.cpp:460]	WebCore::BitmapImage::draw(WebCore::GraphicsContext *,WebCore::FloatRect const &,WebCore::FloatRect const &,WebCore::ColorSpace,WebCore::CompositeOperator)
0x0212bbbf	 [chrome.dll	 - graphicscontext.cpp:410]	WebCore::GraphicsContext::drawImage(WebCore::Image *,WebCore::ColorSpace,WebCore::FloatRect const &,WebCore::FloatRect const &,WebCore::CompositeOperator,bool)
0x0212b77f	 [chrome.dll	 - graphicscontext.cpp:329]	WebCore::GraphicsContext::drawImage(WebCore::Image *,WebCore::ColorSpace,WebCore::IntRect const &,WebCore::IntRect const &,WebCore::CompositeOperator,bool)
0x0212b745	 [chrome.dll	 - graphicscontext.cpp:319]	WebCore::GraphicsContext::drawImage(WebCore::Image *,WebCore::ColorSpace,WebCore::IntRect const &,WebCore::CompositeOperator,bool)
0x021bbbe4	 [chrome.dll	 - renderimage.cpp:349]	WebCore::RenderImage::paintIntoRect(WebCore::GraphicsContext *,WebCore::IntRect const &)
0x021bb6b2	 [chrome.dll	 - renderimage.cpp:288]	WebCore::RenderImage::paintReplaced(WebCore::PaintInfo &,int,int)
0x021ccc9b	 [chrome.dll	 - renderreplaced.cpp:145]	WebCore::RenderReplaced::paint(WebCore::PaintInfo &,int,int)
0x021bb9b8	 [chrome.dll	 - renderimage.cpp:294]	WebCore::RenderImage::paint(WebCore::PaintInfo &,int,int)
0x02164d6e	 [chrome.dll	 - inlinebox.cpp:180]	WebCore::InlineBox::paint(WebCore::PaintInfo &,int,int)
0x021611fa	 [chrome.dll	 - inlineflowbox.cpp:696]	WebCore::InlineFlowBox::paint(WebCore::PaintInfo &,int,int)
0x0215f1a8	 [chrome.dll	 - rootinlinebox.cpp:166]	WebCore::RootInlineBox::paint(WebCore::PaintInfo &,int,int)
0x021ca141	 [chrome.dll	 - renderlineboxlist.cpp:220]	WebCore::RenderLineBoxList::paint(WebCore::RenderBoxModelObject *,WebCore::PaintInfo &,int,int)
0x021b35ca	 [chrome.dll	 - renderblock.cpp:2094]	WebCore::RenderBlock::paintContents(WebCore::PaintInfo &,int,int)
0x021b3a12	 [chrome.dll	 - renderblock.cpp:2204]	WebCore::RenderBlock::paintObject(WebCore::PaintInfo &,int,int)
0x021b3208	 [chrome.dll	 - renderblock.cpp:1985]	WebCore::RenderBlock::paint(WebCore::PaintInfo &,int,int)
0x021b37be	 [chrome.dll	 - renderblock.cpp:2137]	WebCore::RenderBlock::paintChildren(WebCore::PaintInfo &,int,int)
0x021b35d1	 [chrome.dll	 - renderblock.cpp:2096]	WebCore::RenderBlock::paintContents(WebCore::PaintInfo &,int,int)
0x021b3a12	 [chrome.dll	 - renderblock.cpp:2204]	WebCore::RenderBlock::paintObject(WebCore::PaintInfo &,int,int)
...... (11 stack frames dropped.)
0x01d5679f	 [chrome.dll	 - render_widget.cc:531]	RenderWidget::DoDeferredUpdate()
0x01d5652f	 [chrome.dll	 - render_widget.cc:456]	RenderWidget::CallDoDeferredUpdate()
0x01d58217	 [chrome.dll	 - ipc_message.h:135]	IPC::Message::Dispatch<RenderView>(IPC::Message const *,RenderView *,void ( RenderView::*)(void))
0x01d55db1	 [chrome.dll	 - render_widget.cc:167]	RenderWidget::OnMessageReceived(IPC::Message const &)
0x01d2247b	 [chrome.dll	 - render_view.cc:810]	RenderView::OnMessageReceived(IPC::Message const &)
0x0202f8fa	 [chrome.dll	 - message_router.cc:40]	MessageRouter::RouteMessage(IPC::Message const &)
0x0202f8d4	 [chrome.dll	 - message_router.cc:31]	MessageRouter::OnMessageReceived(IPC::Message const &)
0x0202229f	 [chrome.dll	 - child_thread.cc:163]	ChildThread::OnMessageReceived(IPC::Message const &)
0x025ff875	 [chrome.dll	 - task.h:327]	RunnableMethod<CancelableRequest<CallbackRunner<Tuple1<std::map<GURL,std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >,std::less<GURL>,std::allocator<std::pair<GURL const ,std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > > > > > > >,void ( CancelableRequest<CallbackRunner<Tuple1<std::map<GURL,std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >,std::less<GURL>,std::allocator<std::pair<GURL const ,std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > > > > > > >::*)(Tuple1<std::map<GURL,std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >,std::less<GURL>,std::allocator<std::pair<GURL const ,std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > > > > > const &),Tuple1<Tuple1<std::map<GURL,std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >,std::less<GURL>,std::allocator<std::pair<GURL const ,std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > > > > > > >::Run()
0x01cf2187	 [chrome.dll	 - message_loop.cc:408]	MessageLoop::RunTask(Task *)
0x01cf2213	 [chrome.dll	 - message_loop.cc:417]	MessageLoop::DeferOrRunPendingTask(MessageLoop::PendingTask const &)
0x01cf23a9	 [chrome.dll	 - message_loop.cc:524]	MessageLoop::DoWork()
0x01d05c60	 [chrome.dll	 - message_pump_default.cc:50]	base::MessagePumpDefault::Run(base::MessagePump::Delegate *)
0x01cf1f36	 [chrome.dll	 - message_loop.cc:256]	MessageLoop::RunInternal()
0x01cf1ebb	 [chrome.dll	 - message_loop.cc:228]	MessageLoop::RunHandler()
0x01cf1e69	 [chrome.dll	 - message_loop.cc:206]	MessageLoop::Run()
0x01d19b51	 [chrome.dll	 - renderer_main.cc:294]	RendererMain(MainFunctionParams const &)
0x01c33b1c	 [chrome.dll	 - chrome_dll_main.cc:807]	ChromeMain
0x004039fc	 [chrome.exe	 - client_util.cc:247]	MainDllLoader::Launch(HINSTANCE__ *,sandbox::SandboxInterfaceInfo *)
0x00403ff7	 [chrome.exe	 - chrome_exe_main.cc:46]	wWinMain

Full report @ http://crash/reportdetail?reportid=dd043a662fffdaf9

This is happening with 5.0, 6.0 and 7.0.518.0
Might be related to  issue 6062 . Marking as private for now.

Comment 2 by pkasting@chromium.org, Sep 7 2010

Status: Assigned

Comment 3 by pkasting@chromium.org, Sep 24 2010

Status: Started
This one is easy (and not a regression); filed upstream as https://bugs.webkit.org/show_bug.cgi?id=46437 , to be patched shortly.

Comment 4 by pkasting@chromium.org, Sep 28 2010

Status: FixUnreleased
Fixed upstream in http://trac.webkit.org/changeset/68446

Comment 5 by scarybea...@gmail.com, Sep 28 2010

Labels: Restrict-View-SecurityTeam Security SecSeverity-High ReleaseBlock-Beta
Status: WillMerge
Upon analysis, this is a security bug. We'll merge it to M7.

Although the pointer written to is always based on NULL, the attacker can write to semi-arbitrary offsets by using a frame that has a non-zero x,y offset into the destination canvas.

Comment 6 by infe...@chromium.org, Oct 1 2010

Labels: -Restrict-View-SecurityTeam Restrict-View-SecurityNotify

Comment 7 by infe...@chromium.org, Oct 4 2010

Status: FixUnreleased
Merged in r69027 to 517.

Comment 8 by scarybea...@gmail.com, Oct 14 2010

Labels: reward-topanel
@sixviper: thanks for your help finding this. I'll credit you in our release notes as "sixviper", unless you wanted to give a different name?

Comment 9 by simon.sc...@gmail.com, Oct 14 2010

Thanks for the credit. You could use my full name, Simon Schaak, for the release notes.

Comment 10 by scarybea...@gmail.com, Oct 15 2010

Labels: -reward-topanel reward-500 reward-unpaid
@slxviper: congratulations! Your report was very useful and enabled us to correct a security bug. Therefore, you've qualified for a provisional $500 under the Chromium Security Rewards program.
----
Boilerplate text: please do NOT publicly disclose details until a fix has been
released to all our users. Public disclosure may cancel the provisional reward.
----

Comment 11 by simon.sc...@gmail.com, Oct 16 2010

Nice to hear, I accecpt. Please contact me by (google)mail for further information.

Comment 12 by jsc...@chromium.org, Oct 17 2010

Labels: -private

Comment 13 by scarybea...@gmail.com, Nov 3 2010

Labels: -Restrict-View-SecurityNotify
Status: Fixed

Comment 14 by scarybea...@gmail.com, Nov 21 2010

Labels: -reward-unpaid
Payment is in the electronic system.

Comment 15 by lafo...@chromium.org, Mar 19 2011

Labels: -Crash bulkmove Stability-Crash
Chrome Version       : 7.0.503.1 (Official Build 57041) dev
URLs (if applicable) : http://asset.soup.io/asset/1056/8367_7835_48-square.gif
backup: http://home.arcor.de/slxviper/8367_7835_48-square.gif
Other browsers tested:
Add OK or FAIL after other browsers where you have tested this issue:
Safari 4:
  Firefox 3.x: FAIL/(ok)
IE 7:
         IE 8: (ok)

What steps will reproduce the problem?
1. open above url (animated gif image, actual size 10176x7632 px)
2. observe RAM consumption

What is the expected result?
Image is displayed, browser and OS are continuing to work normally.
OR: Warning is displayed, allocation of even more RAM is stopped.

What happens instead?
Huge amounts of RAM are consumed, until...
a) on Windows: some RAM is allocated, &quot;sad tab&quot; is displayed, RAM is freed again
b) on Linux: all available RAM ist allocated, everything hangs until killing that chrome process (which isn't that easy in this situation...)

Please provide any additional information below. Attach a screenshot if
possible.
IE8 consumes about 110MB overall, FF 3.6.8 on Linux crashes as well, FF 3.6 on Windows needs about 360MB overall. Some image viewers crash as well.

This bug was reported to soup.io as well, since the image should be only 48x48 px, so there seems to be a bug on their side as well.

Comment 16 by jsc...@chromium.org, Mar 21 2011

Labels: Type-Security

Comment 17 by jsc...@chromium.org, Oct 5 2011

Labels: SecImpacts-Stable
Batch update.

Comment 18 by bugdroid1@chromium.org, Oct 13 2012

Project Member
Labels: Restrict-AddIssueComment-Commit
This issue has been closed for some time. No one will pay attention to new comments.
If you are seeing this bug or have new data, please click New Issue to start a new bug.

Comment 19 by bugdroid1@chromium.org, Mar 10 2013

Project Member
Labels: -Area-WebKit -Mstone-7 -SecSeverity-High -Type-Security -SecImpacts-Stable Cr-Content Security-Impact-Stable M-7 Type-Bug-Security Security-Severity-High

Comment 20 by bugdroid1@chromium.org, Mar 13 2013

Project Member
Labels: -Restrict-AddIssueComment-Commit Restrict-AddIssueComment-EditIssue

Comment 21 by bugdroid1@chromium.org, Mar 21 2013

Project Member
Labels: -Security-Severity-High Security_Severity-High

Comment 22 by bugdroid1@chromium.org, Mar 21 2013

Project Member
Labels: -Security-Impact-Stable Security_Impact-Stable

Comment 23 by bugdroid1@chromium.org, Apr 6 2013

Project Member
Labels: -Cr-Content Cr-Blink

Comment 24 by sheriffbot@chromium.org, Oct 1 2016

Project Member
This bug has been closed for more than 14 weeks. Removing security view restrictions.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Comment 25 by sheriffbot@chromium.org, Oct 2 2016

Project Member
This bug has been closed for more than 14 weeks. Removing security view restrictions.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Comment 26 by mbarbe...@chromium.org, Oct 2 2016

Labels: allpublic

Sign in to add a comment