Title: [133610] trunk
Revision
133610
Author
commit-qu...@webkit.org
Date
2012-11-06 07:54:05 -0800 (Tue, 06 Nov 2012)

Log Message

Heap-buffer-overflow in WebCore::TextTrackCueList::add
https://bugs.webkit.org/show_bug.cgi?id=101018

Patch by Aaron Colwell <acolw...@chromium.org> on 2012-11-06
Reviewed by Eric Carlson.

Source/WebCore:

Added an extra check to avoid using a negative array index when a cue
is added to the beginning of the list.

Test case added to LayoutTests/media/track/track-add-remove-cue.html.

* html/track/TextTrackCueList.cpp:
(WebCore::TextTrackCueList::add):

LayoutTests:

Added a test case to verify that adding a cue to the beginning of a non-empty list doesn't crash.

* media/track/track-add-remove-cue-expected.txt:
* media/track/track-add-remove-cue.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (133609 => 133610)


--- trunk/LayoutTests/ChangeLog	2012-11-06 15:42:48 UTC (rev 133609)
+++ trunk/LayoutTests/ChangeLog	2012-11-06 15:54:05 UTC (rev 133610)
@@ -1,5 +1,17 @@
 2012-11-06  Aaron Colwell  <acolw...@chromium.org>
 
+        Heap-buffer-overflow in WebCore::TextTrackCueList::add
+        https://bugs.webkit.org/show_bug.cgi?id=101018
+
+        Reviewed by Eric Carlson.
+
+        Added a test case to verify that adding a cue to the beginning of a non-empty list doesn't crash.
+
+        * media/track/track-add-remove-cue-expected.txt:
+        * media/track/track-add-remove-cue.html:
+
+2012-11-06  Aaron Colwell  <acolw...@chromium.org>
+
         Regression(r132681): Heap-use-after-free in WebCore::RenderTextTrackCue::layout
         https://bugs.webkit.org/show_bug.cgi?id=100981
 

Modified: trunk/LayoutTests/media/track/track-add-remove-cue-expected.txt (133609 => 133610)


--- trunk/LayoutTests/media/track/track-add-remove-cue-expected.txt	2012-11-06 15:42:48 UTC (rev 133609)
+++ trunk/LayoutTests/media/track/track-add-remove-cue-expected.txt	2012-11-06 15:54:05 UTC (rev 133610)
@@ -71,5 +71,13 @@
 
 *** Try to remove the cue again.
 TEST(testTrack.track.removeCue(textCue)) THROWS(DOMException.INVALID_STATE_ERR) OK
+
+*** Add a cue before all the existing cues.
+RUN(testTrack.track.addCue(new TextTrackCue(0, 31, 'I am first')))
+EXPECTED (cues[0].startTime == '0') OK
+EXPECTED (cues[0].endTime == '31') OK
+EXPECTED (cues[1].startTime == '0') OK
+EXPECTED (cues[1].endTime == '30.5') OK
+EXPECTED (cues[2].startTime == '31') OK
 END OF TEST
 

Modified: trunk/LayoutTests/media/track/track-add-remove-cue.html (133609 => 133610)


--- trunk/LayoutTests/media/track/track-add-remove-cue.html	2012-11-06 15:42:48 UTC (rev 133609)
+++ trunk/LayoutTests/media/track/track-add-remove-cue.html	2012-11-06 15:54:05 UTC (rev 133610)
@@ -87,6 +87,13 @@
                 consoleWrite("<br>*** Try to remove the cue again.");
                 testException("testTrack.track.removeCue(textCue)", "DOMException.INVALID_STATE_ERR");
 
+                consoleWrite("<br>*** Add a cue before all the existing cues.");
+                run("testTrack.track.addCue(new TextTrackCue(0, 31, 'I am first'))");
+                testExpected("cues[0].startTime", 0);
+                testExpected("cues[0].endTime", 31);
+                testExpected("cues[1].startTime", 0);
+                testExpected("cues[1].endTime", 30.5);
+                testExpected("cues[2].startTime", 31);
                 endTest();
             }
 

Modified: trunk/Source/WebCore/ChangeLog (133609 => 133610)


--- trunk/Source/WebCore/ChangeLog	2012-11-06 15:42:48 UTC (rev 133609)
+++ trunk/Source/WebCore/ChangeLog	2012-11-06 15:54:05 UTC (rev 133610)
@@ -1,5 +1,20 @@
 2012-11-06  Aaron Colwell  <acolw...@chromium.org>
 
+        Heap-buffer-overflow in WebCore::TextTrackCueList::add
+        https://bugs.webkit.org/show_bug.cgi?id=101018
+
+        Reviewed by Eric Carlson.
+
+        Added an extra check to avoid using a negative array index when a cue
+        is added to the beginning of the list.
+
+        Test case added to LayoutTests/media/track/track-add-remove-cue.html.
+
+        * html/track/TextTrackCueList.cpp:
+        (WebCore::TextTrackCueList::add):
+
+2012-11-06  Aaron Colwell  <acolw...@chromium.org>
+
         Regression(r132681): Heap-use-after-free in WebCore::RenderTextTrackCue::layout
         https://bugs.webkit.org/show_bug.cgi?id=100981
 

Modified: trunk/Source/WebCore/html/track/TextTrackCueList.cpp (133609 => 133610)


--- trunk/Source/WebCore/html/track/TextTrackCueList.cpp	2012-11-06 15:42:48 UTC (rev 133609)
+++ trunk/Source/WebCore/html/track/TextTrackCueList.cpp	2012-11-06 15:54:05 UTC (rev 133610)
@@ -92,12 +92,12 @@
     // http://www.whatwg.org/specs/web-apps/current-work/#text-track-cue-order
     RefPtr<TextTrackCue> cue = prpCue;
     if (start == end) {
-        if (!m_list.isEmpty() && (m_list[start - 1].get() == cue.get()))
+        if (!m_list.isEmpty() && (start > 0) && (m_list[start - 1].get() == cue.get()))
             return false;
 
-       m_list.insert(start, cue);
-       invalidateCueIndexes(start);
-       return true;
+        m_list.insert(start, cue);
+        invalidateCueIndexes(start);
+        return true;
     }
 
     size_t index = (start + end) / 2;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to