[Poppler-bugs] [Bug 43306] New: crash in loadFromData with invalid pdf

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Mon Nov 28 06:55:14 PST 2011


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

             Bug #: 43306
           Summary: crash in loadFromData with invalid pdf
    Classification: Unclassified
           Product: poppler
           Version: unspecified
          Platform: x86-64 (AMD64)
        OS/Version: Linux (All)
            Status: NEW
          Severity: critical
          Priority: medium
         Component: general
        AssignedTo: poppler-bugs at lists.freedesktop.org
        ReportedBy: benito at benibela.de


Created attachment 53903
  --> https://bugs.freedesktop.org/attachment.cgi?id=53903
crashing pdfs

Poppler 0.16 crashes in Document::loadFromData, if the pdf is truncated,
although Document::load works fine.


See the pdfs in the attached file for examples.

Backtraces:

"/tmp/test13725.pdf" 

#0  0x00007ffff4b7924f in MemStream::getChar() () from
/usr/lib/libpoppler.so.13
#1  0x00007ffff4b62ccf in Lexer::getChar(bool) () from
/usr/lib/libpoppler.so.13
#2  0x00007ffff4b62daa in Lexer::getObj(Object*, int) () from
/usr/lib/libpoppler.so.13
#3  0x00007ffff4b6ca14 in Parser::Parser(XRef*, Lexer*, bool) () from
/usr/lib/libpoppler.so.13
#4  0x00007ffff4b7c3bd in XRef::readXRef(unsigned int*, std::vector<unsigned
int, std::allocator<unsigned int> >*) () from /usr/lib/libpoppler.so.13
#5  0x00007ffff4b7c73c in XRef::XRef(BaseStream*, unsigned int, unsigned int,
bool*, bool) () from /usr/lib/libpoppler.so.13
#6  0x00007ffff4b6f692 in PDFDoc::setup(GooString*, GooString*) () from
/usr/lib/libpoppler.so.13
#7  0x00007ffff4b6f8a9 in PDFDoc::PDFDoc(BaseStream*, GooString*, GooString*,
void*) () from /usr/lib/libpoppler.so.13
#8  0x00007ffff79896fc in Poppler::Document::loadFromData(QByteArray const&,
QByteArray const&, QByteArray const&) () from /usr/lib/libpoppler-qt4.so.3
#9  0x00000000006318b1 in PDFDocument::PDFDocument (this=0x1a82280,
pdfConfig=0xe3cde0) at PDFDocument.cpp:1864


"/tmp/test13725.pdf" 

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff4b7924f in MemStream::getChar() () from /usr/lib/libpoppler.so.13
(gdb) bt
#0  0x00007ffff4b7924f in MemStream::getChar() () from
/usr/lib/libpoppler.so.13
#1  0x00007ffff4b62ccf in Lexer::getChar(bool) () from
/usr/lib/libpoppler.so.13
#2  0x00007ffff4b62daa in Lexer::getObj(Object*, int) () from
/usr/lib/libpoppler.so.13
#3  0x00007ffff4b6ca14 in Parser::Parser(XRef*, Lexer*, bool) () from
/usr/lib/libpoppler.so.13
#4  0x00007ffff4b7c3bd in XRef::readXRef(unsigned int*, std::vector<unsigned
int, std::allocator<unsigned int> >*) () from /usr/lib/libpoppler.so.13
#5  0x00007ffff4b7c73c in XRef::XRef(BaseStream*, unsigned int, unsigned int,
bool*, bool) () from /usr/lib/libpoppler.so.13
#6  0x00007ffff4b6f692 in PDFDoc::setup(GooString*, GooString*) () from
/usr/lib/libpoppler.so.13
#7  0x00007ffff4b6f8a9 in PDFDoc::PDFDoc(BaseStream*, GooString*, GooString*,
void*) () from /usr/lib/libpoppler.so.13
#8  0x00007ffff79896fc in Poppler::Document::loadFromData(QByteArray const&,
QByteArray const&, QByteArray const&) () from /usr/lib/libpoppler-qt4.so.3
#9  0x00000000006318b1 in PDFDocument::PDFDocument (this=0x1a53fb0,
pdfConfig=0xe3cde0) at PDFDocument.cpp:1864
#10 0x000000000048ca13 in Texmaker::newPdfPreviewer (this=0xe2d090) at
texmaker.cpp:4242





...



"/tmp/test13759.pdf" 

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff4b7924f in MemStream::getChar() () from /usr/lib/libpoppler.so.13
(gdb) bt
#0  0x00007ffff4b7924f in MemStream::getChar() () from
/usr/lib/libpoppler.so.13
#1  0x00007ffff4b62ccf in Lexer::getChar(bool) () from
/usr/lib/libpoppler.so.13
#2  0x00007ffff4b62daa in Lexer::getObj(Object*, int) () from
/usr/lib/libpoppler.so.13
#3  0x00007ffff4b6ca14 in Parser::Parser(XRef*, Lexer*, bool) () from
/usr/lib/libpoppler.so.13
#4  0x00007ffff4b7c3bd in XRef::readXRef(unsigned int*, std::vector<unsigned
int, std::allocator<unsigned int> >*) () from /usr/lib/libpoppler.so.13
#5  0x00007ffff4b7c73c in XRef::XRef(BaseStream*, unsigned int, unsigned int,
bool*, bool) () from /usr/lib/libpoppler.so.13
#6  0x00007ffff4b6f692 in PDFDoc::setup(GooString*, GooString*) () from
/usr/lib/libpoppler.so.13
#7  0x00007ffff4b6f8a9 in PDFDoc::PDFDoc(BaseStream*, GooString*, GooString*,
void*) () from /usr/lib/libpoppler.so.13
#8  0x00007ffff79896fc in Poppler::Document::loadFromData(QByteArray const&,
QByteArray const&, QByteArray const&) () from /usr/lib/libpoppler-qt4.so.3
#9  0x00000000006318b1 in PDFDocument::PDFDocument (this=0x1a546d0,
pdfConfig=0xe3cde0) at PDFDocument.cpp:1864




Program to load them:
 QFile f("/tmp/test"+QString::number(i)+".pdf");
 if (!f.open(QFile::ReadOnly)) qDebug() << "file open failed";        
 Poppler::Document* doc = Poppler::Document::loadFromData(f.readAll());

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the Poppler-bugs mailing list