summaryrefslogtreecommitdiff
path: root/source/pdf/pdf-crypt.c
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2018-03-28 15:17:27 +0200
committerTor Andersson <tor.andersson@artifex.com>2018-04-03 21:21:44 +0200
commitef3cfb2a49b5be82d56d783f505319754dc65cb8 (patch)
treef299436312d6230c08289b61e9bad51a4dd31681 /source/pdf/pdf-crypt.c
parentd9f0fdfe1ac986816a3376ee0271f84fb549b0bf (diff)
downloadmupdf-ef3cfb2a49b5be82d56d783f505319754dc65cb8.tar.xz
Don't implicitly drop in fz_open_* chained filters.
Diffstat (limited to 'source/pdf/pdf-crypt.c')
-rw-r--r--source/pdf/pdf-crypt.c26
1 files changed, 6 insertions, 20 deletions
diff --git a/source/pdf/pdf-crypt.c b/source/pdf/pdf-crypt.c
index 2e31f356..1056b4fe 100644
--- a/source/pdf/pdf-crypt.c
+++ b/source/pdf/pdf-crypt.c
@@ -1023,7 +1023,7 @@ pdf_open_crypt_imp(fz_context *ctx, fz_stream *chain, pdf_crypt *crypt, pdf_cryp
if (stmf->method == PDF_CRYPT_AESV2 || stmf->method == PDF_CRYPT_AESV3)
return fz_open_aesd(ctx, chain, key, len);
- return chain;
+ return fz_keep_stream(ctx, chain);
}
fz_stream *
@@ -1035,27 +1035,13 @@ pdf_open_crypt(fz_context *ctx, fz_stream *chain, pdf_crypt *crypt, int num, int
fz_stream *
pdf_open_crypt_with_filter(fz_context *ctx, fz_stream *chain, pdf_crypt *crypt, pdf_obj *name, int num, int gen)
{
- fz_var(chain);
-
- fz_try(ctx)
- {
- if (!pdf_name_eq(ctx, name, PDF_NAME_Identity))
- {
- pdf_crypt_filter cf;
- fz_stream *tmp;
- pdf_parse_crypt_filter(ctx, &cf, crypt, name);
- tmp = chain;
- chain = NULL;
- chain = pdf_open_crypt_imp(ctx, tmp, crypt, &cf, num, gen);
- }
- }
- fz_catch(ctx)
+ if (!pdf_name_eq(ctx, name, PDF_NAME_Identity))
{
- fz_drop_stream(ctx, chain);
- fz_rethrow(ctx);
+ pdf_crypt_filter cf;
+ pdf_parse_crypt_filter(ctx, &cf, crypt, name);
+ return pdf_open_crypt_imp(ctx, chain, crypt, &cf, num, gen);
}
-
- return chain;
+ return fz_keep_stream(ctx, chain);
}
void