mirror of
https://github.com/qpdf/qpdf.git
synced 2024-12-22 10:58:58 +00:00
Explicitly check root dictionary type
Very badly corrupted files may not have a retrievable root dictionary. Handle that as a special case so that a more helpful error message can be provided.
This commit is contained in:
parent
ede1255a82
commit
a94a729fee
@ -2028,7 +2028,14 @@ QPDF::getTrailer()
|
||||
QPDFObjectHandle
|
||||
QPDF::getRoot()
|
||||
{
|
||||
return this->trailer.getKey("/Root");
|
||||
QPDFObjectHandle root = this->trailer.getKey("/Root");
|
||||
if (! root.isDictionary())
|
||||
{
|
||||
throw QPDFExc(qpdf_e_damaged_pdf, file->getName(),
|
||||
"", file->getLastOffset(),
|
||||
"unable to find /Root dictionary");
|
||||
}
|
||||
return root;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1,2 +1,2 @@
|
||||
WARNING: bad35.pdf (object 1 0, file position 521): supposed object stream 1 has wrong type
|
||||
operation for Dictionary object attempted on object of wrong type
|
||||
bad35.pdf (file position 521): unable to find /Root dictionary
|
||||
|
@ -1,2 +1,2 @@
|
||||
WARNING: bad35.pdf (object 1 0, file position 521): supposed object stream 1 has wrong type
|
||||
operation for Dictionary object attempted on object of wrong type
|
||||
bad35.pdf (file position 521): unable to find /Root dictionary
|
||||
|
@ -12,4 +12,4 @@ WARNING: issue-100.pdf (object 5 0, file position 418): /Length key in stream di
|
||||
WARNING: issue-100.pdf (object 5 0, file position 489): attempting to recover stream length
|
||||
WARNING: issue-100.pdf (trailer, file position 953): expected dictionary key but found non-name object; inserting key /QPDFFake1
|
||||
WARNING: issue-100.pdf (trailer, file position 953): dictionary ended prematurely; using null as value for last key
|
||||
operation for Dictionary object attempted on object of wrong type
|
||||
issue-100.pdf (file position 1138): unable to find /Root dictionary
|
||||
|
@ -1,3 +1,3 @@
|
||||
WARNING: issue-118.pdf (file position 732): loop detected resolving object 2 0
|
||||
WARNING: issue-118.pdf (xref stream: object 8 0, file position 732): supposed object stream 2 is not a stream
|
||||
operation for Dictionary object attempted on object of wrong type
|
||||
issue-118.pdf (file position 732): unable to find /Root dictionary
|
||||
|
@ -1,4 +1,4 @@
|
||||
WARNING: issue-99.pdf: file is damaged
|
||||
WARNING: issue-99.pdf (file position 3526): xref not found
|
||||
WARNING: issue-99.pdf: Attempting to reconstruct cross-reference table
|
||||
operation for Dictionary object attempted on object of wrong type
|
||||
issue-99.pdf (file position 4793): unable to find /Root dictionary
|
||||
|
@ -2,4 +2,4 @@ WARNING: issue-99b.pdf: file is damaged
|
||||
WARNING: issue-99b.pdf (object 1 0, file position 9): object with ID 0
|
||||
WARNING: issue-99b.pdf: Attempting to reconstruct cross-reference table
|
||||
WARNING: issue-99b.pdf: object 1 0 not found in file after regenerating cross reference table
|
||||
operation for Dictionary object attempted on object of wrong type
|
||||
issue-99b.pdf (file position 757): unable to find /Root dictionary
|
||||
|
Loading…
Reference in New Issue
Block a user