Opened 3 years ago

Closed 3 years ago

#288 closed defect (fixed)

Crash when loading a corrupt PDF

Reported by: dryeo Owned by: gyoung
Priority: major Milestone: 1.4.0
Component: Backend Version: 1.3.6
Keywords: Cc: dave.r.yeo@…

Description

When loading the attached corrupt PDF, Lucide crashes, see attached trp file. Other PDF readers error out with a message about not being able to display the PDF or similar, or in the case of the JS viewer, just don't show anything. The exception being qpdfview which also crashes. Note that this is actually 1.36rc1

Attachments (2)

31VB5600.pdf (141.2 KB) - added by dryeo 3 years ago.
Corrupt PDF
00E6_03.TRP (21.8 KB) - added by dryeo 3 years ago.
trp file

Download all attachments as: .zip

Change History (13)

Changed 3 years ago by dryeo

Corrupt PDF

Changed 3 years ago by dryeo

trp file

comment:1 Changed 3 years ago by dryeo

Note that the PDF was probably an incomplete download of a owners manual for a lawnmower. Similar PDFs are about 1.5 MBs

comment:2 Changed 3 years ago by gyoung

This is occurring while a thumbnail is being created. ea_data is probably garbage. Need a way to check if the file is really a valid pdf before making the thumbnail.

comment:3 Changed 3 years ago by gyoung

See code in LoadFile? (lupoppler.cpp ~1568) Use this check in makeThumbs? Then report error.

newDoc = new PDFDoc(filename_g, password_g, password_g);

if (password_g) {

delete password_g;

}

if (!newDoc->isOk()) {

err = newDoc->getErrorCode(); delete newDoc;

if ( errorCode != NULL ) {

switch ( err ) {

case errOpenFile:

*errorCode = LU_LDERR_OPEN_ERROR; break;

case errBadCatalog: case errDamaged:

*errorCode = LU_LDERR_DAMAGED; break;

case errEncrypted:

*errorCode = LU_LDERR_ENCRYPTED; break;

case errFileIO:

*errorCode = LU_LDERR_READ_ERROR; break;

default:

*errorCode = LU_LDERR_CUSTOM; set_error( error, "(error %d)", err ); break;

}

}

return FALSE;

comment:4 Changed 3 years ago by gyoung

  • Owner set to gyoung
  • Status changed from new to assigned

OK you can actually open this file in Lucide. If you turn off the thumbnail code it opens with a table of contents in the navigation window but no page in the main window. After discovering this I checked to see if getPageCount was greater than 0 and returned if it wasn't (as in this case). This fixed the problem with this file.

comment:5 Changed 3 years ago by gyoung

  • Resolution set to fixed
  • Status changed from assigned to closed

CS [536]

comment:6 Changed 3 years ago by gyoung

  • Resolution fixed deleted
  • Status changed from closed to reopened

comment:7 Changed 3 years ago by gyoung

I reopened this to discuss how to handle this error. I added code which prevents this file from loading and gives an error message "Load error: The PDF has no pages!". Of course this does prevent someone from viewing the table of contents which is present in this case. Is this an acceptable solution?

comment:8 Changed 3 years ago by gyoung

I could use the less descriptive but already present and translated "Load error: File damaged!". This would save having to translate the message and probably would be just as good for most end users.

comment:9 Changed 3 years ago by gyoung

  • Milestone set to 1.4.0

comment:10 Changed 3 years ago by dryeo

I think the "Load error: file damaged" message might be better as it informs the user of a damaged file rather then an improperly created PDF.

comment:11 Changed 3 years ago by gyoung

  • Resolution set to fixed
  • Status changed from reopened to closed

Went with Dave's suggestion above CS [541]

Note: See TracTickets for help on using tickets.