[poppler] [PATCH] upstreaming some LibreOffice patches

Stephan Bergmann sbergman at redhat.com
Tue Nov 1 15:10:06 UTC 2016


On 10/29/2016 12:28 AM, Albert Astals Cid wrote:
> El dijous, 27 d’octubre de 2016, a les 15:39:39 CEST, Michael Stahl va
> escriure:
>> hi,
>
> 003 is already fixed in our code, for 4 and 5, can we have files that show
> those ubsan errors?

* For
0004-Work-around-fsanitize-shift.patch, an input file that shows the 
error is 
<https://cgit.freedesktop.org/libreoffice/core/plain/sd/qa/unit/data/pdf/txtpic.pdf?id=acf531be6a423f9b74997b29a8cafe82aa18423c>:

> Stream.cc:2975:35: runtime error: left shift of negative value -35
>     #0 0x9068c3 in DCTStream::readProgressiveDataUnit(DCTHuffTable*, DCTHuffTable*, int*, int*) workdir/UnpackedTarball/poppler/poppler/Stream.cc:2975:35
>     #1 0x8f2e23 in DCTStream::readScan() workdir/UnpackedTarball/poppler/poppler/Stream.cc:2867:13
>     #2 0x8eeb9e in DCTStream::reset() workdir/UnpackedTarball/poppler/poppler/Stream.cc:2556:7
>     #3 0x5b02b9 in pdfi::PngHelper::createPng(std::__debug::vector<unsigned char, std::allocator<unsigned char> >&, Stream*, int, int, GfxImageColorMap*, Stream*, int, int, GfxImageColorMap*) sdext/source/pdfimport/xpdfwrapper/pnghelper.cxx:253:13
>     #4 0x551439 in pdfi::writePng_(std::__debug::vector<unsigned char, std::allocator<unsigned char> >&, Stream*, int, int, GfxImageColorMap*, Stream*, int, int, GfxImageColorMap*, bool) sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx:365:5
>     #5 0x563fe5 in pdfi::PDFOutDev::drawSoftMaskedImage(GfxState*, Object*, Stream*, int, int, GfxImageColorMap*, bool, Stream*, int, int, GfxImageColorMap*, bool) sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx:1066:5
>     #6 0x7a67c5 in Gfx::doImage(Object*, Stream*, bool) workdir/UnpackedTarball/poppler/poppler/Gfx.cc:4700:7
>     #7 0x763746 in Gfx::opXObject(Object*, int) workdir/UnpackedTarball/poppler/poppler/Gfx.cc:4207:7
>     #8 0x77f7a2 in Gfx::go(bool) workdir/UnpackedTarball/poppler/poppler/Gfx.cc:763:7
>     #9 0x77f10f in Gfx::display(Object*, bool) workdir/UnpackedTarball/poppler/poppler/Gfx.cc:729:3
>     #10 0x88b0e6 in Page::displaySlice(OutputDev*, double, double, int, bool, bool, int, int, int, int, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) workdir/UnpackedTarball/poppler/poppler/Page.cc:601:10
>     #11 0x88ac46 in Page::display(OutputDev*, double, double, int, bool, bool, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) workdir/UnpackedTarball/poppler/poppler/Page.cc:521:3
>     #12 0x897596 in PDFDoc::displayPage(OutputDev*, int, double, double, int, bool, bool, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) workdir/UnpackedTarball/poppler/poppler/PDFDoc.cc:491:20
>     #13 0x5dbeb5 in main sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx:142:14
>     #14 0x7f0074071730 in __libc_start_main (/lib64/libc.so.6+0x20730)
>     #15 0x459e48 in _start (instdir/program/xpdfimport+0x459e48)

* For 0005-Avoid-UBSan-warning-about-undefined-downcast.patch, an input 
file that shows the error is 
<https://cgit.freedesktop.org/libreoffice/core/plain/xmlsecurity/qa/unit/pdfsigning/data/good.pdf?id=acf531be6a423f9b74997b29a8cafe82aa18423c> 
(and the error is as given in the patch's commit message).

(In both cases. what the corresponding LibreOffice test code does is 
call a LibreOffice helper executable instdir/program/xpdfimport, which 
in turn calls into poppler, with two arguments, the pathname of the 
respective .pdf input file and 
instdir/share/xpdfimport/xpdfimport_err.pdf, where the latter is a 
pre-generated file that is returned upon running into an error, and an 
empty newline input on stdin, as that xpdfimport process expects a 
password there in case of encrypted documents.)

>> we have some patches to build our bundled poppler library in LibreOffice
>> that may be of general interest, see attachments.



More information about the poppler mailing list