[Poppler-bugs] [Bug 101364] New: Endless recursion on XRef::getCatalog(Object*)

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Fri Jun 9 22:27:01 UTC 2017


https://bugs.freedesktop.org/show_bug.cgi?id=101364

            Bug ID: 101364
           Summary: Endless recursion on XRef::getCatalog(Object*)
           Product: poppler
           Version: unspecified
          Hardware: Other
                OS: All
            Status: NEW
          Severity: normal
          Priority: medium
         Component: general
          Assignee: poppler-bugs at lists.freedesktop.org
          Reporter: dudul04 at yahoo.fr

Created attachment 131833
  --> https://bugs.freedesktop.org/attachment.cgi?id=131833&action=edit
faulty PDF

Reproducible with at least poppler 0.41 and poppler-git.

The opening of the attached PDF (generated by OSS Fuzz) ends up in an
apparently endless recursion of calls

{{{
[snip}
#86 0x00007ffff7abb1ea in XRef::fetch (this=0x64e540, num=7, gen=0,
obj=obj at entry=0x7ffffffde4e0, recursion=recursion at entry=459) at XRef.cc:1224
#87 0x00007ffff7a983c5 in Object::fetch (this=<optimized out>, xref=<optimized
out>, obj=obj at entry=0x7ffffffde4e0, recursion=recursion at entry=459) at
Object.cc:122
#88 0x00007ffff7a371dd in Dict::lookup (this=<optimized out>,
key=key at entry=0x7ffff7b16918 "Length", obj=obj at entry=0x7ffffffde4e0,
recursion=recursion at entry=459) at Dict.cc:261
#89 0x00007ffff7a9e55d in Object::dictLookup (key=0x7ffff7b16918 "Length",
this=0x7ffffffde620, this=0x7ffffffde620, recursion=459, obj=0x7ffffffde4e0) at
Object.h:342
#90 Parser::makeStream (this=this at entry=0x161a9d0,
dict=dict at entry=0x7ffffffde620, fileKey=fileKey at entry=0x0,
encAlgorithm=encAlgorithm at entry=cryptNone, keyLength=keyLength at entry=6607408,
objNum=objNum at entry=7, 
    objGen=0, recursion=459, strict=false) at Parser.cc:209
#91 0x00007ffff7a9ebac in Parser::getObj (this=this at entry=0x161a9d0,
obj=obj at entry=0x7ffffffde620, simpleOnly=simpleOnly at entry=false,
fileKey=fileKey at entry=0x0, encAlgorithm=encAlgorithm at entry=cryptNone, 
    keyLength=keyLength at entry=6607408, objNum=7, objGen=0, recursion=458,
strict=false) at Parser.cc:131
#92 0x00007ffff7a9ecad in Parser::getObj (this=this at entry=0x161a9d0,
obj=obj at entry=0x7ffffffde6c0, simpleOnly=simpleOnly at entry=false,
fileKey=fileKey at entry=0x0, encAlgorithm=encAlgorithm at entry=cryptNone, 
    keyLength=keyLength at entry=6607408, objNum=7, objGen=0, recursion=457,
strict=false) at Parser.cc:95
#93 0x00007ffff7a9ed49 in Parser::getObj (this=this at entry=0x161a9d0,
obj=obj at entry=0x7ffffffde830, simpleOnly=simpleOnly at entry=false, fileKey=0x0,
encAlgorithm=cryptNone, keyLength=6607408, objNum=7, objGen=0, 
    recursion=456, strict=false) at Parser.cc:121
#94 0x00007ffff7abb1ea in XRef::fetch (this=0x64e540, num=7, gen=0,
obj=obj at entry=0x7ffffffde830, recursion=recursion at entry=456) at XRef.cc:1224
#95 0x00007ffff7a983c5 in Object::fetch (this=<optimized out>, xref=<optimized
out>, obj=obj at entry=0x7ffffffde830, recursion=recursion at entry=456) at
Object.cc:122
#96 0x00007ffff7a371dd in Dict::lookup (this=<optimized out>,
key=key at entry=0x7ffff7b16918 "Length", obj=obj at entry=0x7ffffffde830,
recursion=recursion at entry=456) at Dict.cc:261
#97 0x00007ffff7a9e55d in Object::dictLookup (key=0x7ffff7b16918 "Length",
this=0x7ffffffde970, this=0x7ffffffde970, recursion=456, obj=0x7ffffffde830) at
Object.h:342
#98 Parser::makeStream (this=this at entry=0x15ff8c0,
dict=dict at entry=0x7ffffffde970, fileKey=fileKey at entry=0x0,
encAlgorithm=encAlgorithm at entry=cryptNone, keyLength=keyLength at entry=6607408,
objNum=objNum at entry=7, 
    objGen=0, recursion=456, strict=false) at Parser.cc:209
#99 0x00007ffff7a9ebac in Parser::getObj (this=this at entry=0x15ff8c0,
obj=obj at entry=0x7ffffffde970, simpleOnly=simpleOnly at entry=false,
fileKey=fileKey at entry=0x0, encAlgorithm=encAlgorithm at entry=cryptNone, 
    keyLength=keyLength at entry=6607408, objNum=7, objGen=0, recursion=455,
strict=false) at Parser.cc:131
#100 0x00007ffff7a9ecad in Parser::getObj (this=this at entry=0x15ff8c0,
obj=obj at entry=0x7ffffffdea10, simpleOnly=simpleOnly at entry=false,
fileKey=fileKey at entry=0x0, encAlgorithm=encAlgorithm at entry=cryptNone, 
    keyLength=keyLength at entry=6607408, objNum=7, objGen=0, recursion=454,
strict=false) at Parser.cc:95
#101 0x00007ffff7a9ed49 in Parser::getObj (this=this at entry=0x15ff8c0,
obj=obj at entry=0x7ffffffdeb80, simpleOnly=simpleOnly at entry=false, fileKey=0x0,
encAlgorithm=cryptNone, keyLength=6607408, objNum=7, objGen=0, 
    recursion=453, strict=false) at Parser.cc:121
#102 0x00007ffff7abb1ea in XRef::fetch (this=0x64e540, num=7, gen=0,
obj=obj at entry=0x7ffffffdeb80, recursion=recursion at entry=453) at XRef.cc:1224
#103 0x00007ffff7a983c5 in Object::fetch (this=<optimized out>, xref=<optimized
out>, obj=obj at entry=0x7ffffffdeb80, recursion=recursion at entry=453) at
Object.cc:122
#104 0x00007ffff7a371dd in Dict::lookup (this=<optimized out>,
key=key at entry=0x7ffff7b16918 "Length", obj=obj at entry=0x7ffffffdeb80,
recursion=recursion at entry=453) at Dict.cc:261
#105 0x00007ffff7a9e55d in Object::dictLookup (key=0x7ffff7b16918 "Length",
this=0x7ffffffdecc0, this=0x7ffffffdecc0, recursion=453, obj=0x7ffffffdeb80) at
Object.h:342
#106 Parser::makeStream (this=this at entry=0x15e47b0,
dict=dict at entry=0x7ffffffdecc0, fileKey=fileKey at entry=0x0,
encAlgorithm=encAlgorithm at entry=cryptNone, keyLength=keyLength at entry=6607408, 
    objNum=objNum at entry=7, objGen=0, recursion=453, strict=false) at
Parser.cc:209
#107 0x00007ffff7a9ebac in Parser::getObj (this=this at entry=0x15e47b0,
obj=obj at entry=0x7ffffffdecc0, simpleOnly=simpleOnly at entry=false,
fileKey=fileKey at entry=0x0, encAlgorithm=encAlgorithm at entry=cryptNone, 
    keyLength=keyLength at entry=6607408, objNum=7, objGen=0, recursion=452,
strict=false) at Parser.cc:131
#108 0x00007ffff7a9ecad in Parser::getObj (this=this at entry=0x15e47b0,
obj=obj at entry=0x7ffffffded60, simpleOnly=simpleOnly at entry=false,
fileKey=fileKey at entry=0x0, encAlgorithm=encAlgorithm at entry=cryptNone, 
    keyLength=keyLength at entry=6607408, objNum=7, objGen=0, recursion=451,
strict=false) at Parser.cc:95
#109 0x00007ffff7a9ed49 in Parser::getObj (this=this at entry=0x15e47b0,
obj=obj at entry=0x7ffffffdeed0, simpleOnly=simpleOnly at entry=false, fileKey=0x0,
encAlgorithm=cryptNone, keyLength=6607408, objNum=7, objGen=0, 
    recursion=450, strict=false) at Parser.cc:121
#110 0x00007ffff7abb1ea in XRef::fetch (this=0x64e540, num=7, gen=0,
obj=obj at entry=0x7ffffffdeed0, recursion=recursion at entry=450) at XRef.cc:1224
#111 0x00007ffff7a983c5 in Object::fetch (this=<optimized out>, xref=<optimized
out>, obj=obj at entry=0x7ffffffdeed0, recursion=recursion at entry=450) at
Object.cc:122
#112 0x00007ffff7a371dd in Dict::lookup (this=<optimized out>,
key=key at entry=0x7ffff7b16918 "Length", obj=obj at entry=0x7ffffffdeed0,
recursion=recursion at entry=450) at Dict.cc:261
#113 0x00007ffff7a9e55d in Object::dictLookup (key=0x7ffff7b16918 "Length",
this=0x7ffffffdf010, this=0x7ffffffdf010, recursion=450, obj=0x7ffffffdeed0) at
Object.h:342
[snip]
}}}

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/poppler-bugs/attachments/20170609/966e2e25/attachment.html>


More information about the Poppler-bugs mailing list