parent
98c6676b5c
commit
f1b65b7b3d
@ -1,45 +0,0 @@
|
||||
From c2663e51238ec8256da7fc61ad580db891d9fe9a Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Rasmussen <sebras@gmail.com>
|
||||
Date: Mon, 25 Sep 2017 13:04:11 +0200
|
||||
Subject: [PATCH] Bug 698592: Mark variable fz_var(), avoiding optimization.
|
||||
|
||||
The change in 2707fa9e8e6d17d794330e719dec1b08161fb045
|
||||
in build_filter_chain() allows for the variable chain
|
||||
to reside in a register, which means that the bug is
|
||||
likely to only be visible if built under optimization.
|
||||
|
||||
First the chain variable is transferred to chain2, then
|
||||
set to NULL, then when an exception occurs in build_filter()
|
||||
the filter chain will be freed by build_filter(). Next
|
||||
the expectation is that execution proceeds to fz_catch()
|
||||
where fz_drop_stream() would be called with chain == NULL.
|
||||
|
||||
However due to the chain variable residing in a register,
|
||||
its value is not NULL as expected, but was reset to its
|
||||
original value upon the exception (since they use setjmp()),
|
||||
hence fz_drop_stream() is called with a non-NULL value.
|
||||
|
||||
Marking the chain variable with fz_var() prevents the
|
||||
compiler from allowing the chain variable to reside in
|
||||
a register and hence its value will remain NULL and
|
||||
never be reset.
|
||||
---
|
||||
source/pdf/pdf-stream.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/source/pdf/pdf-stream.c b/source/pdf/pdf-stream.c
|
||||
index baf9f0a..56592b0 100644
|
||||
--- a/source/pdf/pdf-stream.c
|
||||
+++ b/source/pdf/pdf-stream.c
|
||||
@@ -246,6 +246,8 @@ build_filter_chain(fz_context *ctx, fz_stream *chain, pdf_document *doc, pdf_obj
|
||||
pdf_obj *p;
|
||||
int i, n;
|
||||
|
||||
+ fz_var(chain);
|
||||
+
|
||||
fz_try(ctx)
|
||||
{
|
||||
n = pdf_array_len(ctx, fs);
|
||||
--
|
||||
2.9.1
|
||||
|
@ -1,26 +0,0 @@
|
||||
From 82df2631d7d0446b206ea6b434ea609b6c28b0e8 Mon Sep 17 00:00:00 2001
|
||||
From: Tor Andersson <tor.andersson@artifex.com>
|
||||
Date: Mon, 16 Oct 2017 13:14:25 +0200
|
||||
Subject: [PATCH] Check for integer overflow when validating new style xref
|
||||
Index.
|
||||
|
||||
---
|
||||
source/pdf/pdf-xref.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c
|
||||
index 66bd0ed..6292793 100644
|
||||
--- a/source/pdf/pdf-xref.c
|
||||
+++ b/source/pdf/pdf-xref.c
|
||||
@@ -924,7 +924,7 @@ pdf_read_new_xref_section(fz_context *ctx, pdf_document *doc, fz_stream *stm, fz
|
||||
pdf_xref_entry *table;
|
||||
int i, n;
|
||||
|
||||
- if (i0 < 0 || i1 < 0)
|
||||
+ if (i0 < 0 || i1 < 0 || (i0+i1) < 0)
|
||||
fz_throw(ctx, FZ_ERROR_GENERIC, "negative xref stream entry index");
|
||||
//if (i0 + i1 > pdf_xref_len(ctx, doc))
|
||||
// fz_throw(ctx, FZ_ERROR_GENERIC, "xref stream has too many entries");
|
||||
--
|
||||
2.9.1
|
||||
|
@ -1 +1 @@
|
||||
SHA512 (mupdf-1.11-source.tar.gz) = 501670f540e298a8126806ebbd9db8b29866f663b7bbf26c9ade1933e42f0c00ad410b9d93f3ddbfb3e45c38722869095de28d832fe3fb3703c55cc9a01dbf63
|
||||
SHA512 (mupdf-1.12-rc1-source.tar.gz) = 12b232224b2a73794e3a70270b3dd3d6cdb51400c8ec421f2d96436ec5f221f567634851a9892e60a3fe39d74def6f2c666e301fa6f40c4f28e6a26b5dd5deb6
|
||||
|
Loading…
Reference in new issue