Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=5dc6aac40ed346943b11ef16ad6167e2ca19a955

commit 5dc6aac40ed346943b11ef16ad6167e2ca19a955
Author: kikadf <[email protected]>
Date:   Thu Mar 13 09:45:00 2014 +0100

cups-filters-1.0.38-2-x86_64

* Fix CVE-2013-6474, CVE-2013-6475, CVE-2013-6476

diff --git a/source/xapps/cups-filters/CVE-2013-647x-current.patch 
b/source/xapps/cups-filters/CVE-2013-647x-current.patch
new file mode 100644
index 0000000..dca5241
--- /dev/null
+++ b/source/xapps/cups-filters/CVE-2013-647x-current.patch
@@ -0,0 +1,253 @@
+Description: fix multiple code execution issues
+Origin: backported from 1.0.47 release
+
+diff -Naurp cups-filters-1.0.46/filter/pdftoopvp/oprs/OPVPSplash.cxx 
cups-filters-1.0.47/filter/pdftoopvp/oprs/OPVPSplash.cxx
+--- cups-filters-1.0.46/filter/pdftoopvp/oprs/OPVPSplash.cxx   2013-12-10 
16:20:15.000000000 -0500
++++ cups-filters-1.0.47/filter/pdftoopvp/oprs/OPVPSplash.cxx   2014-03-10 
07:19:19.000000000 -0400
+@@ -1094,7 +1094,7 @@ void OPVPSplash::fillGlyph(SplashCoord x
+
+     opvpbytes = (m+3)/4;
+     opvpbytes *= 4;
+-    bp = (Guchar *)gmalloc(opvpbytes*glyph->h);
++    bp = (Guchar *)gmallocn(glyph->h,opvpbytes);
+     for (i = 0;i < glyph->h;i++) {
+       memcpy(bp+i*opvpbytes,glyph->data+i*m,m);
+     }
+@@ -1238,8 +1238,8 @@ SplashError OPVPSplash::fillImageMaskFas
+   /* align 4 */
+   opvpbytes = (opvpbytes+3)/4;
+   opvpbytes *= 4;
+-  buf = (Guchar *)gmalloc(opvpbytes*h);
+-  lineBuf = (SplashColorPtr)gmalloc(opvpbytes*8);
++  buf = (Guchar *)gmallocn(h,opvpbytes);
++  lineBuf = (SplashColorPtr)gmallocn(8,opvpbytes);
+
+   for (i = 0;i < h;i++) {
+     int k;
+@@ -1417,7 +1417,7 @@ SplashError OPVPSplash::fillImageMask(Sp
+   imat[3] = mat[0]/det;
+
+   /* read source image */
+-  pixBuf = (SplashColorPtr)gmalloc(h * w);
++  pixBuf = (SplashColorPtr)gmallocn(h , w);
+
+   p = pixBuf;
+   for (i = 0; i < h; ++i) {
+@@ -1571,8 +1571,8 @@ SplashError OPVPSplash::drawImageNotShea
+     hs = h-1;
+     he = -1;
+   }
+-  buf = (Guchar *)gmalloc(opvpbytes*h);
+-  lineBuf = (SplashColorPtr)gmalloc(lineBufSize);
++  buf = (Guchar *)gmallocn(h,opvpbytes);
++  lineBuf = (SplashColorPtr)gmallocn(lineBufSize,1);
+   switch (colorMode) {
+   case splashModeMono1:
+   case splashModeMono8:
+@@ -1734,7 +1734,7 @@ SplashError OPVPSplash::drawImageFastWit
+     return splashErrOPVP;
+     break;
+   }
+-  buf = (Guchar *)gmalloc(opvpbytes*h);
++  buf = (Guchar *)gmallocn(h,opvpbytes);
+
+   switch (colorMode) {
+   case splashModeMono1:
+@@ -1960,7 +1960,7 @@ SplashError OPVPSplash::drawImage(Splash
+   }
+
+   /* read source image */
+-  pixBuf = (SplashColorPtr)gmalloc(h * linesize);
++  pixBuf = (SplashColorPtr)gmallocn(h , linesize);
+
+   p = pixBuf;
+   for (i = 0; i < h; ++i) {
+@@ -1968,8 +1968,8 @@ SplashError OPVPSplash::drawImage(Splash
+     p += linesize;
+   }
+   /* allocate line buffer */
+-  Guchar *lineBuf = (Guchar *)gmalloc(opvpbytes);
+-  Guchar *onBuf = (Guchar *)gmalloc(width);
++  Guchar *lineBuf = (Guchar *)gmallocn(opvpbytes,1);
++  Guchar *onBuf = (Guchar *)gmallocn(width,1);
+   OPVPSplashClip *clip;
+   opvpctm.a = 1.0;
+   opvpctm.b = 0.0;
+diff -Naurp cups-filters-1.0.46/filter/pdftoopvp/oprs/OPVPWrapper.cxx 
cups-filters-1.0.47/filter/pdftoopvp/oprs/OPVPWrapper.cxx
+--- cups-filters-1.0.46/filter/pdftoopvp/oprs/OPVPWrapper.cxx  2013-12-10 
16:20:15.000000000 -0500
++++ cups-filters-1.0.47/filter/pdftoopvp/oprs/OPVPWrapper.cxx  2014-03-10 
07:19:19.000000000 -0400
+@@ -822,6 +822,12 @@ OPVPWrapper *OPVPWrapper::loadDriver(con
+     void *handle = 0;
+     OPVPWrapper *opvp = 0;
+
++    // remove directory part
++    const char *s = strrchr(driverName,'/');
++    if (s != NULL) {
++        driverName = s+1;
++    }
++
+     list = genDynamicLibName(driverName);
+
+     if (list) {
+diff -Naurp cups-filters-1.0.46/filter/pdftoopvp/OPVPOutputDev.cxx 
cups-filters-1.0.47/filter/pdftoopvp/OPVPOutputDev.cxx
+--- cups-filters-1.0.46/filter/pdftoopvp/OPVPOutputDev.cxx     2013-12-10 
16:20:15.000000000 -0500
++++ cups-filters-1.0.47/filter/pdftoopvp/OPVPOutputDev.cxx     2014-03-10 
07:19:19.000000000 -0400
+@@ -147,8 +147,8 @@ T3FontCache::T3FontCache(Ref *fontIDA, d
+   } else {
+     cacheSets = 1;
+   }
+-  cacheData = (Guchar *)gmalloc(cacheSets * cacheAssoc * glyphSize);
+-  cacheTags = (T3FontCacheTag *)gmalloc(cacheSets * cacheAssoc *
++  cacheData = (Guchar *)gmallocn3(cacheSets , cacheAssoc , glyphSize);
++  cacheTags = (T3FontCacheTag *)gmallocn3(cacheSets , cacheAssoc ,
+                                       sizeof(T3FontCacheTag));
+   for (i = 0; i < cacheSets * cacheAssoc; ++i) {
+     cacheTags[i].mru = i & (cacheAssoc - 1);
+@@ -1416,7 +1416,7 @@ void OPVPOutputDev::drawImage(GfxState *
+     switch (colorMode) {
+     case splashModeMono1:
+     case splashModeMono8:
+-      imgData.lookup = (SplashColorPtr)gmalloc(n);
++      imgData.lookup = (SplashColorPtr)gmallocn(n,1);
+       for (i = 0; i < n; ++i) {
+       pix = (Guchar)i;
+       colorMap->getGray(&pix, &gray);
+@@ -1424,7 +1424,7 @@ void OPVPOutputDev::drawImage(GfxState *
+       }
+       break;
+     case splashModeRGB8:
+-      imgData.lookup = (SplashColorPtr)gmalloc(3 * n);
++      imgData.lookup = (SplashColorPtr)gmallocn(n,3);
+       for (i = 0; i < n; ++i) {
+       pix = (Guchar)i;
+       colorMap->getRGB(&pix, &rgb);
+@@ -1434,7 +1434,7 @@ void OPVPOutputDev::drawImage(GfxState *
+       }
+       break;
+     case splashModeBGR8:
+-      imgData.lookup = (SplashColorPtr)gmalloc(3 * n);
++      imgData.lookup = (SplashColorPtr)gmallocn(n,3);
+       for (i = 0; i < n; ++i) {
+       pix = (Guchar)i;
+       colorMap->getRGB(&pix, &rgb);
+@@ -1445,7 +1445,7 @@ void OPVPOutputDev::drawImage(GfxState *
+       break;
+ #if SPLASH_CMYK
+     case splashModeCMYK8:
+-      imgData.lookup = (SplashColorPtr)gmalloc(4 * n);
++      imgData.lookup = (SplashColorPtr)gmallocn(n,4);
+       for (i = 0; i < n; ++i) {
+       pix = (Guchar)i;
+       colorMap->getCMYK(&pix, &cmyk);
+@@ -1672,7 +1672,7 @@ void OPVPOutputDev::drawMaskedImage(GfxS
+     switch (colorMode) {
+     case splashModeMono1:
+     case splashModeMono8:
+-      imgData.lookup = (SplashColorPtr)gmalloc(n);
++      imgData.lookup = (SplashColorPtr)gmallocn(n,1);
+       for (i = 0; i < n; ++i) {
+       pix = (Guchar)i;
+       colorMap->getGray(&pix, &gray);
+@@ -1680,7 +1680,7 @@ void OPVPOutputDev::drawMaskedImage(GfxS
+       }
+       break;
+     case splashModeRGB8:
+-      imgData.lookup = (SplashColorPtr)gmalloc(3 * n);
++      imgData.lookup = (SplashColorPtr)gmallocn(n,3);
+       for (i = 0; i < n; ++i) {
+       pix = (Guchar)i;
+       colorMap->getRGB(&pix, &rgb);
+@@ -1690,7 +1690,7 @@ void OPVPOutputDev::drawMaskedImage(GfxS
+       }
+       break;
+     case splashModeBGR8:
+-      imgData.lookup = (SplashColorPtr)gmalloc(3 * n);
++      imgData.lookup = (SplashColorPtr)gmallocn(n,3);
+       for (i = 0; i < n; ++i) {
+       pix = (Guchar)i;
+       colorMap->getRGB(&pix, &rgb);
+@@ -1701,7 +1701,7 @@ void OPVPOutputDev::drawMaskedImage(GfxS
+       break;
+ #if SPLASH_CMYK
+     case splashModeCMYK8:
+-      imgData.lookup = (SplashColorPtr)gmalloc(4 * n);
++      imgData.lookup = (SplashColorPtr)gmallocn(n,4);
+       for (i = 0; i < n; ++i) {
+       pix = (Guchar)i;
+       colorMap->getCMYK(&pix, &cmyk);
+@@ -1793,7 +1793,7 @@ void OPVPOutputDev::drawSoftMaskedImage(
+   imgMaskData.height = maskHeight;
+   imgMaskData.y = 0;
+   n = 1 << maskColorMap->getBits();
+-  imgMaskData.lookup = (SplashColorPtr)gmalloc(n);
++  imgMaskData.lookup = (SplashColorPtr)gmallocn(n,1);
+   for (i = 0; i < n; ++i) {
+     pix = (Guchar)i;
+     maskColorMap->getGray(&pix, &gray);
+@@ -1839,7 +1839,7 @@ void OPVPOutputDev::drawSoftMaskedImage(
+     switch (colorMode) {
+     case splashModeMono1:
+     case splashModeMono8:
+-      imgData.lookup = (SplashColorPtr)gmalloc(n);
++      imgData.lookup = (SplashColorPtr)gmallocn(n,1);
+       for (i = 0; i < n; ++i) {
+       pix = (Guchar)i;
+       colorMap->getGray(&pix, &gray);
+@@ -1847,7 +1847,7 @@ void OPVPOutputDev::drawSoftMaskedImage(
+       }
+       break;
+     case splashModeRGB8:
+-      imgData.lookup = (SplashColorPtr)gmalloc(3 * n);
++      imgData.lookup = (SplashColorPtr)gmallocn(n,3);
+       for (i = 0; i < n; ++i) {
+       pix = (Guchar)i;
+       colorMap->getRGB(&pix, &rgb);
+@@ -1857,7 +1857,7 @@ void OPVPOutputDev::drawSoftMaskedImage(
+       }
+       break;
+     case splashModeBGR8:
+-      imgData.lookup = (SplashColorPtr)gmalloc(3 * n);
++      imgData.lookup = (SplashColorPtr)gmallocn(n,3);
+       for (i = 0; i < n; ++i) {
+       pix = (Guchar)i;
+       colorMap->getRGB(&pix, &rgb);
+@@ -1868,7 +1868,7 @@ void OPVPOutputDev::drawSoftMaskedImage(
+       break;
+ #if SPLASH_CMYK
+     case splashModeCMYK8:
+-      imgData.lookup = (SplashColorPtr)gmalloc(4 * n);
++      imgData.lookup = (SplashColorPtr)gmallocn(n,4);
+       for (i = 0; i < n; ++i) {
+       pix = (Guchar)i;
+       colorMap->getCMYK(&pix, &cmyk);
+diff -Naurp cups-filters-1.0.46/filter/urftopdf.cpp 
cups-filters-1.0.47/filter/urftopdf.cpp
+--- cups-filters-1.0.46/filter/urftopdf.cpp    2013-12-10 16:20:15.000000000 
-0500
++++ cups-filters-1.0.47/filter/urftopdf.cpp    2014-03-10 07:15:01.000000000 
-0400
+@@ -26,6 +26,7 @@
+ #include <unistd.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <limits>
+
+ #include <arpa/inet.h>   // ntohl
+
+@@ -194,6 +195,9 @@ int add_pdf_page(struct pdf_info * info,
+         info->line_bytes = (width*info->pixel_bytes);
+         info->bpp = bpp;
+
++        if (info->height > (std::numeric_limits<unsigned>::max() / 
info->line_bytes)) {
++            die("Page too big");
++        }
+         info->page_data = PointerHolder<Buffer>(new 
Buffer(info->line_bytes*info->height));
+
+         QPDFObjectHandle page = QPDFObjectHandle::parse(
+@@ -283,6 +287,9 @@ int decode_raster(int fd, unsigned width
+     std::vector<uint8_t> pixel_container;
+     std::vector<uint8_t> line_container;
+
++    if (width > (std::numeric_limits<unsigned>::max() / pixel_size)) {
++        die("Line too big");
++    }
+     try {
+         pixel_container.resize(pixel_size);
+         line_container.resize(pixel_size*width);
diff --git a/source/xapps/cups-filters/FrugalBuild 
b/source/xapps/cups-filters/FrugalBuild
index 06b28a6..e7d8993 100644
--- a/source/xapps/cups-filters/FrugalBuild
+++ b/source/xapps/cups-filters/FrugalBuild
@@ -1,9 +1,11 @@
# Compiling time: 0.01 SBU
# Maintainer: bouleetbil <[email protected]>

+options+=('asneeded')
+
pkgname=cups-filters
pkgver=1.0.38
-pkgrel=1
+pkgrel=2
pkgdesc="Backends, filters and other software from CUPS distribution."
url="http://www.linuxfoundation.org/collaborate/workgroups/openprinting/group";
depends=('cups' 'ijs' 'qpdf' 'lcms2')
@@ -17,5 +19,11 @@ sha1sums=('421704eb851c9fb0d7bd5ba6c0390af92a67ff6c')
Fconfopts+=" --with-gs-path=/usr/bin/gs \
--with-pdftops-path=/usr/bin/gs"

+# FSA fix ***
+source=(${source[@]} CVE-2013-647x-current.patch)
+sha1sums=(${sha1sums[@]} '303ed232056f20acd197932426a4d1b9163b90ef')
+# ***********
+
+
# optimization OK
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to