diff options
author | Naveen Saini <naveen.kumar.saini@intel.com> | 2019-07-31 15:18:51 +0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-09-30 16:44:41 +0100 |
commit | bd1ccd4c28c99ae65a00b03ae98c4cde67f0043c (patch) | |
tree | 6149f50d9bc965f9afb81356d20cec63a76e8f22 | |
parent | 787ec750a21df3d712de2a92d7bd9349244e51f5 (diff) | |
download | poky-bd1ccd4c28c99ae65a00b03ae98c4cde67f0043c.tar.gz |
ghostscript: fix CVE-2019-3839
(From OE-Core rev: 4f608782e43accb23aa144339ed9169b1718c4f0)
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/recipes-extended/ghostscript/ghostscript/CVE-2019-3839-0008.patch | 440 | ||||
-rw-r--r-- | meta/recipes-extended/ghostscript/ghostscript_9.26.bb | 1 |
2 files changed, 441 insertions, 0 deletions
diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2019-3839-0008.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2019-3839-0008.patch new file mode 100644 index 0000000000..4be1c84f92 --- /dev/null +++ b/meta/recipes-extended/ghostscript/ghostscript/CVE-2019-3839-0008.patch | |||
@@ -0,0 +1,440 @@ | |||
1 | From c253752ef731f49922e0a97490d1ef09ca697c91 Mon Sep 17 00:00:00 2001 | ||
2 | From: Ray Johnston <ray.johnston@artifex.com> | ||
3 | Date: Thu, 31 Jan 2019 11:31:30 -0800 | ||
4 | Subject: [PATCH] Hide pdfdict and GS_PDF_ProcSet (internal stuff for the PDF | ||
5 | interp). | ||
6 | |||
7 | We now keep GS_PDF_ProcSet in pdfdict, and immediately bind pdfdict | ||
8 | where needed so we can undef it after the last PDF interp file has | ||
9 | run (pdf_sec.ps). | ||
10 | |||
11 | CVE: CVE-2019-3839 | ||
12 | Upstream-Status: Backport [http://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=4ec9ca74bed49f2a82acb4bf430eae0d8b3b75c9] | ||
13 | Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> | ||
14 | --- | ||
15 | Resource/Init/pdf_base.ps | 11 ++++---- | ||
16 | Resource/Init/pdf_draw.ps | 59 +++++++++++++++++++-------------------- | ||
17 | Resource/Init/pdf_font.ps | 9 +++--- | ||
18 | Resource/Init/pdf_main.ps | 25 +++++++++-------- | ||
19 | Resource/Init/pdf_ops.ps | 11 ++++---- | ||
20 | Resource/Init/pdf_sec.ps | 4 ++- | ||
21 | 6 files changed, 60 insertions(+), 59 deletions(-) | ||
22 | |||
23 | diff --git a/Resource/Init/pdf_base.ps b/Resource/Init/pdf_base.ps | ||
24 | index e35e0e373..13dd51f46 100644 | ||
25 | --- a/Resource/Init/pdf_base.ps | ||
26 | +++ b/Resource/Init/pdf_base.ps | ||
27 | @@ -23,7 +23,6 @@ | ||
28 | |||
29 | /.setlanguagelevel where { pop 2 .setlanguagelevel } if | ||
30 | .currentglobal //true .setglobal | ||
31 | -/pdfdict where { pop } { /pdfdict 100 dict def } ifelse | ||
32 | pdfdict begin | ||
33 | |||
34 | % Define the name interpretation dictionary for reading values. | ||
35 | @@ -133,11 +132,11 @@ currentdict /num-chars-dict .undef | ||
36 | |||
37 | /.pdfexectoken { % <count> <opdict> <exectoken> .pdfexectoken ? | ||
38 | PDFDEBUG { | ||
39 | - pdfdict /PDFSTEPcount known not { pdfdict /PDFSTEPcount 1 .forceput } executeonly if | ||
40 | + //pdfdict /PDFSTEPcount known not { //pdfdict /PDFSTEPcount 1 .forceput } executeonly if | ||
41 | PDFSTEP { | ||
42 | - pdfdict /PDFtokencount 2 copy .knownget { 1 add } { 1 } ifelse .forceput | ||
43 | + //pdfdict /PDFtokencount 2 copy .knownget { 1 add } { 1 } ifelse .forceput | ||
44 | PDFSTEPcount 1 gt { | ||
45 | - pdfdict /PDFSTEPcount PDFSTEPcount 1 sub .forceput | ||
46 | + //pdfdict /PDFSTEPcount PDFSTEPcount 1 sub .forceput | ||
47 | } executeonly | ||
48 | { | ||
49 | dup ==only | ||
50 | @@ -145,10 +144,10 @@ currentdict /num-chars-dict .undef | ||
51 | ( ? ) print flush 1 //false .outputpage | ||
52 | (%stdin) (r) file 255 string readline { | ||
53 | token { | ||
54 | - exch pop pdfdict /PDFSTEPcount 3 -1 roll .forceput | ||
55 | + exch pop //pdfdict /PDFSTEPcount 3 -1 roll .forceput | ||
56 | } executeonly | ||
57 | { | ||
58 | - pdfdict /PDFSTEPcount 1 .forceput | ||
59 | + //pdfdict /PDFSTEPcount 1 .forceput | ||
60 | } executeonly ifelse % token | ||
61 | } { | ||
62 | pop /PDFSTEP //false def % EOF on stdin | ||
63 | diff --git a/Resource/Init/pdf_draw.ps b/Resource/Init/pdf_draw.ps | ||
64 | index 36c41a9a3..2e39c87d2 100644 | ||
65 | --- a/Resource/Init/pdf_draw.ps | ||
66 | +++ b/Resource/Init/pdf_draw.ps | ||
67 | @@ -18,8 +18,7 @@ | ||
68 | |||
69 | /.setlanguagelevel where { pop 2 .setlanguagelevel } if | ||
70 | .currentglobal //true .setglobal | ||
71 | -/pdfdict where { pop } { /pdfdict 100 dict def } ifelse | ||
72 | -GS_PDF_ProcSet begin | ||
73 | +/GS_PDF_ProcSet load begin | ||
74 | pdfdict begin | ||
75 | |||
76 | % For simplicity, we use a single interpretation dictionary for all | ||
77 | @@ -113,7 +112,7 @@ pdfdict begin | ||
78 | |||
79 | /resolvefunction { % <fndict> resolvefunction <function> | ||
80 | .resolvefn | ||
81 | - PDFDEBUG { pdfdict /PDFSTEPcount .knownget { 1 le } { //true } ifelse { (%Function: ) print dup === flush } if } if | ||
82 | + PDFDEBUG { //pdfdict /PDFSTEPcount .knownget { 1 le } { //true } ifelse { (%Function: ) print dup === flush } if } if | ||
83 | } bind executeonly def | ||
84 | |||
85 | /resolvefnproc { % <fndict> resolvefnproc <proc> | ||
86 | @@ -1086,7 +1085,7 @@ currentdict end readonly def | ||
87 | %% finished running the PaintProc. | ||
88 | |||
89 | /.actual_pdfpaintproc { % <patdict> <resdict> .pdfpaintproc - | ||
90 | - PDFDEBUG { pdfdict /PDFSTEPcount .knownget { 1 le } { //true } ifelse { (%Begin PaintProc) print dup === flush } if } if | ||
91 | + PDFDEBUG { //pdfdict /PDFSTEPcount .knownget { 1 le } { //true } ifelse { (%Begin PaintProc) print dup === flush } if } if | ||
92 | PDFfile fileposition 3 1 roll | ||
93 | q | ||
94 | 1 index /PaintType oget 1 eq { | ||
95 | @@ -1121,21 +1120,21 @@ currentdict end readonly def | ||
96 | Q | ||
97 | }{ | ||
98 | (\n **** Error: File has unbalanced q/Q operators \(too many Q's\)\n Output may be incorrect.\n) | ||
99 | - pdfdict /.Qqwarning_issued .knownget | ||
100 | + //pdfdict /.Qqwarning_issued .knownget | ||
101 | { | ||
102 | { | ||
103 | pop | ||
104 | } | ||
105 | { | ||
106 | - currentglobal pdfdict gcheck .setglobal | ||
107 | - pdfdict /.Qqwarning_issued //true .forceput | ||
108 | + currentglobal //pdfdict gcheck .setglobal | ||
109 | + //pdfdict /.Qqwarning_issued //true .forceput | ||
110 | .setglobal | ||
111 | pdfformaterror | ||
112 | } executeonly ifelse | ||
113 | } | ||
114 | { | ||
115 | - currentglobal pdfdict gcheck .setglobal | ||
116 | - pdfdict /.Qqwarning_issued //true .forceput | ||
117 | + currentglobal //pdfdict gcheck .setglobal | ||
118 | + //pdfdict /.Qqwarning_issued //true .forceput | ||
119 | .setglobal | ||
120 | pdfformaterror | ||
121 | } executeonly ifelse | ||
122 | @@ -1144,21 +1143,21 @@ currentdict end readonly def | ||
123 | } loop | ||
124 | { | ||
125 | (\n **** Error: File has unbalanced q/Q operators \(too many q's\)\n Output may be incorrect.\n) | ||
126 | - pdfdict /.Qqwarning_issued .knownget | ||
127 | + //pdfdict /.Qqwarning_issued .knownget | ||
128 | { | ||
129 | { | ||
130 | pop | ||
131 | } | ||
132 | { | ||
133 | - currentglobal pdfdict gcheck .setglobal | ||
134 | - pdfdict /.Qqwarning_issued //true .forceput | ||
135 | + currentglobal //pdfdict gcheck .setglobal | ||
136 | + //pdfdict /.Qqwarning_issued //true .forceput | ||
137 | .setglobal | ||
138 | pdfformaterror | ||
139 | } executeonly ifelse | ||
140 | } | ||
141 | { | ||
142 | - currentglobal pdfdict gcheck .setglobal | ||
143 | - pdfdict /.Qqwarning_issued //true .forceput | ||
144 | + currentglobal //pdfdict gcheck .setglobal | ||
145 | + //pdfdict /.Qqwarning_issued //true .forceput | ||
146 | .setglobal | ||
147 | pdfformaterror | ||
148 | } executeonly ifelse | ||
149 | @@ -1169,7 +1168,7 @@ currentdict end readonly def | ||
150 | /pdfemptycount exch def | ||
151 | |||
152 | Q | ||
153 | - PDFDEBUG { pdfdict /PDFSTEPcount .knownget { 1 le } { //true } ifelse { (%End PaintProc) print dup === flush } if } if | ||
154 | + PDFDEBUG { //pdfdict /PDFSTEPcount .knownget { 1 le } { //true } ifelse { (%End PaintProc) print dup === flush } if } if | ||
155 | PDFfile exch setfileposition | ||
156 | } bind executeonly odef | ||
157 | |||
158 | @@ -1240,7 +1239,7 @@ currentdict end readonly def | ||
159 | ] cvx put | ||
160 | dup /BBox 2 copy knownoget { normrect FixPatternBBox put } { pop pop } ifelse | ||
161 | dup /.pattern_uses_transparency 1 index patternusestransparency put | ||
162 | - PDFDEBUG { pdfdict /PDFSTEPcount .knownget { 1 le } { //true } ifelse { (%Pattern: ) print dup === flush } if } if | ||
163 | + PDFDEBUG { //pdfdict /PDFSTEPcount .knownget { 1 le } { //true } ifelse { (%Pattern: ) print dup === flush } if } if | ||
164 | } bind executeonly def | ||
165 | |||
166 | /ignore_color_op ( **** Error: Ignoring a color operation in a cached context.\n Output may be incorrect.\n) readonly def | ||
167 | @@ -2361,16 +2360,16 @@ currentdict /last-ditch-bpc-csp undef | ||
168 | } bind executeonly def | ||
169 | |||
170 | /IncrementAppearanceNumber { | ||
171 | - pdfdict /AppearanceNumber .knownget { | ||
172 | - 1 add pdfdict /AppearanceNumber 3 -1 roll .forceput | ||
173 | + //pdfdict /AppearanceNumber .knownget { | ||
174 | + 1 add //pdfdict /AppearanceNumber 3 -1 roll .forceput | ||
175 | } executeonly | ||
176 | { | ||
177 | - pdfdict /AppearanceNumber 0 .forceput | ||
178 | + //pdfdict /AppearanceNumber 0 .forceput | ||
179 | } executeonly ifelse | ||
180 | }bind executeonly odef | ||
181 | |||
182 | /MakeAppearanceName { | ||
183 | - pdfdict /AppearanceNumber get | ||
184 | + //pdfdict /AppearanceNumber get | ||
185 | 10 string cvs | ||
186 | dup length 10 add string dup 0 (\{FormName) putinterval | ||
187 | dup 3 -1 roll | ||
188 | @@ -2391,17 +2390,17 @@ currentdict /last-ditch-bpc-csp undef | ||
189 | gsave initclip | ||
190 | MakeNewAppearanceName | ||
191 | .pdfFormName | ||
192 | - pdfdict /.PreservePDFForm known {pdfdict /.PreservePDFForm get} {//false}ifelse exch | ||
193 | - pdfdict /.PreservePDFForm true .forceput | ||
194 | + //pdfdict /.PreservePDFForm known {//pdfdict /.PreservePDFForm get} {//false}ifelse exch | ||
195 | + //pdfdict /.PreservePDFForm true .forceput | ||
196 | DoForm | ||
197 | - pdfdict /.PreservePDFForm 3 -1 roll .forceput | ||
198 | + //pdfdict /.PreservePDFForm 3 -1 roll .forceput | ||
199 | grestore | ||
200 | } bind executeonly odef | ||
201 | |||
202 | /DoForm { | ||
203 | %% save the current value, if its true we will set it to false later, in order | ||
204 | %% to prevent us preserving Forms which are used *from* an annotation /Appearance. | ||
205 | - pdfdict /.PreservePDFForm known {pdfdict /.PreservePDFForm get} {//false}ifelse exch | ||
206 | + //pdfdict /.PreservePDFForm known {//pdfdict /.PreservePDFForm get} {//false}ifelse exch | ||
207 | |||
208 | %% We may alter the Default* colour spaces, if the Resources | ||
209 | %% ColorSpace entry contains one of them. But we don't want that | ||
210 | @@ -2516,13 +2515,13 @@ currentdict /last-ditch-bpc-csp undef | ||
211 | pdfemptycount countdictstack 3 -1 roll | ||
212 | /pdfemptycount count 4 sub store | ||
213 | |||
214 | - pdfdict /.PreservePDFForm known {pdfdict /.PreservePDFForm get}{//false} ifelse | ||
215 | + //pdfdict /.PreservePDFForm known {//pdfdict /.PreservePDFForm get}{//false} ifelse | ||
216 | { | ||
217 | %% We must *not* preserve any subsidiary forms (curently at least) as PDF | ||
218 | %% form preservation doesn't really work. This is used just for Annotation | ||
219 | %% Appearances currently, and if they should happen to use a form, we do not | ||
220 | %% want to preserve it. | ||
221 | - pdfdict /.PreservePDFForm false .forceput | ||
222 | + //pdfdict /.PreservePDFForm false .forceput | ||
223 | /q cvx /execform cvx 5 -2 roll | ||
224 | } executeonly | ||
225 | { | ||
226 | @@ -2555,7 +2554,7 @@ currentdict /last-ditch-bpc-csp undef | ||
227 | saved_DCMYK /DefaultCMYK exch /ColorSpace defineresource pop | ||
228 | end | ||
229 | } if | ||
230 | - pdfdict /.PreservePDFForm 3 -1 roll .forceput | ||
231 | + //pdfdict /.PreservePDFForm 3 -1 roll .forceput | ||
232 | } bind executeonly odef | ||
233 | |||
234 | /_dops_save 1 array def | ||
235 | @@ -2714,13 +2713,13 @@ drawopdict begin | ||
236 | % Start by getting the object number for a Form XObject | ||
237 | dup Page /XObject obj_get dup 0 eq not { | ||
238 | % Now get the recording dictionary and see if that object number has been seen | ||
239 | - pdfdict /Recursive_XObject_D get 1 index known { | ||
240 | + //pdfdict /Recursive_XObject_D get 1 index known { | ||
241 | ( **** Error: Recursive XObject detected, ignoring ") print 1 index 256 string cvs print (", object number ) print 256 string cvs print (\n) print | ||
242 | ( Output may be incorrect.\n) pdfformaterror | ||
243 | //false | ||
244 | }{ | ||
245 | % We haven't seen it yet, so record it. | ||
246 | - pdfdict /Recursive_XObject_D get 1 index null put | ||
247 | + //pdfdict /Recursive_XObject_D get 1 index null put | ||
248 | 3 1 roll | ||
249 | //true | ||
250 | }ifelse | ||
251 | @@ -2758,7 +2757,7 @@ drawopdict begin | ||
252 | ( Output may be incorrect.\n) pdfformaterror | ||
253 | } ifelse | ||
254 | PDFfile exch setfileposition | ||
255 | - pdfdict /Recursive_XObject_D get exch undef | ||
256 | + //pdfdict /Recursive_XObject_D get exch undef | ||
257 | }{ | ||
258 | % Otherwise ignore it and tidy up the stacks | ||
259 | pop pop | ||
260 | diff --git a/Resource/Init/pdf_font.ps b/Resource/Init/pdf_font.ps | ||
261 | index 7e35c02ac..6b09be61f 100644 | ||
262 | --- a/Resource/Init/pdf_font.ps | ||
263 | +++ b/Resource/Init/pdf_font.ps | ||
264 | @@ -37,8 +37,7 @@ | ||
265 | |||
266 | /.setlanguagelevel where { pop 2 .setlanguagelevel } if | ||
267 | .currentglobal //true .setglobal | ||
268 | -/pdfdict where { pop } { /pdfdict 100 dict def } ifelse | ||
269 | -GS_PDF_ProcSet begin | ||
270 | +/GS_PDF_ProcSet load begin % from userdict at this point | ||
271 | pdfdict begin | ||
272 | |||
273 | % We cache the PostScript font in an additional element of the | ||
274 | @@ -1227,11 +1226,11 @@ currentdict /eexec_pdf_param_dict .undef | ||
275 | .pdfruncontext | ||
276 | countdictstack BuildCharDictDepth sub | ||
277 | { | ||
278 | - pdfdict /.Qqwarning_issued .knownget {not}{//true} ifelse | ||
279 | + //pdfdict /.Qqwarning_issued .knownget {not}{//true} ifelse | ||
280 | { | ||
281 | (\n **** Warning: Type 3 glyph has unbalanced q/Q operators \(too many q's\)\n Output may be incorrect.\n) | ||
282 | pdfformatwarning | ||
283 | - pdfdict /.Qqwarning_issued //true .forceput | ||
284 | + //pdfdict /.Qqwarning_issued //true .forceput | ||
285 | } executeonly if | ||
286 | Q | ||
287 | } repeat | ||
288 | @@ -2361,7 +2360,7 @@ currentdict /bndef undef | ||
289 | dup //null eq | ||
290 | {pop} | ||
291 | { | ||
292 | - pdfdict /InputPDFFileName .knownget {.CRCHashFilenameAndObject} if | ||
293 | + //pdfdict /InputPDFFileName .knownget {.CRCHashFilenameAndObject} if | ||
294 | exch dup /.OrigUniqueIDXUID .knownget not | ||
295 | { | ||
296 | dup /XUID .knownget not | ||
297 | diff --git a/Resource/Init/pdf_main.ps b/Resource/Init/pdf_main.ps | ||
298 | index 0a8929a2a..c1de1b0ef 100644 | ||
299 | --- a/Resource/Init/pdf_main.ps | ||
300 | +++ b/Resource/Init/pdf_main.ps | ||
301 | @@ -18,8 +18,9 @@ | ||
302 | |||
303 | /.setlanguagelevel where { pop 2 .setlanguagelevel } if | ||
304 | .currentglobal //true .setglobal | ||
305 | -/pdfdict where { pop } { /pdfdict 100 dict def } ifelse | ||
306 | pdfdict begin | ||
307 | +/GS_PDF_ProcSet dup load def % keep in pdfdict to hide it | ||
308 | +userdict /GS_PDF_ProcSet undef | ||
309 | |||
310 | % Patch in an obsolete variable used by some third-party software. | ||
311 | /#? //false def | ||
312 | @@ -304,8 +305,8 @@ currentdict /runpdfstring .undef | ||
313 | /Page //null def | ||
314 | /DSCPageCount 0 def | ||
315 | /PDFSave //null def | ||
316 | - GS_PDF_ProcSet begin | ||
317 | - pdfdict begin | ||
318 | + //pdfdict /GS_PDF_ProcSet get begin | ||
319 | + //pdfdict begin | ||
320 | pdfopen begin | ||
321 | /CumulativePageCount currentpagedevice /PageCount get def | ||
322 | } bind executeonly def | ||
323 | @@ -624,7 +625,7 @@ currentdict /runpdfstring .undef | ||
324 | %% copied to a temporary file) and store it in pdfdict. We will use this for | ||
325 | %% hashing fonts to detect if fonts with the same name are from different files. | ||
326 | %% | ||
327 | - dup currentglobal exch true setglobal .getfilename exch setglobal /InputPDFFileName exch pdfdict 3 1 roll .forceput | ||
328 | + dup currentglobal exch true setglobal .getfilename exch setglobal /InputPDFFileName exch //pdfdict 3 1 roll .forceput | ||
329 | |||
330 | //runpdfbegin exec | ||
331 | //pdf_collection_files exec | ||
332 | @@ -1390,7 +1391,7 @@ currentdict /xref-char-dict undef | ||
333 | } bind executeonly def | ||
334 | |||
335 | /pdfopenfile { % <file> pdfopenfile <dict> | ||
336 | - pdfdict readonly pop % can't do it any earlier than this | ||
337 | + //pdfdict readonly pop % can't do it any earlier than this | ||
338 | 32 dict begin | ||
339 | /LocalResources 0 dict def | ||
340 | /DefaultQstate //null def % establish binding | ||
341 | @@ -2717,21 +2718,21 @@ currentdict /PDF2PS_matrix_key undef | ||
342 | StreamRunAborted not { | ||
343 | (\n **** Error: File has unbalanced q/Q operators \(too many q's\)\n Output may be incorrect.\n) | ||
344 | |||
345 | - pdfdict /.Qqwarning_issued .knownget | ||
346 | + //pdfdict /.Qqwarning_issued .knownget | ||
347 | { | ||
348 | { | ||
349 | pop | ||
350 | } | ||
351 | { | ||
352 | - currentglobal pdfdict gcheck .setglobal | ||
353 | - pdfdict /.Qqwarning_issued //true .forceput | ||
354 | + currentglobal //pdfdict gcheck .setglobal | ||
355 | + //pdfdict /.Qqwarning_issued //true .forceput | ||
356 | .setglobal | ||
357 | pdfformaterror | ||
358 | } executeonly ifelse | ||
359 | } | ||
360 | { | ||
361 | - currentglobal pdfdict gcheck .setglobal | ||
362 | - pdfdict /.Qqwarning_issued //true .forceput | ||
363 | + currentglobal //pdfdict gcheck .setglobal | ||
364 | + //pdfdict /.Qqwarning_issued //true .forceput | ||
365 | .setglobal | ||
366 | pdfformaterror | ||
367 | } executeonly ifelse | ||
368 | @@ -2743,8 +2744,8 @@ currentdict /PDF2PS_matrix_key undef | ||
369 | Repaired % pass Repaired state around the restore | ||
370 | RepairedAnError | ||
371 | PDFSave restore | ||
372 | - currentglobal pdfdict gcheck .setglobal | ||
373 | - pdfdict /.Qqwarning_issued //false .forceput | ||
374 | + currentglobal //pdfdict gcheck .setglobal | ||
375 | + //pdfdict /.Qqwarning_issued //false .forceput | ||
376 | .setglobal | ||
377 | /RepairedAnError exch def | ||
378 | /Repaired exch def | ||
379 | diff --git a/Resource/Init/pdf_ops.ps b/Resource/Init/pdf_ops.ps | ||
380 | index 34e2fbd58..46de547f7 100644 | ||
381 | --- a/Resource/Init/pdf_ops.ps | ||
382 | +++ b/Resource/Init/pdf_ops.ps | ||
383 | @@ -24,6 +24,7 @@ | ||
384 | systemdict /pdfmark known not | ||
385 | { userdict /pdfmark { cleartomark } bind executeonly put } if | ||
386 | |||
387 | +systemdict /pdfdict where { pop } { /pdfdict 100 dict put } ifelse | ||
388 | userdict /GS_PDF_ProcSet 256 dict dup begin | ||
389 | |||
390 | % ---------------- Abbreviations ---------------- % | ||
391 | @@ -174,21 +175,21 @@ currentdict /gput_always_allow .undef | ||
392 | { | ||
393 | (\n **** Error: File has unbalanced q/Q operators \(too many Q's\)\n Output may be incorrect.\n) | ||
394 | |||
395 | - pdfdict /.Qqwarning_issued .knownget | ||
396 | + //pdfdict /.Qqwarning_issued .knownget | ||
397 | { | ||
398 | { | ||
399 | pop | ||
400 | } | ||
401 | { | ||
402 | - currentglobal pdfdict gcheck .setglobal | ||
403 | - pdfdict /.Qqwarning_issued //true .forceput | ||
404 | + currentglobal //pdfdict gcheck .setglobal | ||
405 | + //pdfdict /.Qqwarning_issued //true .forceput | ||
406 | .setglobal | ||
407 | pdfformaterror | ||
408 | } executeonly ifelse | ||
409 | } | ||
410 | { | ||
411 | - currentglobal pdfdict gcheck .setglobal | ||
412 | - pdfdict /.Qqwarning_issued //true .forceput | ||
413 | + currentglobal //pdfdict gcheck .setglobal | ||
414 | + //pdfdict /.Qqwarning_issued //true .forceput | ||
415 | .setglobal | ||
416 | pdfformaterror | ||
417 | } executeonly ifelse | ||
418 | diff --git a/Resource/Init/pdf_sec.ps b/Resource/Init/pdf_sec.ps | ||
419 | index d8cc94c86..163dd6877 100644 | ||
420 | --- a/Resource/Init/pdf_sec.ps | ||
421 | +++ b/Resource/Init/pdf_sec.ps | ||
422 | @@ -39,7 +39,6 @@ | ||
423 | |||
424 | /.setlanguagelevel where { pop 2 .setlanguagelevel } if | ||
425 | .currentglobal //true .setglobal | ||
426 | -/pdfdict where { pop } { /pdfdict 100 dict def } ifelse | ||
427 | pdfdict begin | ||
428 | |||
429 | % Older ghostscript versions do not have .pdftoken, so we use 'token' instead. | ||
430 | @@ -748,4 +747,7 @@ currentdict /PDFScanRules_null undef | ||
431 | } bind executeonly def | ||
432 | |||
433 | end % pdfdict | ||
434 | + | ||
435 | +systemdict /pdfdict .forceundef % hide pdfdict | ||
436 | + | ||
437 | .setglobal | ||
438 | -- | ||
439 | 2.17.1 | ||
440 | |||
diff --git a/meta/recipes-extended/ghostscript/ghostscript_9.26.bb b/meta/recipes-extended/ghostscript/ghostscript_9.26.bb index 2630084a07..03e4569dbc 100644 --- a/meta/recipes-extended/ghostscript/ghostscript_9.26.bb +++ b/meta/recipes-extended/ghostscript/ghostscript_9.26.bb | |||
@@ -45,6 +45,7 @@ SRC_URI = "${SRC_URI_BASE} \ | |||
45 | file://CVE-2019-3835-0004.patch \ | 45 | file://CVE-2019-3835-0004.patch \ |
46 | file://CVE-2019-3838-0001.patch \ | 46 | file://CVE-2019-3838-0001.patch \ |
47 | file://CVE-2019-3838-0002.patch \ | 47 | file://CVE-2019-3838-0002.patch \ |
48 | file://CVE-2019-3839-0008.patch \ | ||
48 | " | 49 | " |
49 | 50 | ||
50 | SRC_URI_class-native = "${SRC_URI_BASE} \ | 51 | SRC_URI_class-native = "${SRC_URI_BASE} \ |