gnu: mupdf: Update to 1.13.0.
* gnu/packages/pdf.scm (mupdf): Update to 1.13.0. [source]: Remove patches. * gnu/packages/patches/mupdf-build-with-latest-openjpeg.patch, gnu/packages/patches/mupdf-CVE-2017-17858.patch, gnu/packages/patches/mupdf-CVE-2018-6544.patch, gnu/packages/patches/mupdf-CVE-2018-1000051.patch: Remove files. * gnu/local.mk (dist_patch_DATA): Remove them.master
parent
563ab27bd4
commit
2b79c6833d
|
@ -932,10 +932,6 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/mozjs38-tracelogger.patch \
|
||||
%D%/packages/patches/mozjs38-version-detection.patch \
|
||||
%D%/packages/patches/mumps-build-parallelism.patch \
|
||||
%D%/packages/patches/mupdf-build-with-latest-openjpeg.patch \
|
||||
%D%/packages/patches/mupdf-CVE-2017-17858.patch \
|
||||
%D%/packages/patches/mupdf-CVE-2018-6544.patch \
|
||||
%D%/packages/patches/mupdf-CVE-2018-1000051.patch \
|
||||
%D%/packages/patches/mupen64plus-ui-console-notice.patch \
|
||||
%D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch \
|
||||
%D%/packages/patches/mutt-store-references.patch \
|
||||
|
|
|
@ -1,111 +0,0 @@
|
|||
Fix CVE-2017-17858:
|
||||
|
||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-17858
|
||||
https://bugs.ghostscript.com/show_bug.cgi?id=698819
|
||||
https://github.com/mzet-/Security-Advisories/blob/master/mzet-adv-2017-01.md
|
||||
|
||||
Patch copied from upstream source repository:
|
||||
|
||||
https://git.ghostscript.com/?p=mupdf.git;a=commit;h=55c3f68d638ac1263a386e0aaa004bb6e8bde731
|
||||
|
||||
From 55c3f68d638ac1263a386e0aaa004bb6e8bde731 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Rasmussen <sebras@gmail.com>
|
||||
Date: Mon, 11 Dec 2017 14:09:15 +0100
|
||||
Subject: [PATCH] Bugs 698804/698810/698811: Keep PDF object numbers below
|
||||
limit.
|
||||
|
||||
This ensures that:
|
||||
* xref tables with objects pointers do not grow out of bounds.
|
||||
* other readers, e.g. Adobe Acrobat can parse PDFs written by mupdf.
|
||||
---
|
||||
include/mupdf/pdf/object.h | 3 +++
|
||||
source/pdf/pdf-repair.c | 5 +----
|
||||
source/pdf/pdf-xref.c | 21 ++++++++++++---------
|
||||
3 files changed, 16 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/include/mupdf/pdf/object.h b/include/mupdf/pdf/object.h
|
||||
index 21ed8595..4177112b 100644
|
||||
--- a/include/mupdf/pdf/object.h
|
||||
+++ b/include/mupdf/pdf/object.h
|
||||
@@ -3,6 +3,9 @@
|
||||
|
||||
typedef struct pdf_document_s pdf_document;
|
||||
|
||||
+/* Defined in PDF 1.7 according to Acrobat limit. */
|
||||
+#define PDF_MAX_OBJECT_NUMBER 8388607
|
||||
+
|
||||
/*
|
||||
* Dynamic objects.
|
||||
* The same type of objects as found in PDF and PostScript.
|
||||
diff --git a/source/pdf/pdf-repair.c b/source/pdf/pdf-repair.c
|
||||
index ca149bd3..0c29758e 100644
|
||||
--- a/source/pdf/pdf-repair.c
|
||||
+++ b/source/pdf/pdf-repair.c
|
||||
@@ -6,9 +6,6 @@
|
||||
|
||||
/* Scan file for objects and reconstruct xref table */
|
||||
|
||||
-/* Define in PDF 1.7 to be 8388607, but mupdf is more lenient. */
|
||||
-#define MAX_OBJECT_NUMBER (10 << 20)
|
||||
-
|
||||
struct entry
|
||||
{
|
||||
int num;
|
||||
@@ -436,7 +433,7 @@ pdf_repair_xref(fz_context *ctx, pdf_document *doc)
|
||||
break;
|
||||
}
|
||||
|
||||
- if (num <= 0 || num > MAX_OBJECT_NUMBER)
|
||||
+ if (num <= 0 || num > PDF_MAX_OBJECT_NUMBER)
|
||||
{
|
||||
fz_warn(ctx, "ignoring object with invalid object number (%d %d R)", num, gen);
|
||||
goto have_next_token;
|
||||
diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c
|
||||
index 00586dbd..6284e70b 100644
|
||||
--- a/source/pdf/pdf-xref.c
|
||||
+++ b/source/pdf/pdf-xref.c
|
||||
@@ -868,11 +868,12 @@ pdf_read_old_xref(fz_context *ctx, pdf_document *doc, pdf_lexbuf *buf)
|
||||
fz_seek(ctx, file, -(2 + (int)strlen(s)), SEEK_CUR);
|
||||
}
|
||||
|
||||
- if (ofs < 0)
|
||||
- fz_throw(ctx, FZ_ERROR_GENERIC, "out of range object num in xref: %d", (int)ofs);
|
||||
- if (ofs > INT64_MAX - len)
|
||||
- fz_throw(ctx, FZ_ERROR_GENERIC, "xref section object numbers too big");
|
||||
-
|
||||
+ if (ofs < 0 || ofs > PDF_MAX_OBJECT_NUMBER
|
||||
+ || len < 0 || len > PDF_MAX_OBJECT_NUMBER
|
||||
+ || ofs + len - 1 > PDF_MAX_OBJECT_NUMBER)
|
||||
+ {
|
||||
+ fz_throw(ctx, FZ_ERROR_GENERIC, "xref subsection object numbers are out of range");
|
||||
+ }
|
||||
/* broken pdfs where size in trailer undershoots entries in xref sections */
|
||||
if (ofs + len > xref_len)
|
||||
{
|
||||
@@ -933,10 +934,8 @@ pdf_read_new_xref_section(fz_context *ctx, pdf_document *doc, fz_stream *stm, in
|
||||
pdf_xref_entry *table;
|
||||
int i, n;
|
||||
|
||||
- if (i0 < 0 || i1 < 0 || i0 > INT_MAX - i1)
|
||||
- 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");
|
||||
+ if (i0 < 0 || i0 > PDF_MAX_OBJECT_NUMBER || i1 < 0 || i1 > PDF_MAX_OBJECT_NUMBER || i0 + i1 - 1 > PDF_MAX_OBJECT_NUMBER)
|
||||
+ fz_throw(ctx, FZ_ERROR_GENERIC, "xref subsection object numbers are out of range");
|
||||
|
||||
table = pdf_xref_find_subsection(ctx, doc, i0, i1);
|
||||
for (i = i0; i < i0 + i1; i++)
|
||||
@@ -2086,6 +2085,10 @@ pdf_create_object(fz_context *ctx, pdf_document *doc)
|
||||
/* TODO: reuse free object slots by properly linking free object chains in the ofs field */
|
||||
pdf_xref_entry *entry;
|
||||
int num = pdf_xref_len(ctx, doc);
|
||||
+
|
||||
+ if (num > PDF_MAX_OBJECT_NUMBER)
|
||||
+ fz_throw(ctx, FZ_ERROR_GENERIC, "too many objects stored in pdf");
|
||||
+
|
||||
entry = pdf_get_incremental_xref_entry(ctx, doc, num);
|
||||
entry->type = 'f';
|
||||
entry->ofs = -1;
|
||||
--
|
||||
2.16.1
|
||||
|
|
@ -1,88 +0,0 @@
|
|||
Fix CVE-2018-1000051:
|
||||
|
||||
https://bugs.ghostscript.com/show_bug.cgi?id=698873
|
||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000051
|
||||
|
||||
Patch copied from upstream source repository:
|
||||
|
||||
https://git.ghostscript.com/?p=mupdf.git;a=commit;h=321ba1de287016b0036bf4a56ce774ad11763384
|
||||
|
||||
From 321ba1de287016b0036bf4a56ce774ad11763384 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Rasmussen <sebras@gmail.com>
|
||||
Date: Tue, 19 Dec 2017 23:47:47 +0100
|
||||
Subject: [PATCH] Bug 698825: Do not drop borrowed colorspaces.
|
||||
|
||||
Previously the borrowed colorspace was dropped when updating annotation
|
||||
appearances, leading to use after free warnings from valgrind/ASAN.
|
||||
---
|
||||
source/pdf/pdf-appearance.c | 8 ++------
|
||||
1 file changed, 2 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/source/pdf/pdf-appearance.c b/source/pdf/pdf-appearance.c
|
||||
index 70f684f4..d7a1dddd 100644
|
||||
--- a/source/pdf/pdf-appearance.c
|
||||
+++ b/source/pdf/pdf-appearance.c
|
||||
@@ -2170,7 +2170,6 @@ void pdf_update_free_text_annot_appearance(fz_context *ctx, pdf_document *doc, p
|
||||
fz_device *dev = NULL;
|
||||
font_info font_rec;
|
||||
fz_text *text = NULL;
|
||||
- fz_colorspace *cs = NULL;
|
||||
fz_matrix page_ctm;
|
||||
|
||||
pdf_page_transform(ctx, annot->page, NULL, &page_ctm);
|
||||
@@ -2184,11 +2183,11 @@ void pdf_update_free_text_annot_appearance(fz_context *ctx, pdf_document *doc, p
|
||||
fz_var(dlist);
|
||||
fz_var(dev);
|
||||
fz_var(text);
|
||||
- fz_var(cs);
|
||||
fz_try(ctx)
|
||||
{
|
||||
char *contents = pdf_to_str_buf(ctx, pdf_dict_get(ctx, obj, PDF_NAME_Contents));
|
||||
char *da = pdf_to_str_buf(ctx, pdf_dict_get(ctx, obj, PDF_NAME_DA));
|
||||
+ fz_colorspace *cs;
|
||||
fz_point pos;
|
||||
fz_rect rect;
|
||||
|
||||
@@ -2223,7 +2222,6 @@ void pdf_update_free_text_annot_appearance(fz_context *ctx, pdf_document *doc, p
|
||||
fz_drop_display_list(ctx, dlist);
|
||||
font_info_fin(ctx, &font_rec);
|
||||
fz_drop_text(ctx, text);
|
||||
- fz_drop_colorspace(ctx, cs);
|
||||
}
|
||||
fz_catch(ctx)
|
||||
{
|
||||
@@ -2359,7 +2357,6 @@ void pdf_set_signature_appearance(fz_context *ctx, pdf_document *doc, pdf_annot
|
||||
fz_device *dev = NULL;
|
||||
font_info font_rec;
|
||||
fz_text *text = NULL;
|
||||
- fz_colorspace *cs = NULL;
|
||||
fz_path *path = NULL;
|
||||
fz_buffer *fzbuf = NULL;
|
||||
fz_matrix page_ctm;
|
||||
@@ -2375,7 +2372,6 @@ void pdf_set_signature_appearance(fz_context *ctx, pdf_document *doc, pdf_annot
|
||||
fz_var(dlist);
|
||||
fz_var(dev);
|
||||
fz_var(text);
|
||||
- fz_var(cs);
|
||||
fz_var(fzbuf);
|
||||
fz_try(ctx)
|
||||
{
|
||||
@@ -2384,6 +2380,7 @@ void pdf_set_signature_appearance(fz_context *ctx, pdf_document *doc, pdf_annot
|
||||
fz_rect logo_bounds;
|
||||
fz_matrix logo_tm;
|
||||
fz_rect rect;
|
||||
+ fz_colorspace *cs = fz_device_rgb(ctx); /* Borrowed reference */
|
||||
|
||||
pdf_to_rect(ctx, pdf_dict_get(ctx, annot->obj, PDF_NAME_Rect), &annot_rect);
|
||||
rect = annot_rect;
|
||||
@@ -2396,7 +2393,6 @@ void pdf_set_signature_appearance(fz_context *ctx, pdf_document *doc, pdf_annot
|
||||
fz_bound_path(ctx, path, NULL, &fz_identity, &logo_bounds);
|
||||
center_rect_within_rect(&logo_bounds, &rect, &logo_tm);
|
||||
fz_concat(&logo_tm, &logo_tm, &page_ctm);
|
||||
- cs = fz_device_rgb(ctx); /* Borrowed reference */
|
||||
fz_fill_path(ctx, dev, path, 0, &logo_tm, cs, logo_color, 1.0f, NULL);
|
||||
|
||||
get_font_info(ctx, doc, dr, da, &font_rec);
|
||||
--
|
||||
2.16.3
|
||||
|
|
@ -1,109 +0,0 @@
|
|||
Fix CVE-2018-6544:
|
||||
|
||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6544
|
||||
https://bugs.ghostscript.com/show_bug.cgi?id=698830
|
||||
https://bugs.ghostscript.com/show_bug.cgi?id=698965
|
||||
|
||||
Patches copied from upstream source repository:
|
||||
|
||||
https://git.ghostscript.com/?p=mupdf.git;h=26527eef77b3e51c2258c8e40845bfbc015e405d
|
||||
https://git.ghostscript.com/?p=mupdf.git;h=b03def134988da8c800adac1a38a41a1f09a1d89
|
||||
|
||||
From b03def134988da8c800adac1a38a41a1f09a1d89 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Rasmussen <sebras@gmail.com>
|
||||
Date: Thu, 1 Feb 2018 16:36:14 +0100
|
||||
Subject: [PATCH] Bug 698830: Avoid recursion when loading object streams
|
||||
objects.
|
||||
|
||||
If there were indirect references in the object stream dictionary and
|
||||
one of those indirect references referred to an object inside the object
|
||||
stream itself, mupdf would previously enter recursion only bounded by the
|
||||
exception stack. After this commit the object stream is checked if it is
|
||||
marked immediately after being loaded. If it is marked then we terminate
|
||||
the recursion at this point, if it is not marked then mark it and
|
||||
attempt to load the desired object within. We also take care to unmark
|
||||
the stream object when done or upon exception.
|
||||
---
|
||||
source/pdf/pdf-xref.c | 14 ++++++++++++++
|
||||
1 file changed, 14 insertions(+)
|
||||
|
||||
diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c
|
||||
index 723b543c..ed09094c 100644
|
||||
--- a/source/pdf/pdf-xref.c
|
||||
+++ b/source/pdf/pdf-xref.c
|
||||
@@ -1576,6 +1576,19 @@ pdf_load_obj_stm(fz_context *ctx, pdf_document *doc, int num, pdf_lexbuf *buf, i
|
||||
{
|
||||
objstm = pdf_load_object(ctx, doc, num);
|
||||
|
||||
+ if (pdf_obj_marked(ctx, objstm))
|
||||
+ fz_throw(ctx, FZ_ERROR_GENERIC, "recursive object stream lookup");
|
||||
+ }
|
||||
+ fz_catch(ctx)
|
||||
+ {
|
||||
+ pdf_drop_obj(ctx, objstm);
|
||||
+ fz_rethrow(ctx);
|
||||
+ }
|
||||
+
|
||||
+ fz_try(ctx)
|
||||
+ {
|
||||
+ pdf_mark_obj(ctx, objstm);
|
||||
+
|
||||
count = pdf_to_int(ctx, pdf_dict_get(ctx, objstm, PDF_NAME_N));
|
||||
first = pdf_to_int(ctx, pdf_dict_get(ctx, objstm, PDF_NAME_First));
|
||||
|
||||
@@ -1655,6 +1668,7 @@ pdf_load_obj_stm(fz_context *ctx, pdf_document *doc, int num, pdf_lexbuf *buf, i
|
||||
fz_drop_stream(ctx, stm);
|
||||
fz_free(ctx, ofsbuf);
|
||||
fz_free(ctx, numbuf);
|
||||
+ pdf_unmark_obj(ctx, objstm);
|
||||
pdf_drop_obj(ctx, objstm);
|
||||
}
|
||||
fz_catch(ctx)
|
||||
--
|
||||
2.16.3
|
||||
|
||||
From 26527eef77b3e51c2258c8e40845bfbc015e405d Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Rasmussen <sebras@gmail.com>
|
||||
Date: Mon, 29 Jan 2018 02:00:48 +0100
|
||||
Subject: [PATCH] Bug 698830: Don't drop unkept stream if running out of error
|
||||
stack.
|
||||
|
||||
Under normal conditions where fz_keep_stream() is called inside
|
||||
fz_try() we may call fz_drop_stream() in fz_catch() upon exceptions.
|
||||
The issue comes when fz_keep_stream() has not yet been called but is
|
||||
dropped in fz_catch(). This happens in the PDF from the bug when
|
||||
fz_try() runs out of exception stack, and next the code in fz_catch()
|
||||
runs, dropping the caller's reference to the filter chain stream!
|
||||
|
||||
The simplest way of fixing this it to always keep the filter chain
|
||||
stream before fz_try() is called. That way fz_catch() may drop the
|
||||
stream whether an exception has occurred or if the fz_try() ran out of
|
||||
exception stack.
|
||||
---
|
||||
source/pdf/pdf-stream.c | 5 ++---
|
||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/source/pdf/pdf-stream.c b/source/pdf/pdf-stream.c
|
||||
index c89da5c4..c6ba7ad3 100644
|
||||
--- a/source/pdf/pdf-stream.c
|
||||
+++ b/source/pdf/pdf-stream.c
|
||||
@@ -303,14 +303,13 @@ pdf_open_raw_filter(fz_context *ctx, fz_stream *chain, pdf_document *doc, pdf_ob
|
||||
*orig_gen = 0;
|
||||
}
|
||||
|
||||
- fz_var(chain);
|
||||
+ chain = fz_keep_stream(ctx, chain);
|
||||
|
||||
fz_try(ctx)
|
||||
{
|
||||
len = pdf_to_int(ctx, pdf_dict_get(ctx, stmobj, PDF_NAME_Length));
|
||||
|
||||
- /* don't close chain when we close this filter */
|
||||
- chain2 = fz_keep_stream(ctx, chain);
|
||||
+ chain2 = chain;
|
||||
chain = NULL;
|
||||
chain = fz_open_null(ctx, chain2, len, offset);
|
||||
|
||||
--
|
||||
2.16.3
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
Make it possible to build MuPDF with OpenJPEG 2.3, which is the latest
|
||||
release series and contains many important bug fixes.
|
||||
|
||||
Patch adapted from Debian:
|
||||
|
||||
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=745246
|
||||
|
||||
And related to this upstream commit:
|
||||
|
||||
http://git.ghostscript.com/?p=mupdf.git;a=commit;h=f88bfe2e62dbadb96d4f52d7aa025f0a516078da
|
||||
|
||||
diff --git a/source/fitz/load-jpx.c b/source/fitz/load-jpx.c
|
||||
index 65699ba..ea84778 100644
|
||||
--- a/source/fitz/load-jpx.c
|
||||
+++ b/source/fitz/load-jpx.c
|
||||
@@ -445,11 +445,6 @@ fz_load_jpx_info(fz_context *ctx, const unsigned char *data, size_t size, int *w
|
||||
|
||||
#else /* HAVE_LURATECH */
|
||||
|
||||
-#define OPJ_STATIC
|
||||
-#define OPJ_HAVE_INTTYPES_H
|
||||
-#if !defined(_MSC_VER) || _MSC_VER >= 1600
|
||||
-#define OPJ_HAVE_STDINT_H
|
||||
-#endif
|
||||
#define USE_JPIP
|
||||
|
||||
#include <openjpeg.h>
|
|
@ -5,7 +5,7 @@
|
|||
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
|
||||
;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
|
||||
;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
|
||||
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
|
||||
|
@ -597,21 +597,17 @@ extracting content or merging files.")
|
|||
(define-public mupdf
|
||||
(package
|
||||
(name "mupdf")
|
||||
(version "1.12.0")
|
||||
(version "1.13.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://mupdf.com/downloads/archive/"
|
||||
name "-" version "-source.tar.xz"))
|
||||
(patches (search-patches "mupdf-build-with-latest-openjpeg.patch"
|
||||
"mupdf-CVE-2017-17858.patch"
|
||||
"mupdf-CVE-2018-6544.patch"
|
||||
"mupdf-CVE-2018-1000051.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"0b9j0gqbc3jhmx87r6idcsh8lnb30840c3hyx6dk2gdjqqh3hysp"))
|
||||
"0129k92bav692l6lyw10ryldx7h2f9khjpgnp3f3n4fdsph9hrkl"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet '(delete-file-recursively "thirdparty"))))
|
||||
(snippet '(begin (delete-file-recursively "thirdparty") #t))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("curl" ,curl)
|
||||
|
|
Reference in New Issue