[poppler] Fix rare segmentation fault in CID font vertical exceptions assignment

Peter A. Kerzum kerzum at yandex-team.ru
Wed Jun 29 15:25:53 PDT 2011


Ok, I'll prepare the collection in a while.
These are public documents downloaded from internet.

We have also seen interesting cases of correct, but quite different results for 
i386 and x86_64 platforms in terms of text output sequence.

On Wednesday 29 June 2011 12:18:41 Albert Astals Cid wrote:
> A Wednesday, June 29, 2011, Peter A. Kerzum va escriure:
> > Albert,
> > 
> > please excuse me for late reply
> > actually I have quite a collection of PDFs that crash poppler in
> > different ways, even with rendering disabled
> > 
> > If you are still interested, I can share
> 
> Of course I am.
> 
> If possible it would be good if you could create bugs in
> bugs.freedesktop.org and attach them there. If the pdf files are private
> just send them to my mail address.
> 
> Albert
> 
> > - Peter
> > 
> > В сообщении от Четверг 16 апреля 2009 02:03:04 автор Albert Astals Cid
> > 
> > написал:
> > > A Dimecres, 15 d'abril de 2009, Peter Kerzum va escriure:
> > > > Good morning!
> > > > 
> > > > While using xpdf we encountered an error that applies both to xpdf
> > > > and poppler. It seems to be a result of unattended copy-paste -
> > > > index of horizontal exception is applied to vertical
> > > > 
> > > > Please consider applying the following patch:
> > > > 
> > > > --- a/GfxFont.cc
> > > > +++ b/GfxFont.cc
> > > > @@ -1590,11 +1590,11 @@ GfxCIDFont::GfxCIDFont(XRef *xref, char
> > > > *tagA, Ref idA, GooString *nameA,
> > > > 
> > > >           if (obj3.arrayGet(k, &obj4)->isNum() &&
> > > >           
> > > >               obj3.arrayGet(k+1, &obj5)->isNum() &&
> > > >               obj3.arrayGet(k+2, &obj6)->isNum()) {
> > > > 
> > > > -           widths.excepsV[widths.nExceps].first = j;
> > > > -           widths.excepsV[widths.nExceps].last = j;
> > > > -           widths.excepsV[widths.nExceps].height = obj4.getNum() *
> > > > 0.001; -           widths.excepsV[widths.nExceps].vx = obj5.getNum()
> > > > * 0.001; -           widths.excepsV[widths.nExceps].vy =
> > > > obj6.getNum() * 0.001; +          
> > > > widths.excepsV[widths.nExcepsV].first = j; +          
> > > > widths.excepsV[widths.nExcepsV].last = j;
> > > > +           widths.excepsV[widths.nExcepsV].height = obj4.getNum() *
> > > > 0.001; +           widths.excepsV[widths.nExcepsV].vx = obj5.getNum()
> > > > * 0.001; +           widths.excepsV[widths.nExcepsV].vy =
> > > > obj6.getNum() * 0.001;
> > > > 
> > > >             ++j;
> > > >             ++widths.nExcepsV;
> > > >           
> > > >           } else {
> > > 
> > > Can we get a sample PDF that has this problem?
> > > 
> > > Albert

-- 
Пётр Керзум
Группа разработки поисковой платформы
СПб, тел. 8508


More information about the poppler mailing list