poppler/Parser.cc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
New commits: commit bef2c42f381c74fdb8bbb43babe1a93a0e229fb0 Author: Adrian Johnson <[email protected]> Date: Thu Jan 3 15:27:36 2013 +1030 Parser: return error if stream encountered when allowStreams = false Opening a PDF file where the first object is a stream prints a "Command token too long" error message. This is caused by the Linearization check in Linearization::Linearization reading objects with allowStreams = false. The Parser ignores the "stream" token and tries reading the next token which is usually binary data. Setting allowStreams to true will not work since the stream length is often an indirect object and at this point the XRef has not been created. Fix this by making Parser return an error object if the "stream" token is encountered when allowStreams is false. Bug 58966 diff --git a/poppler/Parser.cc b/poppler/Parser.cc index 5b80293..431a279 100644 --- a/poppler/Parser.cc +++ b/poppler/Parser.cc @@ -125,14 +125,14 @@ Object *Parser::getObj(Object *obj, GBool simpleOnly, } // stream objects are not allowed inside content streams or // object streams - if (allowStreams && buf2.isCmd("stream")) { - if ((str = makeStream(obj, fileKey, encAlgorithm, keyLength, - objNum, objGen, recursion + 1, - strict))) { - obj->initStream(str); + if (buf2.isCmd("stream")) { + if (allowStreams && (str = makeStream(obj, fileKey, encAlgorithm, keyLength, + objNum, objGen, recursion + 1, + strict))) { + obj->initStream(str); } else { - obj->free(); - obj->initError(); + obj->free(); + obj->initError(); } } else { shift(); _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
