aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches/ghostscript-no-header-id.patch
blob: 45fc95fd6e086f91a02c0b9833d82ca7d90bf246 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
This patch makes the "/ID" field optional.

If the environment variable GS_GENERATE_UUIDS is set to "0" or "no", it will
not write out the "/ID" field (if that's permissible).

Upstream does not want to do this.

See: https://bugs.ghostscript.com/show_bug.cgi?id=698208
diff -ur orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c
--- orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c	2017-07-09 23:30:28.960479189 +0200
+++ gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c	2017-07-09 23:34:34.306524488 +0200
@@ -1810,8 +1810,11 @@
      * +1 for the linearisation dict and +1 for the primary hint stream.
      */
     linear_params->FirsttrailerOffset = gp_ftell(linear_params->Lin_File.file);
-    gs_sprintf(LDict, "\ntrailer\n<</Size %ld/Info %d 0 R/Root %d 0 R/ID[%s%s]/Prev %d>>\nstartxref\r\n0\n%%%%EOF\n        \n",
-        linear_params->LastResource + 3, pdev->ResourceUsage[linear_params->Info_id].NewObjectNumber, pdev->ResourceUsage[linear_params->Catalog_id].NewObjectNumber, fileID, fileID, 0);
+    gs_sprintf(LDict, "\ntrailer\n<</Size %ld/Info %d 0 R/Root %d 0 R",
+        linear_params->LastResource + 3, pdev->ResourceUsage[linear_params->Info_id].NewObjectNumber, pdev->ResourceUsage[linear_params->Catalog_id].NewObjectNumber);
+    if (pdev->OwnerPassword.size > 0 || !(!getenv("GS_GENERATE_UUIDS") || (strcasecmp(getenv("GS_GENERATE_UUIDS"), "0") != 0 && strcasecmp(getenv("GS_GENERATE_UUIDS"), "no") != 0))) /* ID is mandatory when encrypting */
+        gs_sprintf(LDict, "/ID[%s%s]", fileID, fileID);
+    gs_sprintf(LDict, "/Prev %d>>\nstartxref\r\n0\n%%%%EOF\n        \n", 0);
     gp_fwrite(LDict, strlen(LDict), 1, linear_params->Lin_File.file);
 
     /* Write document catalog (Part 4) */
@@ -2346,8 +2349,11 @@
     if (code != 0)
         return_error(gs_error_ioerror);
 
-    gs_sprintf(LDict, "\ntrailer\n<</Size %ld/Info %d 0 R/Root %d 0 R/ID[%s%s]/Prev %"PRId64">>\nstartxref\r\n0\n%%%%EOF\n",
-        linear_params->LastResource + 3, pdev->ResourceUsage[linear_params->Info_id].NewObjectNumber, pdev->ResourceUsage[linear_params->Catalog_id].NewObjectNumber, fileID, fileID, mainxref);
+    gs_sprintf(LDict, "\ntrailer\n<</Size %ld/Info %d 0 R/Root %d 0 R",
+        linear_params->LastResource + 3, pdev->ResourceUsage[linear_params->Info_id].NewObjectNumber, pdev->ResourceUsage[linear_params->Catalog_id].NewObjectNumber);
+    if (pdev->OwnerPassword.size > 0 || !(!getenv("GS_GENERATE_UUIDS") || (strcasecmp(getenv("GS_GENERATE_UUIDS"), "0") != 0 || strcasecmp(getenv("GS_GENERATE_UUIDS"), "no") != 0))) /* ID is mandatory when encrypting */
+        gs_sprintf(LDict, "/ID[%s%s]", fileID, fileID);
+    gs_sprintf(LDict, "/Prev %"PRId64">>\nstartxref\r\n0\n%%%%EOF\n", mainxref);
     gp_fwrite(LDict, strlen(LDict), 1, linear_params->sfile);
 
     code = gp_fseek(linear_params->sfile, pdev->ResourceUsage[HintStreamObj].LinearisedOffset, SEEK_SET);
@@ -3012,10 +3018,12 @@
             stream_puts(s, "trailer\n");
             pprintld3(s, "<< /Size %ld /Root %ld 0 R /Info %ld 0 R\n",
                   pdev->next_id, Catalog_id, Info_id);
-            stream_puts(s, "/ID [");
-            psdf_write_string(pdev->strm, pdev->fileID, sizeof(pdev->fileID), 0);
-            psdf_write_string(pdev->strm, pdev->fileID, sizeof(pdev->fileID), 0);
-            stream_puts(s, "]\n");
+            if (pdev->OwnerPassword.size > 0 || !(!getenv("GS_GENERATE_UUIDS") || (strcasecmp(getenv("GS_GENERATE_UUIDS"), "0") != 0 || strcasecmp(getenv("GS_GENERATE_UUIDS"), "no") != 0))) { /* ID is mandatory when encrypting */
+                stream_puts(s, "/ID [");
+                psdf_write_string(pdev->strm, pdev->fileID, sizeof(pdev->fileID), 0);
+                psdf_write_string(pdev->strm, pdev->fileID, sizeof(pdev->fileID), 0);
+                stream_puts(s, "]\n");
+            }
             if (pdev->OwnerPassword.size > 0) {
                 pprintld1(s, "/Encrypt %ld 0 R ", Encrypt_id);
             }
t.scm?id=e82c98abe93c749296c831691c7c67c736f0807f'>gnu: aria2: Fix CVE-2019-3500....* gnu/packages/patches/aria2-CVE-2019-3500.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/bittorrent.scm (aria2)[source]: Use it. Leo Famulari 2018-11-29gnu: mktorrent: Fetch sources from git....* gnu/packages/bittorrent.scm (mktorrent)[source]: Fetch from git. Ricardo Wurmus 2018-11-29gnu: transmission-remote-cli: Fetch sources from git....* gnu/packages/bittorrent.scm (transmission-remote-cli)[source]: Fetch from git. Ricardo Wurmus 2018-11-24gnu: libtorrent-rasterbar: Update to 1.1.11....* gnu/packages/bittorrent.scm (libtorrent-rasterbar): Update to 1.1.11. Marius Bakke 2018-11-24gnu: Add deluge....* gnu/packages/bittorrent.scm (deluge): New variable. Co-authored-by: Mike Rosset <mike.rosset@gmail.com> Signed-off-by: Marius Bakke <mbakke@fastmail.com> Nam Nguyen 2018-11-24gnu: libtorrent-rasterbar: Compile Python bindings in C++11 mode....* gnu/packages/bittorrent.scm (libtorrent-rasterbar)[arguments]: Add phase to substitute setup.py. Co-authored-by: Marius Bakke <mbakke@fastmail.com> Nam Nguyen 2018-09-20gnu: qbittorrent: Update to 4.1.3....* gnu/packages/bittorrent.scm (qbittorrent): Update to 4.1.3. [inputs]: Use python-wrapper instead of python. Signed-off-by: Leo Famulari <leo@famulari.name> fis trivial 2018-08-15gnu: tremc: Update URLs....* gnu/packages/bittorrent.scm (tremc)[source, home-page]: Update URLs. Leo Famulari 2018-08-15gnu: tremc: Update to 0.9.1....* gnu/packages/bittorrent.scm (tremc): Update to 0.9.1. [source]: Use release tag. Tobias Geerinckx-Rice 2018-08-15gnu: tremc: Fix shebang....* gnu/packages/bittorrent.scm (tremc)[inputs]: Add python. Tobias Geerinckx-Rice 2018-07-16gnu: libtorrent-rasterbar: Update to 1.1.8....* gnu/packages/bittorrent.scm (libtorrent-rasterbar): Update to 1.1.8. Leo Famulari 2018-05-21gnu: aria2: Update to 1.34.0....* gnu/packages/bittorrent.scm (aria2): Update to 1.34.0. Efraim Flashner 2018-05-02gnu: transmission: Update to 2.94....* gnu/packages/bittorrent.scm (transmission): Update to 2.94. Marius Bakke