if (!strcmp(tok3, "[")) {
i = 0;
while (pst->getToken(tok1, sizeof(tok1), &n1) &&
+--- xpdf/Decrypt.cc.orig 2010-01-28 14:19:51.000000000 -0800
++++ xpdf/Decrypt.cc 2010-02-02 16:04:53.000000000 -0800
+@@ -596,6 +596,7 @@
+ s->bufIdx = 0;
+ if (last) {
+ n = s->buf[15];
++ if(!n || n>16) n=16;
+ for (i = 15; i >= n; --i) {
+ s->buf[i] = s->buf[i-n];
+ }
+--- xpdf/Catalog.cc.orig 2010-02-02 16:17:24.000000000 -0800
++++ xpdf/Catalog.cc 2010-02-02 16:18:48.000000000 -0800
+@@ -193,7 +193,7 @@
+ if (!kids.isArray()) {
+ error(-1, "Kids object (page %d) is wrong type (%s)",
+ start+1, kids.getTypeName());
+- goto err1;
++ return start;
+ }
+ for (i = 0; i < kids.arrayGetLength(); ++i) {
+ kids.arrayGetNF(i, &kidRef);