poppler/Decrypt.cc | 8 ++++++++ poppler/Decrypt.h | 3 +++ 2 files changed, 11 insertions(+)
New commits: commit bf69beeb257cfd750c6ddc8b68aeb859b36380b2 Author: David Benjamin <[email protected]> Date: Sat Jun 20 23:51:09 2009 +0200 Make DecryptStream return sane values for getPos() Many streams (notably JBIG2Stream) expect wrapped streams to return correct values for getPos(), i.e. increments by 1 when readChar() called, etc. Fixes bug #19706. diff --git a/poppler/Decrypt.cc b/poppler/Decrypt.cc index 8719539..ca294d3 100644 --- a/poppler/Decrypt.cc +++ b/poppler/Decrypt.cc @@ -16,6 +16,7 @@ // Copyright (C) 2008 Julien Rebetez <[email protected]> // Copyright (C) 2008 Albert Astals Cid <[email protected]> // Copyright (C) 2009 Matthias Franz <[email protected]> +// Copyright (C) 2009 David Benjamin <[email protected]> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -237,6 +238,7 @@ DecryptStream::~DecryptStream() { void DecryptStream::reset() { int i; + charactersRead = 0; str->reset(); switch (algo) { case cryptRC4: @@ -254,6 +256,10 @@ void DecryptStream::reset() { } } +int DecryptStream::getPos() { + return charactersRead; +} + int DecryptStream::getChar() { Guchar in[16]; int c, i; @@ -288,6 +294,8 @@ int DecryptStream::getChar() { } break; } + if (c != EOF) + charactersRead++; return c; } diff --git a/poppler/Decrypt.h b/poppler/Decrypt.h index 6716f72..feb7014 100644 --- a/poppler/Decrypt.h +++ b/poppler/Decrypt.h @@ -14,6 +14,7 @@ // under GPL version 2 or later // // Copyright (C) 2008 Julien Rebetez <[email protected]> +// Copyright (C) 2009 David Benjamin <[email protected]> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -90,6 +91,7 @@ public: virtual void reset(); virtual int getChar(); virtual int lookChar(); + virtual int getPos(); virtual GBool isBinary(GBool last); virtual Stream *getUndecodedStream() { return this; } @@ -98,6 +100,7 @@ private: CryptAlgorithm algo; int objKeyLength; Guchar objKey[16 + 9]; + int charactersRead; // so that getPos() can be correct union { DecryptRC4State rc4; _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
