Closed
Bug 664930
Opened 13 years ago
Closed 13 years ago
Crash [@ _cairo_bentley_ottmann_tessellate_rectangular]
Categories
(Core :: Graphics, defect)
Tracking
()
People
(Reporter: jruderman, Assigned: jrmuizel)
References
Details
(4 keywords, Whiteboard: [sg:critical][qa!])
Crash Data
Attachments
(4 files, 2 obsolete files)
75 bytes,
text/html
|
Details | |
10.18 KB,
text/plain
|
Details | |
645 bytes,
text/x-csrc
|
Details | |
2.18 KB,
patch
|
christian
:
approval-mozilla-beta+
|
Details | Diff | Splinter Review |
Possibly a regression from the recent cairo update?
http://hg.mozilla.org/mozilla-central/pushloghtml?changeset=102be3d1f103
Reporter | ||
Comment 1•13 years ago
|
||
Reporter | ||
Comment 2•13 years ago
|
||
Security-sensitive because it often crashes trying to access 0x1e7c2f8 rather than something near 0x0.
Comment 3•13 years ago
|
||
Jeff, this sounds like something that came in with your most recent cairo import.
Assignee: nobody → jmuizelaar
status-firefox5:
--- → wontfix
status-firefox6:
--- → affected
status-firefox7:
--- → affected
tracking-firefox5:
--- → -
tracking-firefox6:
--- → +
tracking-firefox7:
--- → +
Assignee | ||
Comment 4•13 years ago
|
||
pos->prev->next = edge;
pos->prev is bogus. Not sure why yet. It looks like this is caused by an overflow of some value.
Comment 5•13 years ago
|
||
Does this affect Aurora? if it's a regression from the changeset in comment 0 then it should be in Aurora, but we need to test
Comment 6•13 years ago
|
||
Jeff, any updates here? It's getting late for 6, but if we can get a safe fix for 6 soon we'd still consider it.
Comment 7•13 years ago
|
||
No updates so I don't think we can take this for 6 any more.
Assignee | ||
Comment 8•13 years ago
|
||
This shouldn't affect 6.
Updated•13 years ago
|
Comment 9•13 years ago
|
||
Jeff, any progress here? This has seemingly been sitting untouched for a while...
Assignee | ||
Comment 10•13 years ago
|
||
Assignee | ||
Comment 11•13 years ago
|
||
This patch fixes the issue. The issue also appears to be just a NULL deference and so wouldn't be exploitable.
Comment 12•13 years ago
|
||
Removing sg:critical severity then to trigger a re-triage, with the likely outcome being that we'll open this bug up.
Whiteboard: [sg:critical?]
Reporter | ||
Comment 13•13 years ago
|
||
See comment 2 for why I initially marked the bug as sg:critical ...
Assignee | ||
Comment 14•13 years ago
|
||
(In reply to comment #13)
> See comment 2 for why I initially marked the bug as sg:critical ...
Hmm... that's interesting. I didn't see how that could happen with the thing that I fixed. It might be worth waiting a bit before opening this up.
Assignee | ||
Comment 15•13 years ago
|
||
I took a closer look at this. The NULL dereference is not actually a NULL it's uninitialized stack memory so this is more severe than I originally thought. It's not clear if the unintialized value is controllable by content but we might as well assume that it is.
Assignee | ||
Updated•13 years ago
|
Whiteboard: [sg:critical]
Assignee | ||
Comment 16•13 years ago
|
||
Attachment #549389 -
Attachment is obsolete: true
Attachment #551582 -
Flags: review?
Assignee | ||
Updated•13 years ago
|
Attachment #551582 -
Flags: review? → review?(bjacob)
Comment 17•13 years ago
|
||
Comment on attachment 551582 [details] [diff] [review]
Handle the case where an edge lies at the left most coordinate and initialize the rest of the data
r=me with the following change:
>+ /* we need to initialize prev so that we can check
>+ * if this edge is the left most and make sure
>+ * we always insert to the right of it, even if
>+ * our x coordinate matches */
>+ sweep_line->head.prev = NULL;
Please initialize head.next = NULL too...
>-
>- pos->prev->next = edge;
>- edge->prev = pos->prev;
>- edge->next = pos;
>- pos->prev = edge;
>+ if (pos->prev) {
>+ pos->prev->next = edge;
>+ edge->prev = pos->prev;
>+ edge->next = pos;
>+ pos->prev = edge;
>+ } else {
>+ /* we have edge that shares an x coordinate with the left most sentinal.
>+ * instead of inserting before pos and ruining our sentinal we insert after pos. */
>+ pos->next->prev = edge;
So that if there ever is a weird case (zero-length list?) where there wouldn't be a pos->next here, at least we'd get a good null deref instead of an uninitialized pointer deref.
Attachment #551582 -
Flags: review?(bjacob) → review+
Assignee | ||
Comment 18•13 years ago
|
||
Adjusts to match review comments.
Attachment #551582 -
Attachment is obsolete: true
Assignee | ||
Updated•13 years ago
|
Attachment #552727 -
Flags: approval-mozilla-aurora?
Comment 19•13 years ago
|
||
Landed on inbound.
Assignee | ||
Comment 20•13 years ago
|
||
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → FIXED
Comment 21•13 years ago
|
||
Comment on attachment 552727 [details] [diff] [review]
Handle the case where an edge lies at the left most coordinate and initialize the rest of the data v2
Aurora [7] window has closed. Moving approval request to Beta.
Attachment #552727 -
Flags: approval-mozilla-aurora? → approval-mozilla-beta?
Updated•13 years ago
|
status-firefox8:
--- → fixed
status-firefox9:
--- → fixed
tracking-firefox8:
--- → +
tracking-firefox9:
--- → +
Comment 22•13 years ago
|
||
Comment on attachment 552727 [details] [diff] [review]
Handle the case where an edge lies at the left most coordinate and initialize the rest of the data v2
Approved for mozilla-beta
Attachment #552727 -
Flags: approval-mozilla-beta? → approval-mozilla-beta+
Updated•13 years ago
|
status1.9.2:
--- → unaffected
Assignee | ||
Comment 23•13 years ago
|
||
Comment 24•13 years ago
|
||
qa+ for verification with Firefox 7.
Whiteboard: [sg:critical] → [sg:critical][qa+]
Comment 25•13 years ago
|
||
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0) Gecko/20100101 Firefox/7.0 ID:20110922153450
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:8.0a2) Gecko/20110926 Firefox/8.0a2 ID:20110926042011
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0a1) Gecko/20110926 Firefox/9.0a1 ID:20110926030901
Using the attached testcase I am unable to reproduce this crash. Marking verified.
Status: RESOLVED → VERIFIED
Keywords: verified-aurora,
verified-beta
Whiteboard: [sg:critical][qa+] → [sg:critical][qa!]
Updated•13 years ago
|
Group: core-security
You need to log in
before you can comment on or make changes to this bug.
Description
•