Comment 6 for bug 180887

Revision history for this message
In , Brad Hards (bradh) wrote :

It is very ugly in valgrind (just spins after this):
[bradh@conferta tests]$ valgrind ./test-poppler-qt4 ~/samples/pdf/bug13972.pdf
==7719== Memcheck, a memory error detector.
==7719== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al.
==7719== Using LibVEX rev 1730, a library for dynamic binary translation.
==7719== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
==7719== Using valgrind-3.4.0.SVN, a dynamic binary instrumentation framework.
==7719== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al.
==7719== For more details, rerun with: -v
==7719==
==7719== Conditional jump or move depends on uninitialised value(s)
==7719== at 0x4F5FD9D: Parser::getObj(Object*, unsigned char*, CryptAlgorithm, int, int, int) (Parser.cc:127)
==7719== by 0x4F600B4: Parser::getObj(Object*, unsigned char*, CryptAlgorithm, int, int, int) (Parser.cc:86)
==7719== by 0x4F600B4: Parser::getObj(Object*, unsigned char*, CryptAlgorithm, int, int, int) (Parser.cc:86)
==7719== by 0x4F600B4: Parser::getObj(Object*, unsigned char*, CryptAlgorithm, int, int, int) (Parser.cc:86)
==7719== by 0x4F6BD07: XRef::fetch(int, int, Object*) (XRef.cc:906)
==7719== by 0x4F05963: Catalog::Catalog(XRef*) (XRef.h:79)
==7719== by 0x4F60978: PDFDoc::setup(GooString*, GooString*) (PDFDoc.cc:206)
==7719== by 0x4F60B6E: PDFDoc::PDFDoc(GooString*, GooString*, GooString*, void*) (PDFDoc.cc:102)
==7719== by 0x4C459DA: Poppler::Document::load(QString const&, QByteArray const&, QByteArray const&) (poppler-private.h:106)
==7719== by 0x404E54: main (test-poppler-qt4.cpp:108)
==7719==
==7719== Invalid read of size 1
==7719== at 0x4F0C11E: DecryptStream::getChar() (Decrypt.cc:271)
==7719== by 0x4F5FD97: Parser::getObj(Object*, unsigned char*, CryptAlgorithm, int, int, int) (Parser.cc:127)
==7719== by 0x4F600B4: Parser::getObj(Object*, unsigned char*, CryptAlgorithm, int, int, int) (Parser.cc:86)
==7719== by 0x4F600B4: Parser::getObj(Object*, unsigned char*, CryptAlgorithm, int, int, int) (Parser.cc:86)
==7719== by 0x4F600B4: Parser::getObj(Object*, unsigned char*, CryptAlgorithm, int, int, int) (Parser.cc:86)
==7719== by 0x4F6BD07: XRef::fetch(int, int, Object*) (XRef.cc:906)
==7719== by 0x4F05963: Catalog::Catalog(XRef*) (XRef.h:79)
==7719== by 0x4F60978: PDFDoc::setup(GooString*, GooString*) (PDFDoc.cc:206)
==7719== by 0x4F60B6E: PDFDoc::PDFDoc(GooString*, GooString*, GooString*, void*) (PDFDoc.cc:102)
==7719== by 0x4C459DA: Poppler::Document::load(QString const&, QByteArray const&, QByteArray const&) (poppler-private.h:106)
==7719== by 0x404E54: main (test-poppler-qt4.cpp:108)
==7719== Address 0x97a7e08 is 0 bytes after a block of size 328 alloc'd
==7719== at 0x4A06579: operator new(unsigned long) (vg_replace_malloc.c:230)
==7719== by 0x4F5FD4B: Parser::getObj(Object*, unsigned char*, CryptAlgorithm, int, int, int) (Parser.cc:125)
==7719== by 0x4F600B4: Parser::getObj(Object*, unsigned char*, CryptAlgorithm, int, int, int) (Parser.cc:86)
==7719== by 0x4F600B4: Parser::getObj(Object*, unsigned char*, CryptAlgorithm, int, int, int) (Parser.cc:86)
==7719== by 0x4F600B4: Parser::getObj(Object*, unsigned char*, CryptAlgorithm, int, int, int) (Parser.cc:86)
==7719== by 0x4F6BD07: XRef::fetch(int, int, Object*) (XRef.cc:906)
==7719== by 0x4F05963: Catalog::Catalog(XRef*) (XRef.h:79)
==7719== by 0x4F60978: PDFDoc::setup(GooString*, GooString*) (PDFDoc.cc:206)
==7719== by 0x4F60B6E: PDFDoc::PDFDoc(GooString*, GooString*, GooString*, void*) (PDFDoc.cc:102)
==7719== by 0x4C459DA: Poppler::Document::load(QString const&, QByteArray const&, QByteArray const&) (poppler-private.h:106)
==7719== by 0x404E54: main (test-poppler-qt4.cpp:108)
==7719==
==7719== ERROR SUMMARY: 2967270 errors from 2 contexts (suppressed: 4 from 1)
==7719== malloc/free: in use at exit: 3,584,288 bytes in 3,975 blocks.
==7719== malloc/free: 25,074 allocs, 21,099 frees, 21,535,259,242 bytes allocated.
==7719== For counts of detected errors, rerun with: -v
==7719== searching for pointers to 3,975 not-freed blocks.
==7719== checked 1,292,208 bytes.
==7719==
==7719== LEAK SUMMARY:
==7719== definitely lost: 3,323,330 bytes in 32 blocks.
==7719== possibly lost: 1,656 bytes in 35 blocks.
==7719== still reachable: 259,302 bytes in 3,908 blocks.
==7719== suppressed: 0 bytes in 0 blocks.
==7719== Rerun with --leak-check=full to see details of leaked memory.