summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor@ghostscript.com>2009-07-18 15:32:31 +0200
committerTor Andersson <tor@ghostscript.com>2009-07-18 15:32:31 +0200
commit7e934e0b71855fcb702ffaea6aa2868b53d5281d (patch)
tree852c232b3dd82c6c5c40d5f1caaec2f5f09cb5d0
parent7dc201a9cd2fb722264d7fe85a7ba73adc633669 (diff)
downloadmupdf-7e934e0b71855fcb702ffaea6aa2868b53d5281d.tar.xz
Treat /ID key in trailer as optional even when encryption is used.
-rw-r--r--mupdf/pdf_crypt.c12
-rw-r--r--mupdf/pdf_xref.c2
2 files changed, 7 insertions, 7 deletions
diff --git a/mupdf/pdf_crypt.c b/mupdf/pdf_crypt.c
index 7d06d1b4..eb163304 100644
--- a/mupdf/pdf_crypt.c
+++ b/mupdf/pdf_crypt.c
@@ -259,12 +259,12 @@ pdf_newdecrypt(pdf_crypt **cp, fz_obj *enc, fz_obj *id)
return fz_throw("unsupported encryption algorithm: %d", crypt->v);
}
- if (!fz_isarray(id) || fz_arraylen(id) != 2)
- goto cleanup;
- obj = fz_arrayget(id, 0);
- if (!fz_isstring(obj))
- goto cleanup;
- crypt->id = fz_keepobj(obj);
+ if (fz_isarray(id) && fz_arraylen(id) == 2)
+ {
+ obj = fz_arrayget(id, 0);
+ if (!fz_isstring(obj))
+ crypt->id = fz_keepobj(obj);
+ }
crypt->keylen = crypt->len + 5;
if (crypt->keylen > 16)
diff --git a/mupdf/pdf_xref.c b/mupdf/pdf_xref.c
index abcf0a10..510f1354 100644
--- a/mupdf/pdf_xref.c
+++ b/mupdf/pdf_xref.c
@@ -148,7 +148,7 @@ pdf_decryptxref(pdf_xref *xref)
encrypt = fz_dictgets(xref->trailer, "Encrypt");
id = fz_dictgets(xref->trailer, "ID");
- if (encrypt && id)
+ if (encrypt)
{
if (fz_isnull(encrypt))
return fz_okay;