Closed Bug 1243480 Opened 8 years ago Closed 8 years ago

graphite2: crash around null in [@graphite2::SlotMap::collectGarbage] Pass.cpp:646

Categories

(Core :: Graphics: Text, defect)

defect
Not set
critical

Tracking

()

RESOLVED FIXED
Tracking Status
firefox45 --- fixed
firefox46 --- fixed
firefox47 --- fixed
firefox-esr38 45+ fixed

People

(Reporter: tsmith, Unassigned)

References

(Blocks 1 open bug)

Details

(4 keywords, Whiteboard: [sg:dos][adv-main45-][adv-esr38.7-])

Attachments

(2 files, 2 obsolete files)

548 bytes, text/plain
Details
57.83 KB, application/x-font-ttf
Details
Attached file test_case.ttf (obsolete) —
This was found while fuzzing graphite2 1.3.5 (and is in 1.3.4)

==36049==ERROR: AddressSanitizer: SEGV on unknown address 0x00000000006c (pc 0x7f37472c1f46 bp 0x7ffc42be64f0 sp 0x7ffc42be6400 T0)
    #0 0x7f37472c1f45 in graphite2::Slot::isDeleted() const /home/user/code/graphite/src/inc/Slot.h:101:38
    #1 0x7f37472c1f45 in graphite2::SlotMap::collectGarbage(graphite2::Slot*&) /home/user/code/graphite/src/Pass.cpp:646
    #2 0x7f37472c1f45 in graphite2::Pass::findNDoRule(graphite2::Slot*&, graphite2::vm::Machine&, graphite2::FiniteStateMachine&) const /home/user/code/graphite/src/Pass.cpp:536
    #3 0x7f37472c02a6 in graphite2::Pass::runGraphite(graphite2::vm::Machine&, graphite2::FiniteStateMachine&, bool) const /home/user/code/graphite/src/Pass.cpp:410:13
    #4 0x7f37472dbbaa in graphite2::Silf::runGraphite(graphite2::Segment*, unsigned char, unsigned char, int) const /home/user/code/graphite/src/Silf.cpp:423:21
    #5 0x7f374729a53b in graphite2::Face::runGraphite(graphite2::Segment*, graphite2::Silf const*) const /home/user/code/graphite/src/Face.cpp:180:16
    #6 0x7f374726a15f in graphite2::Segment::runGraphite() /home/user/code/graphite/src/inc/Segment.h:97:45
    #7 0x7f374726a15f in (anonymous namespace)::makeAndInitialize(graphite2::Font const*, graphite2::Face const*, unsigned int, graphite2::FeatureVal const*, gr_encform, void const*, unsigned long, int) /home/user/code/graphite/src/gr_segment.cpp:46
    #8 0x7f374726a15f in gr_make_seg /home/user/code/graphite/src/gr_segment.cpp:105
    #9 0x4ee2f9 in Gr2Renderer::renderText(char const*, unsigned long, RenderedLine*, _IO_FILE*) /home/user/code/graphite/tests/comparerenderer/Gr2Renderer.h:103:28
    #10 0x4ef283 in CompareRenderer::runRenderer(Renderer&, RenderedLine*, unsigned long&, _IO_FILE*) /home/user/code/graphite/tests/comparerenderer/CompareRenderer.cpp:213:17
    #11 0x4e64f0 in CompareRenderer::runTests(_IO_FILE*, int) /home/user/code/graphite/tests/comparerenderer/CompareRenderer.cpp:126:41
    #12 0x4e64f0 in main /home/user/code/graphite/tests/comparerenderer/CompareRenderer.cpp:382
    #13 0x7f3746ca6ec4 in __libc_start_main /build/buildd/eglibc-2.19/csu/libc-start.c:287
    #14 0x41bd3c in _start (/home/user/Desktop/graphite/comparerenderer+0x41bd3c)
What was the test string on this? The string "Whereas" seems to run just fine.
Flags: needinfo?(twsmith)
Attached file test_case.ttf (obsolete) —
Attachment #8712794 - Attachment is obsolete: true
Attached file test_string.txt
Flags: needinfo?(twsmith)
Keywords: sec-low
Whiteboard: [sg:dos]
fixed upstream in a8b3ac2aed0eb132cd80efe7de88f8153e73c829
This issue is reproducible in latest revision (e569e28d83491fedb31b9220493f3c07f6ec6d80)
Flags: needinfo?(martin_hosken)
Fixed upstream in 703cbd0c5bd23f39ff24d5d2a525b18658cdb59a
Flags: needinfo?(martin_hosken)
Attached file test_case.ttf
This issue is reproducible in latest revision (df41ce06dda5962b9ff1c8c3175af00005d5fc0f)
Attachment #8713711 - Attachment is obsolete: true
Flags: needinfo?(martin_hosken)
The original test_case seems to have been fixed at df41ce06... This new test_case is now fixed upstream. Looks like the new test_case is, in effect, a new bug. Happy to keep it here though.
Flags: needinfo?(martin_hosken)
Verified with aed0effc27edfb9da441dce3c77f5a1a3fd9f7db
Summary: graphite2: crash around null in [@graphite2::SlotMap::collectGarbage] → graphite2: crash around null in [@graphite2::SlotMap::collectGarbage] Pass.cpp:646
See Also: → 1249344
Status: NEW → RESOLVED
Closed: 8 years ago
Depends on: 1252311
Resolution: --- → FIXED
Whiteboard: [sg:dos] → [sg:dos][adv-main45+][adv-esr38.7+]
Group: gfx-core-security → core-security-release
Whiteboard: [sg:dos][adv-main45+][adv-esr38.7+] → [sg:dos][adv-main45-][adv-esr38.7-]
Group: core-security-release
You need to log in before you can comment on or make changes to this bug.