Fixing bug 604262. Fix crash in nsImageLoadingContent::OnStartDecode(). r=mrbkap a=dveditz GECKO19119_2011041408_RELBRANCH FIREFOX_3_5_19_BUILD2 FIREFOX_3_5_19_RELEASE SEAMONKEY_2_0_14_BUILD2 SEAMONKEY_2_0_14_RELEASE
authorJohnny Stenback <jst@mozilla.com>
Wed, 20 Apr 2011 19:30:13 +0200 (2011-04-20)
branchGECKO19119_2011041408_RELBRANCH
changeset 27400 6a8fcd90b366c83c132230e98af5c8d0f29046a3
parent 27397 b2756532de0fdce1315bf72215a202ec56f4500c
child 27401 474bac3b51adfc986ef33ff16165531df16d76c3
push id2717
push usermrbkap@mozilla.com
push dateWed, 20 Apr 2011 20:02:30 +0000 (2011-04-20)
reviewersmrbkap, dveditz
bugs604262
milestone1.9.1.19
Fixing bug 604262. Fix crash in nsImageLoadingContent::OnStartDecode(). r=mrbkap a=dveditz
content/base/src/nsImageLoadingContent.cpp
content/html/document/crashtests/631421.html
content/html/document/crashtests/631421.png
content/html/document/crashtests/crashtests.list
content/html/document/src/nsImageDocument.cpp
layout/generic/nsImageFrame.cpp
layout/svg/base/src/nsSVGImageFrame.cpp
--- a/content/base/src/nsImageLoadingContent.cpp
+++ b/content/base/src/nsImageLoadingContent.cpp
@@ -158,86 +158,103 @@ nsImageLoadingContent::~nsImageLoadingCo
 NS_IMETHODIMP
 nsImageLoadingContent::FrameChanged(imgIContainer* aContainer,
                                     gfxIImageFrame* aFrame,
                                     nsRect* aDirtyRect)
 {
   LOOP_OVER_OBSERVERS(FrameChanged(aContainer, aFrame, aDirtyRect));
   return NS_OK;
 }
-            
+
 /*
  * imgIDecoderObserver impl
  */
 NS_IMETHODIMP
 nsImageLoadingContent::OnStartRequest(imgIRequest* aRequest)
 {
+  NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome() || mStartingLoad, NS_ERROR_NOT_AVAILABLE);
+
   LOOP_OVER_OBSERVERS(OnStartRequest(aRequest));
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsImageLoadingContent::OnStartDecode(imgIRequest* aRequest)
 {
+  NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome() || mStartingLoad, NS_ERROR_NOT_AVAILABLE);
+
   LOOP_OVER_OBSERVERS(OnStartDecode(aRequest));
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsImageLoadingContent::OnStartContainer(imgIRequest* aRequest,
                                         imgIContainer* aContainer)
 {
+  NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome() || mStartingLoad, NS_ERROR_NOT_AVAILABLE);
+
   LOOP_OVER_OBSERVERS(OnStartContainer(aRequest, aContainer));
 
   // Have to check for state changes here, since we might have been in
   // the LOADING state before.
   UpdateImageState(PR_TRUE);
   return NS_OK;    
 }
 
 NS_IMETHODIMP
 nsImageLoadingContent::OnStartFrame(imgIRequest* aRequest,
                                     gfxIImageFrame* aFrame)
 {
+  NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome() || mStartingLoad, NS_ERROR_NOT_AVAILABLE);
+
   LOOP_OVER_OBSERVERS(OnStartFrame(aRequest, aFrame));
   return NS_OK;    
 }
 
 NS_IMETHODIMP
 nsImageLoadingContent::OnDataAvailable(imgIRequest* aRequest,
                                        gfxIImageFrame* aFrame,
                                        const nsRect* aRect)
 {
+  NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome() || mStartingLoad, NS_ERROR_NOT_AVAILABLE);
+
   LOOP_OVER_OBSERVERS(OnDataAvailable(aRequest, aFrame, aRect));
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsImageLoadingContent::OnStopFrame(imgIRequest* aRequest,
                                    gfxIImageFrame* aFrame)
 {
+  NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome() || mStartingLoad, NS_ERROR_NOT_AVAILABLE);
+
   LOOP_OVER_OBSERVERS(OnStopFrame(aRequest, aFrame));
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsImageLoadingContent::OnStopContainer(imgIRequest* aRequest,
                                        imgIContainer* aContainer)
 {
+  NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome() || mStartingLoad, NS_ERROR_NOT_AVAILABLE);
+
   LOOP_OVER_OBSERVERS(OnStopContainer(aRequest, aContainer));
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsImageLoadingContent::OnStopDecode(imgIRequest* aRequest,
                                     nsresult aStatus,
                                     const PRUnichar* aStatusArg)
 {
   NS_PRECONDITION(aRequest == mCurrentRequest || aRequest == mPendingRequest,
                   "Unknown request");
+
+  NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome() || mStartingLoad, NS_ERROR_NOT_AVAILABLE);
+
   LOOP_OVER_OBSERVERS(OnStopDecode(aRequest, aStatus, aStatusArg));
 
   if (aRequest == mPendingRequest) {
     mCurrentRequest->Cancel(NS_ERROR_IMAGE_SRC_CHANGED);
     mPendingRequest.swap(mCurrentRequest);
     mPendingRequest = nsnull;
   }
 
@@ -259,52 +276,62 @@ nsImageLoadingContent::OnStopDecode(imgI
   UpdateImageState(PR_TRUE);
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsImageLoadingContent::OnStopRequest(imgIRequest* aRequest, PRBool aLastPart)
 {
+  NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome() || mStartingLoad, NS_ERROR_NOT_AVAILABLE);
+
   LOOP_OVER_OBSERVERS(OnStopRequest(aRequest, aLastPart));
 
   return NS_OK;
 }
 
 /*
  * nsIImageLoadingContent impl
  */
 
 NS_IMETHODIMP
 nsImageLoadingContent::GetLoadingEnabled(PRBool *aLoadingEnabled)
 {
+  NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome() || mStartingLoad, NS_ERROR_NOT_AVAILABLE);
+
   *aLoadingEnabled = mLoadingEnabled;
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsImageLoadingContent::SetLoadingEnabled(PRBool aLoadingEnabled)
 {
+  NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome() || mStartingLoad, NS_ERROR_NOT_AVAILABLE);
+
   if (nsContentUtils::GetImgLoader()) {
     mLoadingEnabled = aLoadingEnabled;
   }
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsImageLoadingContent::GetImageBlockingStatus(PRInt16* aStatus)
 {
+  NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome() || mStartingLoad, NS_ERROR_NOT_AVAILABLE);
+
   NS_PRECONDITION(aStatus, "Null out param");
   *aStatus = mImageBlockingStatus;
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsImageLoadingContent::AddObserver(imgIDecoderObserver* aObserver)
 {
+  NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome() || mStartingLoad, NS_ERROR_NOT_AVAILABLE);
+
   NS_ENSURE_ARG_POINTER(aObserver);
 
   if (!mObserverList.mObserver) {
     mObserverList.mObserver = aObserver;
     // Don't touch the linking of the list!
     return NS_OK;
   }
 
@@ -321,16 +348,18 @@ nsImageLoadingContent::AddObserver(imgID
   }
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsImageLoadingContent::RemoveObserver(imgIDecoderObserver* aObserver)
 {
+  NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome() || mStartingLoad, NS_ERROR_NOT_AVAILABLE);
+
   NS_ENSURE_ARG_POINTER(aObserver);
 
   if (mObserverList.mObserver == aObserver) {
     mObserverList.mObserver = nsnull;
     // Don't touch the linking of the list!
     return NS_OK;
   }
 
@@ -378,16 +407,18 @@ nsImageLoadingContent::GetRequest(PRInt3
   return NS_OK;
 }
 
 
 NS_IMETHODIMP
 nsImageLoadingContent::GetRequestType(imgIRequest* aRequest,
                                       PRInt32* aRequestType)
 {
+  NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome() || mStartingLoad, NS_ERROR_NOT_AVAILABLE);
+
   NS_PRECONDITION(aRequestType, "Null out param");
   
   if (aRequest == mCurrentRequest) {
     *aRequestType = CURRENT_REQUEST;
     return NS_OK;
   }
 
   if (aRequest == mPendingRequest) {
@@ -414,16 +445,18 @@ nsImageLoadingContent::GetCurrentURI(nsI
   
   return NS_EnsureSafeToReturn(mCurrentURI, aURI);
 }
 
 NS_IMETHODIMP
 nsImageLoadingContent::LoadImageWithChannel(nsIChannel* aChannel,
                                             nsIStreamListener** aListener)
 {
+  NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome() || mStartingLoad, NS_ERROR_NOT_AVAILABLE);
+
   NS_PRECONDITION(aListener, "null out param");
   
   NS_ENSURE_ARG_POINTER(aChannel);
 
   if (!nsContentUtils::GetImgLoader()) {
     return NS_ERROR_NULL_POINTER;
   }
 
@@ -451,16 +484,18 @@ nsImageLoadingContent::LoadImageWithChan
   // Make sure our state is up to date
   UpdateImageState(PR_TRUE);
 
   return rv;
 }
 
 NS_IMETHODIMP nsImageLoadingContent::ForceReload()
 {
+  NS_ENSURE_TRUE(nsContentUtils::IsCallerChrome() || mStartingLoad, NS_ERROR_NOT_AVAILABLE);
+
   nsCOMPtr<nsIURI> currentURI;
   GetCurrentURI(getter_AddRefs(currentURI));
   if (!currentURI) {
     return NS_ERROR_NOT_AVAILABLE;
   }
 
   return LoadImage(currentURI, PR_TRUE, PR_TRUE, nsnull, nsIRequest::VALIDATE_ALWAYS);
 }
new file mode 100644
--- /dev/null
+++ b/content/html/document/crashtests/631421.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+<script>
+"use strict";
+
+var f2;
+
+function newIframe()
+{
+  var f = document.createElementNS("http://www.w3.org/1999/xhtml", "iframe");
+  f.setAttributeNS(null, "src", "631421.png");
+  document.body.appendChild(f);
+  return f;
+}
+
+function b1()
+{
+  void newIframe();
+  f2 = newIframe();
+  setTimeout(b2, 0);
+}
+
+function b2()
+{
+  document.body.removeChild(f2);
+  document.documentElement.removeAttribute("class");
+}
+
+</script>
+</head>
+
+<body onload="b1();"></body>
+</html>
new file mode 100644
index 0000000000000000000000000000000000000000..ef350c46780347fefe1432a500f7ab1934549513
GIT binary patch
literal 38661
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
Pg8;KrmZn9<PPG349}75^
--- a/content/html/document/crashtests/crashtests.list
+++ b/content/html/document/crashtests/crashtests.list
@@ -5,8 +5,9 @@ load 388183-1.html
 load 395340-1.html
 load 407053.html
 load 448564.html
 load 468562-1.html
 load 468562-2.html
 load 494225.html
 load 495543.svg
 load 564461.xhtml
+load 631421.html
--- a/content/html/document/src/nsImageDocument.cpp
+++ b/content/html/document/src/nsImageDocument.cpp
@@ -67,16 +67,17 @@
 #include "nsPIDOMWindow.h"
 #include "nsIDOMElement.h"
 #include "nsIDOMNSHTMLElement.h"
 #include "nsContentErrors.h"
 #include "ImageErrors.h"
 #include "nsIDocShell.h"
 #include "nsIContentViewer.h"
 #include "nsIMarkupDocumentViewer.h"
+#include "nsIJSContextStack.h"
 
 #define AUTOMATIC_IMAGE_RESIZING_PREF "browser.enable_automatic_image_resizing"
 
 class nsImageDocument;
 
 class ImageListener: public nsMediaDocumentStreamListener
 {
 public:
@@ -346,17 +347,30 @@ nsImageDocument::Destroy()
     // Remove our event listener from the image content.
     nsCOMPtr<nsIDOMEventTarget> target = do_QueryInterface(mImageContent);
     target->RemoveEventListener(NS_LITERAL_STRING("click"), this, PR_FALSE);
 
     // Break reference cycle with mImageContent, if we have one
     if (mObservingImageLoader) {
       nsCOMPtr<nsIImageLoadingContent> imageLoader = do_QueryInterface(mImageContent);
       if (imageLoader) {
+        // Push a null JSContext on the stack so that code that
+        // nsImageLoadingContent doesn't think it's being called by JS.  See
+        // Bug 631241
+
+        nsIThreadJSContextStack* stack = nsContentUtils::ThreadJSContextStack();
+        if (stack) {
+          stack->Push(nsnull);
+        }
+
         imageLoader->RemoveObserver(this);
+
+        if (stack) {
+          stack->Pop(nsnull);
+        }
       }
     }
 
     mImageContent = nsnull;
   }
 
   nsMediaDocument::Destroy();
 }
@@ -639,25 +653,37 @@ nsImageDocument::CreateSyntheticDocument
     return NS_ERROR_OUT_OF_MEMORY;
   }
   nsCOMPtr<nsIImageLoadingContent> imageLoader = do_QueryInterface(mImageContent);
   NS_ENSURE_TRUE(imageLoader, NS_ERROR_UNEXPECTED);
 
   nsCAutoString src;
   mDocumentURI->GetSpec(src);
 
+  // Push a null JSContext on the stack so that code that runs within
+  // the below code doesn't think it's being called by JS. See bug
+  // 604262.
+  nsIThreadJSContextStack* stack = nsContentUtils::ThreadJSContextStack();
+  if (stack) {
+    stack->Push(nsnull);
+  }
+
   NS_ConvertUTF8toUTF16 srcString(src);
   // Make sure not to start the image load from here...
   imageLoader->SetLoadingEnabled(PR_FALSE);
   mImageContent->SetAttr(kNameSpaceID_None, nsGkAtoms::src, srcString, PR_FALSE);
   mImageContent->SetAttr(kNameSpaceID_None, nsGkAtoms::alt, srcString, PR_FALSE);
 
   body->AppendChildTo(mImageContent, PR_FALSE);
   imageLoader->SetLoadingEnabled(PR_TRUE);
 
+  if (stack) {
+    stack->Pop(nsnull);
+  }
+
   return NS_OK;
 }
 
 nsresult
 nsImageDocument::CheckOverflowing(PRBool changeState)
 {
   /* Create a scope so that the style context gets destroyed before we might
    * call RebuildStyleData.  Also, holding onto pointers to the
--- a/layout/generic/nsImageFrame.cpp
+++ b/layout/generic/nsImageFrame.cpp
@@ -98,16 +98,17 @@
 #include "nsIDOMRange.h"
 
 #include "nsIContentPolicy.h"
 #include "nsContentPolicyUtils.h"
 #include "nsIEventStateManager.h"
 #include "nsLayoutErrors.h"
 #include "nsBidiUtils.h"
 #include "nsBidiPresUtils.h"
+#include "nsIJSContextStack.h"
 
 #ifdef DEBUG
 #undef NOISY_IMAGE_LOADING
 #undef NOISY_ICON_LOADING
 #else
 #undef NOISY_IMAGE_LOADING
 #undef NOISY_ICON_LOADING
 #endif
@@ -234,17 +235,30 @@ nsImageFrame::Destroy()
     mImageMap->Destroy();
     NS_RELEASE(mImageMap);
   }
 
   // set the frame to null so we don't send messages to a dead object.
   if (mListener) {
     nsCOMPtr<nsIImageLoadingContent> imageLoader = do_QueryInterface(mContent);
     if (imageLoader) {
+      // Push a null JSContext on the stack so that code that runs
+      // within the below code doesn't think it's being called by
+      // JS. See bug 604262.
+      nsIThreadJSContextStack* stack = nsContentUtils::ThreadJSContextStack();
+      if (stack) {
+        stack->Push(nsnull);
+      }
+
       imageLoader->RemoveObserver(mListener);
+
+      if (stack) {
+        stack->Pop(nsnull);
+      }
+
     }
     
     reinterpret_cast<nsImageListener*>(mListener.get())->SetFrame(nsnull);
   }
   
   mListener = nsnull;
 
   nsSplittableFrame::Destroy();
@@ -260,17 +274,32 @@ nsImageFrame::Init(nsIContent*      aCon
   nsresult rv = nsSplittableFrame::Init(aContent, aParent, aPrevInFlow);
   NS_ENSURE_SUCCESS(rv, rv);
 
   mListener = new nsImageListener(this);
   if (!mListener) return NS_ERROR_OUT_OF_MEMORY;
 
   nsCOMPtr<nsIImageLoadingContent> imageLoader = do_QueryInterface(aContent);
   NS_ENSURE_TRUE(imageLoader, NS_ERROR_UNEXPECTED);
-  imageLoader->AddObserver(mListener);
+
+  {
+    // Push a null JSContext on the stack so that code that runs
+    // within the below code doesn't think it's being called by
+    // JS. See bug 604262.
+    nsIThreadJSContextStack* stack = nsContentUtils::ThreadJSContextStack();
+    if (stack) {
+      stack->Push(nsnull);
+    }
+
+    imageLoader->AddObserver(mListener);
+
+    if (stack) {
+      stack->Pop(nsnull);
+    }
+  }
 
   nsPresContext *aPresContext = PresContext();
   
   if (!gIconLoad)
     LoadIcons(aPresContext);
 
   // Give image loads associated with an image frame a small priority boost!
   nsCOMPtr<imgIRequest> currentRequest;
--- a/layout/svg/base/src/nsSVGImageFrame.cpp
+++ b/layout/svg/base/src/nsSVGImageFrame.cpp
@@ -43,16 +43,17 @@
 #include "nsImageLoadingContent.h"
 #include "nsIDOMSVGImageElement.h"
 #include "nsSVGElement.h"
 #include "nsSVGUtils.h"
 #include "nsSVGMatrix.h"
 #include "gfxContext.h"
 #include "nsIInterfaceRequestorUtils.h"
 #include "nsIImage.h"
+#include "nsIJSContextStack.h"
 
 class nsSVGImageFrame;
 
 class nsSVGImageListener : public nsStubImageDecoderObserver
 {
 public:
   nsSVGImageListener(nsSVGImageFrame *aFrame);
 
@@ -139,17 +140,29 @@ NS_NewSVGImageFrame(nsIPresShell* aPresS
 }
 
 nsSVGImageFrame::~nsSVGImageFrame()
 {
   // set the frame to null so we don't send messages to a dead object.
   if (mListener) {
     nsCOMPtr<nsIImageLoadingContent> imageLoader = do_QueryInterface(mContent);
     if (imageLoader) {
+      // Push a null JSContext on the stack so that code that runs
+      // within the below code doesn't think it's being called by
+      // JS. See bug 604262.
+      nsIThreadJSContextStack* stack = nsContentUtils::ThreadJSContextStack();
+      if (stack) {
+        stack->Push(nsnull);
+      }
+
       imageLoader->RemoveObserver(mListener);
+
+      if (stack) {
+        stack->Pop(nsnull);
+      }
     }
     reinterpret_cast<nsSVGImageListener*>(mListener.get())->SetFrame(nsnull);
   }
   mListener = nsnull;
 }
 
 NS_IMETHODIMP
 nsSVGImageFrame::Init(nsIContent* aContent,
@@ -158,18 +171,31 @@ nsSVGImageFrame::Init(nsIContent* aConte
 {
   nsresult rv = nsSVGPathGeometryFrame::Init(aContent, aParent, aPrevInFlow);
   if (NS_FAILED(rv)) return rv;
   
   mListener = new nsSVGImageListener(this);
   if (!mListener) return NS_ERROR_OUT_OF_MEMORY;
   nsCOMPtr<nsIImageLoadingContent> imageLoader = do_QueryInterface(mContent);
   NS_ENSURE_TRUE(imageLoader, NS_ERROR_UNEXPECTED);
+
+  // Push a null JSContext on the stack so that code that runs within
+  // the below code doesn't think it's being called by JS. See bug
+  // 604262.
+  nsIThreadJSContextStack* stack = nsContentUtils::ThreadJSContextStack();
+  if (stack) {
+    stack->Push(nsnull);
+  }
+
   imageLoader->AddObserver(mListener);
 
+  if (stack) {
+    stack->Pop(nsnull);
+  }
+
   return NS_OK; 
 }
 
 //----------------------------------------------------------------------
 // nsIFrame methods:
 
 NS_IMETHODIMP
 nsSVGImageFrame::AttributeChanged(PRInt32         aNameSpaceID,