[Pkg-chromium-commit] chromium-browser/chromium-browser.squeeze: 710 High Stale pointer with anonymous block handling. Credit to Martin

Giuseppe Iuculano iuculano at debian.org
Fri Feb 11 14:54:03 UTC 2011


Branch name: chromium-browser/chromium-browser.squeeze
Branch location : bzr+ssh://bzr.debian.org/bzr/pkg-chromium/chromium-browser/chromium-browser.squeeze
Browse location: http://bzr.debian.org/loggerhead/pkg-chromium
Revision No: 710
Revision Id: iuculano at debian.org-20110211145403-g21gytxqf7crbvet
Committer: Giuseppe Iuculano <iuculano at debian.org>
Message : High Stale pointer with anonymous block handling. Credit to Martin
Barbella.


--------------------------------------------------------
  ** Added :
        - debian/patches/69556.patch

  ** Modified :
        - debian/changelog
        - debian/patches/series

-------------- next part --------------
=== modified file 'debian/changelog'
--- a/debian/changelog	2011-02-11 14:36:05 +0000
+++ b/debian/changelog	2011-02-11 14:54:03 +0000
@@ -2,8 +2,10 @@
 
   * Backported security patches from stable:
     - High Stale pointer in animation event handling. Credit to Rik Cabanier.
+    - High Stale pointer with anonymous block handling. Credit to Martin
+      Barbella.
 
- -- Giuseppe Iuculano <iuculano at debian.org>  Fri, 11 Feb 2011 15:34:37 +0100
+ -- Giuseppe Iuculano <iuculano at debian.org>  Fri, 11 Feb 2011 15:53:13 +0100
 
 chromium-browser (6.0.472.63~r59945-5+squeeze1) stable-security; urgency=high
 

=== added file 'debian/patches/69556.patch'
--- a/debian/patches/69556.patch	1970-01-01 00:00:00 +0000
+++ b/debian/patches/69556.patch	2011-02-11 14:54:03 +0000
@@ -0,0 +1,62 @@
+--- a/src/third_party/WebKit/WebCore/rendering/RenderBlock.cpp
++++ b/src/third_party/WebKit/WebCore/rendering/RenderBlock.cpp
+@@ -125,6 +125,7 @@ RenderBlock::RenderBlock(Node* node)
+       , m_continuation(0)
+       , m_maxMargin(0)
+       , m_lineHeight(-1)
++      , m_beingDestroyed(false)
+ {
+     setChildrenInline(true);
+ }
+@@ -160,6 +161,9 @@ RenderBlock::~RenderBlock()
+ 
+ void RenderBlock::destroy()
+ {
++    // Mark as being destroyed to avoid trouble with merges in removeChild().
++    m_beingDestroyed = true;
++
+     // Make sure to destroy anonymous children first while they are still connected to the rest of the tree, so that they will
+     // properly dirty line boxes that they are removed from. Effects that do :before/:after only on hover could crash otherwise.
+     children()->destroyLeftoverChildren();
+@@ -933,8 +937,8 @@ static bool canMergeContiguousAnonymousB
+     if (oldChild->documentBeingDestroyed() || oldChild->isInline() || oldChild->virtualContinuation())
+         return false;
+ 
+-    if ((prev && (!prev->isAnonymousBlock() || toRenderBlock(prev)->continuation()))
+-        || (next && (!next->isAnonymousBlock() || toRenderBlock(next)->continuation())))
++    if ((prev && (!prev->isAnonymousBlock() || toRenderBlock(prev)->continuation() || toRenderBlock(prev)->beingDestroyed()))
++        || (next && (!next->isAnonymousBlock() || toRenderBlock(next)->continuation() || toRenderBlock(next)->beingDestroyed())))
+         return false;
+ 
+     // FIXME: This check isn't required when inline run-ins can't be split into continuations.
+@@ -1004,10 +1008,6 @@ void RenderBlock::removeChild(RenderObje
+             // Delete the now-empty block's lines and nuke it.
+             nextBlock->deleteLineBoxTree();
+             nextBlock->destroy();
+-
+-            // FIXME: Revert the continuation change done above.
+-            if (oldChildBlock)
+-                oldChildBlock->setContinuation(0);
+         }
+     }
+ 
+--- a/src/third_party/WebKit/WebCore/rendering/RenderBlock.h
++++ b/src/third_party/WebKit/WebCore/rendering/RenderBlock.h
+@@ -53,6 +53,7 @@ public:
+     RenderObjectChildList* children() { return &m_children; }
+ 
+     virtual void destroy();
++    bool beingDestroyed() const { return m_beingDestroyed; }
+ 
+     // These two functions are overridden for inline-block.
+     virtual int lineHeight(bool firstLine, bool isRootLineBox = false) const;
+@@ -574,7 +575,8 @@ private:
+     RenderObjectChildList m_children;
+     RenderLineBoxList m_lineBoxes;   // All of the root line boxes created for this block flow.  For example, <div>Hello<br>world.</div> will have two total lines for the <div>.
+ 
+-    mutable int m_lineHeight;
++    mutable int m_lineHeight : 31;
++    bool m_beingDestroyed : 1;
+ 
+     // RenderRubyBase objects need to be able to split and merge, moving their children around
+     // (calling moveChildTo, moveAllChildrenTo, and makeChildrenNonInline).

=== modified file 'debian/patches/series'
--- a/debian/patches/series	2011-02-11 14:36:05 +0000
+++ b/debian/patches/series	2011-02-11 14:54:03 +0000
@@ -53,3 +53,4 @@
 59081.patch
 68244.patch
 67234.patch
+69556.patch



More information about the Pkg-chromium-commit mailing list