[arch-commits] Commit in texlive-bin/trunk (PKGBUILD texlive-poppler-0.59.patch)

Rémy Oudompheng remy at archlinux.org
Wed Sep 27 06:11:26 UTC 2017


    Date: Wednesday, September 27, 2017 @ 06:11:25
  Author: remy
Revision: 306258

upgpkg: texlive-bin 2017.44590-5

Fixes heap corruption resulting from double-free (FS#55720)

Modified:
  texlive-bin/trunk/PKGBUILD
  texlive-bin/trunk/texlive-poppler-0.59.patch

----------------------------+
 PKGBUILD                   |    4 +--
 texlive-poppler-0.59.patch |   47 ++++++++++++++++++++-----------------------
 2 files changed, 24 insertions(+), 27 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2017-09-26 19:28:42 UTC (rev 306257)
+++ PKGBUILD	2017-09-27 06:11:25 UTC (rev 306258)
@@ -4,7 +4,7 @@
 
 pkgname=('texlive-bin' 'libsynctex')
 pkgver=2017.44590
-pkgrel=4
+pkgrel=5
 license=('GPL')
 arch=('i686' 'x86_64')
 makedepends=('cairo' 'pixman' 'graphite' 't1lib' 'gd' 'poppler'
@@ -17,7 +17,7 @@
         "texlive-poppler-0.59.patch")
 sha256sums=('4645b4d55fc500ba9be7156a6a330afb44fbf7fda40dfd73fe9cb16d207f2038'
             'ee97f3e07e235dee4ad6d0c3e85c2260914c965e94d5ffbf481fa506df5f01ec'
-            '82703c2d8698e15ee9a8bed6eee1a7140dc48ea2f65a497ddf81f187df6e6832')
+            '76bc0528da33b1f980f85464c95d00736d9997ba7f8d11475c88f03e099e91b0')
 
 prepare() {
     cd "$srcdir/source"

Modified: texlive-poppler-0.59.patch
===================================================================
--- texlive-poppler-0.59.patch	2017-09-26 19:28:42 UTC (rev 306257)
+++ texlive-poppler-0.59.patch	2017-09-27 06:11:25 UTC (rev 306258)
@@ -862,16 +862,18 @@
                  pdf_puts(" ");
              copyObject(&obj1);
          }
-@@ -612,7 +600,7 @@
+@@ -612,9 +600,8 @@
          copyDict(obj);
          pdf_puts(">>");
      } else if (obj->isStream()) {
 -        initDictFromDict(obj1, obj->streamGetDict());
-+        obj1 = Object(obj->streamGetDict());
          pdf_puts("<<\n");
-         copyDict(&obj1);
+-        copyDict(&obj1);
++        copyDict(obj->getStream()->getDictObject());
          pdf_puts(">>\n");
-@@ -638,9 +626,8 @@
+         pdf_puts("stream\n");
+         copyStream(obj->getStream()->getUndecodedStream());
+@@ -638,9 +625,8 @@
      InObj *r;
      for (r = inObjList; r != 0; r = r->next) {
          if (!r->written) {
@@ -882,7 +884,7 @@
              if (r->type == objFont) {
                  assert(!obj1.isStream());
                  pdfbeginobj(r->num, 2);         // \pdfobjcompresslevel = 2 is for this
-@@ -656,7 +643,6 @@
+@@ -656,7 +642,6 @@
                  pdf_puts("\n");
                  pdfendobj();
              }
@@ -890,7 +892,7 @@
          }
      }
  }
-@@ -839,8 +825,8 @@
+@@ -839,8 +824,8 @@
      Page *page;
      Ref *pageRef;
      Dict *pageDict;
@@ -901,7 +903,7 @@
      bool writeSepGroup = false;
      Object info;
      char *key;
-@@ -867,8 +853,8 @@
+@@ -867,8 +852,8 @@
      encodingList = 0;
      page = pdf_doc->doc->getCatalog()->getPage(epdf_selected_page);
      pageRef = pdf_doc->doc->getCatalog()->getPageRef(epdf_selected_page);
@@ -912,7 +914,7 @@
      rotate = page->getRotate();
      PDFRectangle *pagebox;
      // write the Page header
-@@ -886,7 +872,7 @@
+@@ -886,7 +871,7 @@
          pdf_printf("/%s.PageNumber %i\n", pdfkeyprefix, (int) epdf_selected_page);
      }
      if ((suppress_ptex_info & MASK_SUPPRESS_PTEX_INFODICT) == 0) {
@@ -921,7 +923,7 @@
          if (info.isRef()) {
              // the info dict must be indirect (PDF Ref p. 61)
              pdf_printf("/%s.InfoDict ", pdfkeyprefix);
-@@ -942,14 +928,14 @@
+@@ -942,14 +927,14 @@
      pdf_puts(stripzeros(s));
  
      // Metadata validity check (as a stream it must be indirect)
@@ -940,7 +942,7 @@
              pdf_newline();
              pdf_printf("/%s ", pageDictKeys[i]);
              copyObject(&dictObj); // preserves indirection
-@@ -957,8 +943,8 @@
+@@ -957,8 +942,8 @@
      } 
  
      // handle page group
@@ -951,7 +953,7 @@
          if (pdfpagegroupval == 0) { 
              // another pdf with page group was included earlier on the
              // same page; copy the Group entry as is.  See manual for
-@@ -972,11 +958,11 @@
+@@ -972,11 +957,11 @@
              copyObject(&dictObj);
          } else {
              // write Group dict as a separate object, since the Page dict also refers to it
@@ -966,29 +968,24 @@
              pdf_printf("/Group %ld 0 R\n", (long)pdfpagegroupval);
          }
      }
-@@ -989,15 +975,15 @@
+@@ -989,14 +974,14 @@
          pdftex_warn
              ("PDF inclusion: /Resources missing. 'This practice is not recommended' (PDF Ref)");
      } else {
 -        initDictFromDict(obj1, page->getResourceDict());
--        if (!obj1->isDict())
-+        obj1 = Object(page->getResourceDict());
-+        if (!obj1.isDict())
++        Object *obj1 = page->getResourceDictObject();
+         if (!obj1->isDict())
              pdftex_fail("PDF inclusion: invalid resources dict type <%s>",
--                        obj1->getTypeName());
-+                        obj1.getTypeName());
+                         obj1->getTypeName());
          pdf_newline();
          pdf_puts("/Resources <<\n");
--        for (i = 0, l = obj1->dictGetLength(); i < l; ++i) {
+         for (i = 0, l = obj1->dictGetLength(); i < l; ++i) {
 -            obj1->dictGetVal(i, &obj2);
--            key = obj1->dictGetKey(i);
-+        for (i = 0, l = obj1.dictGetLength(); i < l; ++i) {
-+            obj2 = obj1.dictGetVal(i);
-+            key = obj1.dictGetKey(i);
++            obj2 = obj1->dictGetVal(i);
+             key = obj1->dictGetKey(i);
              if (strcmp("Font", key) == 0)
                  copyFontResources(&obj2);
-             else if (strcmp("ProcSet", key) == 0)
-@@ -1009,8 +995,8 @@
+@@ -1009,8 +994,8 @@
      }
  
      // write the page contents
@@ -999,7 +996,7 @@
  
          // Variant A: get stream and recompress under control
          // of \pdfcompresslevel
-@@ -1021,36 +1007,35 @@
+@@ -1021,36 +1006,35 @@
  
          // Variant B: copy stream without recompressing
          //



More information about the arch-commits mailing list