freebsd-ports/print/ghostscript7-base/files/patch-src-zarith.c
Hiroki Sato 27470e1676 - Split ghostscript into X11-independent and -dependent parts:
* print/ghostscript{7,8,9,9-agpl}-base

   Installs Ghostscript binary, libgs, and related files.
   These ports do not depend on X11 libraries (i.e. x11* devices
   are not available).  USES=ghostscript will set dependency on
   one of them depending on GHOSTSCRIPT_DEFAULT.

   The default device is set to "display" or "bbox".

 * print/ghostscript{7,8,9,9-agpl}-x11

   Installs a shared library which provides X11 support to
   the installed Ghostscript binaries.  x11* devices will be
   enabled when the library is available.

   This depends on *-base (RUN_DEPENDS).  USES=ghostscript:x11
   will set dependency on one of them.

- Fix integer overflow reported as CVE-2015-3228.

- Update Uses/ghostscript.mk:

 * Add x11 keyword.  nox11 keyword is now obsolete.

 * Use packagename in *_DEPENDS line to prevent relationship between
   -base and -x11 packages from being broken.

- Fix x11/nox11 keyword and bump PORTREVISION in ports using
  USES=ghostscript to update dependency of pre-compiled packages.
2015-08-22 17:48:35 +00:00

48 lines
1.6 KiB
C

--- src/zarith.c.orig 2013-04-30 11:07:41.000000000 +0900
+++ src/zarith.c 2013-04-30 11:08:43.000000000 +0900
@@ -32,9 +32,9 @@
*/
/* Define max and min values for what will fit in value.intval. */
-#define MIN_INTVAL min_long
-#define MAX_INTVAL max_long
-#define MAX_HALF_INTVAL ((1L << (size_of(long) * 4 - 1)) - 1)
+#define MIN_INTVAL 0x80000000
+#define MAX_INTVAL 0x7fffffff
+#define MAX_HALF_INTVAL 0x7fff
/* <num1> <num2> add <sum> */
/* We make this into a separate procedure because */
@@ -64,7 +64,7 @@
op[-1].value.realval += (double)op->value.intval;
break;
case t_integer: {
- long int2 = op->value.intval;
+ int int2 = op->value.intval;
if (((op[-1].value.intval += int2) ^ int2) < 0 &&
((op[-1].value.intval - int2) ^ int2) >= 0
@@ -158,10 +158,10 @@
op[-1].value.realval *= (double)op->value.intval;
break;
case t_integer: {
- long int1 = op[-1].value.intval;
- long int2 = op->value.intval;
- long abs1 = (int1 >= 0 ? int1 : -int1);
- long abs2 = (int2 >= 0 ? int2 : -int2);
+ int int1 = op[-1].value.intval;
+ int int2 = op->value.intval;
+ uint abs1 = (uint)(int1 >= 0 ? int1 : -int1);
+ uint abs2 = (uint)(int2 >= 0 ? int2 : -int2);
float fprod;
if ((abs1 > MAX_HALF_INTVAL || abs2 > MAX_HALF_INTVAL) &&
@@ -212,7 +212,7 @@
op[-1].value.realval -= (double)op->value.intval;
break;
case t_integer: {
- long int1 = op[-1].value.intval;
+ int int1 = op[-1].value.intval;
if ((int1 ^ (op[-1].value.intval = int1 - op->value.intval)) < 0 &&
(int1 ^ op->value.intval) < 0